Проверка существования пользователя с помощью команды getent passwd
На этом этапе мы узнаем о команде getent
, которая представляет собой более надежный способ получения записей из баз данных Name Service Switch (NSS), включая базу данных паролей. Команда getent
особенно полезна, так как она может запрашивать не только локальные файлы, такие как /etc/passwd
, но и сетевые источники, например, LDAP или NIS.
Базовый синтаксис использования команды getent
для запроса базы данных паролей выглядит следующим образом:
getent passwd [username]
Если пользователь существует в любом из настроенных источников NSS, команда getent
выведет соответствующую строку из базы данных паролей, аналогично тому, что вы видели при использовании команды cat /etc/passwd
. Если пользователь не существует, команда getent
не выведет ничего и завершится с ненулевым статусом выхода.
Давайте используем команду getent
для проверки существования пользователя labex
. Введите следующую команду в терминале и нажмите Enter:
getent passwd labex
Вы должны увидеть строку для пользователя labex
:
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
Теперь давайте снова используем команду getent
для проверки существования пользователя nonexistentuser
. Введите следующую команду и нажмите Enter:
getent passwd nonexistentuser
Эта команда не должна вывести ничего, как и в случае, когда мы использовали команду grep
для файла /etc/passwd
. Однако использование команды getent
обычно предпочтительнее прямого разбора файла /etc/passwd
, так как она учитывает настройки NSS системы и может находить пользователей из различных источников.
Для того чтобы увидеть разницу в статусах выхода, вы можете проверить значение переменной $?
после выполнения команды. Переменная $?
содержит статус выхода последней выполненной команды. Значение 0
обычно означает успешное выполнение, в то время как ненулевое значение указывает на ошибку.
Запустите команду getent
для пользователя labex
еще раз, а затем проверьте статус выхода:
getent passwd labex
echo $?
Вы должны увидеть информацию о пользователе, за которой следует 0
.
Теперь запустите команду getent
для пользователя nonexistentuser
и проверьте статус выхода:
getent passwd nonexistentuser
echo $?
Вы должны увидеть отсутствие вывода от команды getent
, за которым следует ненулевое значение (чаще всего 1
или 2
).
Использование команды getent
и проверка ее статуса выхода - это надежный способ программно определить, существует ли пользователь в системе Linux, независимо от того, определен ли пользователь локально или через сетевой сервис.
Теперь вы узнали три разных метода проверки существования пользователя в Linux!
Нажмите Продолжить, чтобы завершить этот практический урок.