Список пользователей в Linux

Список пользователей в Linux

How to List Users in Linux

19 Января 2020 | Терминал

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

Список пользователей в Linux

Вы когда-нибудь хотели перечислить всех пользователей в вашей системе Linux или подсчитать количество пользователей в системе? Существуют команды для создания пользователя, удаления пользователя, просмотра списка зарегистрированных пользователей, но что это за команда для вывода списка всех пользователей в 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
33


   Как видно из приведенного выше вывода, моя система Linux имеет 33 учетных записи.


Системные и обычные пользователи 

Нет реальной технической разницы между системой и обычными (обычными) пользователями. Обычно системные пользователи создаются при установке ОС и новых пакетов. В некоторых случаях вы можете создать системного пользователя, который будет использоваться каким-либо приложением.

Обычные пользователи - это пользователи, созданные пользователем root или другим пользователем с привилегиями sudo. Обычно у обычного пользователя есть настоящая оболочка для входа и домашний каталог.

У каждого пользователя есть числовой идентификатор пользователя, называемый UID. Если не указано при создании нового пользователя с useraddкомандой, то UID будет автоматически выбрано из /etc/login.defs файла в зависимости от UID_MINи UID_MINзначений.

Для проверки UID_MINи UID_MINзначения на вашей системе, можно использовать следующую команду:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN          1000
UID_MAX         60000


   Из приведенного выше вывода видно, что все обычные пользователи должны иметь UID от 1000 до 60000. Зная минимальное и максимальное значение, мы можем запросить список всех обычных пользователей в нашей системе.

Команда ниже перечислит всех обычных пользователей в нашей системе Linux:

getent passwd {1000..60000}



vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin


   Ваша система UID_MINи UID_MIN значения могут отличаться, поэтому более общая версия команды выше:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}


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

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1


Вывод 

Из этого руководства вы узнали, как составлять список и фильтровать пользователей в вашей системе Linux и каковы основные различия между системными и обычными пользователями Linux.

Те же команды применяются для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...