Как вывести список пользователей в 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 .

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

getent passwd | grep jack

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

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

getent passwd jack

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

Если вы хотите узнать, сколько учетных записей пользователей у вас в системе, getent passwd вывод 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.

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

Оставьте комментарий