В этом руководстве вы узнаете, как составить и получить список пользователей в системах Linux.

Получить список пользователей, через /etc/passwdфайл

Информация о локальном пользователе хранится в /etc/passwd файле. Каждая строка в этом файле представляет информацию для входа в систему для одного пользователя. Чтобы открыть файл, вы можете использовать cat или less:

less /etc/passwd

Каждая строка в файле имеет семь полей, разделенных двоеточиями, которые содержат следующую информацию:

  • Имя пользователя.
  • Зашифрованный пароль ( xозначает, что пароль хранится в /etc/shadow файле).
  • Идентификационный номер пользователя (UID).
  • Идентификационный номер группы пользователя (GID).
  • Полное имя пользователя (GECOS).
  • Домашний каталог пользователя.
  • Оболочка входа (по умолчанию /bin/bash).

Если вы хотите отобразить только имя пользователя, вы можете использовать команду awk или cut для печати только первого поля, содержащего имя пользователя:

awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne

Получить список пользователей командой getent

Команда getentотображает записи из баз данных, настроенных в /etc/nsswitch.confфайле, включая passwdбазу данных, которую можно использовать для запроса списка всех пользователей.

Чтобы получить список всех пользователей Linux, введите следующую команду:

getent passwd

Как видите, вывод такой же, как и при отображении содержимого /etc/passwdфайла. Если вы используете LDAP для аутентификации пользователей, getentбудут отображаться все пользователи Linux как из /etc/passwdфайла, так и из базы данных LDAP.

Вы также можете использовать awkили cutдля печати только первого поля, содержащего имя пользователя:

getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1

Проверить, существует ли пользователь в системе Linux

Теперь, когда мы знаем, как получить список всех пользователей, чтобы проверить, существует ли пользователь в нашей Linux-машине, мы можем просто отфильтровать список пользователей, передав список grepкоманде.

Например, чтобы узнать, существует ли пользователь с именем jackв нашей системе Linux, мы можем использовать следующую команду:

getent passwd | grep jack

Если пользователь существует, приведенная выше команда напечатает информацию для входа пользователя. Нет вывода, что означает, что пользователь не существует.

Мы также можем проверить, существует ли пользователь, не используя grepкоманду, как показано ниже:

getent passwd jack

Как и раньше, если пользователь существует, команда отобразит информацию для входа пользователя.

Если вы хотите узнать, сколько учетных записей пользователей у вас есть в вашей системе, передайте getent passwdвывод в wcкоманду:

getent passwd | wc -l