Список пользователей в Linux
Список пользователей в Linux
How to List Users in 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
базу данных, которую мы можем использовать для запроса списка всех пользователей.
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.
Комментарии
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.