
Вы когда-нибудь хотели получить список всех пользователей в вашей системе 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 .
Например, чтобы узнать, существует ли в нашей системе Linux пользователь с именем jack мы можем использовать следующую команду:
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_MAX .
Чтобы проверить значения UID_MIN и UID_MAX в вашей системе, вы можете использовать следующую команду:
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.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Связанные руководства
- Как создавать пользователей в Linux (команда useradd)
- Как добавить пользователя в группу в Linux
- Как добавлять и удалять пользователей в Debian 12
- Как добавлять и удалять пользователей в Ubuntu 20.04
- Как удалить группу в Linux (команда groupdel)
- Как добавлять и удалять пользователей в CentOS 8
- Как создавать группы в Linux (команда groupadd)