Как составить список всех пользователей в Linux
В этом кратком руководстве объясняется, как составить список всех пользователей в операционных системах Linux. Прежде чем углубляться в тему, посмотрим, что такое файл /etc/passwd. Потому что мы зависим от этого файла в этом руководстве.
Краткое примечание о файле /etc/passwd
В Linux (и Unix в целом) основная информация о каждой учетной записи пользователя хранится в файле "/etc/passwd". Это не что иное, как обычный текстовый файл, содержащий атрибуты всех учетных записей пользователей, присутствующих в системе Linux.
По умолчанию этот файл доступен для чтения всем пользователям с помощью любых текстовых или графических программ, таких как Vi, Nano, Gedit и т. д., или с помощью команд типа "cat".
Если вы откроете этот файл..
cat /etc/passwd
... вы увидите несколько записей, как показано ниже:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
[...]
Каждая строка в файле /etc/passwd представляет одного пользователя. Пользователь root будет указан вверху. Каждая строка содержит семь атрибутов или полей, разделенных двоеточием, без пробелов между каждым полем. Ниже приведены названия семи полей:
- имя,
- пароль,
- ID пользователя,
- идентификатор группы,
- гекос,
- домашний каталог,
- оболочка.
1. Имя
Поле "имя" — это имя пользователя, которое вы используете для входа в свой компьютер Linux.
2. Пароль
Поле "пароль" содержит просто букву X. Это означает, что пароль зашифрован и хранится в отдельном файле под названием "/etc/shadow" в целях безопасности. Обычные пользователи не могут прочитать файл /etc/shadow. Здесь X указывает, что у пользователя есть пароль. Если это поле пусто, у пользователя нет пароля, поэтому он может войти в систему без пароля.
3. Идентификатор пользователя
Идентификатор пользователя» (или сокращенно UID) указывает уникальный цифровой идентификационный номер пользователя. UID корневой учетной записи равен 0 (ноль). Числа от 1 до 99 зарезервированы для системных учетных записей. А номера от 100 до 999 зарезервированы для обычных пользователей и групп.
4. Идентификатор группы
Идентификатор группы (или сокращенно GID) указывает идентификатор основной группы, к которой принадлежит пользователь. GID обычно совпадает с UID.
5. Гекконы
Поле "геконы" содержит общую информацию о пользователе. Например, оно может содержать настоящее имя пользователя. Это поле может быть либо пустым, разделенным двумя двоеточиями, либо содержать несколько записей, разделенных запятыми.
6. Домашний каталог
Поле "домашний каталог" указывает полный путь к домашнему каталогу пользователя, например /home/sk. Это каталог, в который пользователь попадает первым при входе в систему. Домашний каталог обычно содержит программы и файлы конфигурации, принадлежащие пользователю.
7. Оболочка
Последнее поле — "оболочка". Он указывает полный путь к оболочке по умолчанию для этого пользователя.
Теперь давайте возьмем в качестве примера следующую строку:
root:x:0:0:root:/root:/bin/bash
В приведенной выше строке
- root — имя пользователя,
- x — указывает, что у пользователя root есть пароль,
- 0 – первый 0 (ноль) указывает UID,
- 0 – второй ноль указывает GID,
- root — указывает настоящее имя пользователя.
- /root — это домашний каталог пользователя root.
- /bin/bash — оболочка по умолчанию для пользователя root.
Надеюсь, вы получили общее представление о файле /etc/passwd. Теперь давайте вернемся к нашей теме, то есть к перечислению всех пользователей в системе Linux.
Список всех пользователей в Linux
Есть несколько способов составить список всех пользователей в системе Linux. Здесь я включил все возможные способы.
1. Перечислите всех пользователей Linux с помощью команды cat.
Как следует из названия, команда cat обычно используется для объединения файлов и печати их содержимого.
Чтобы просмотреть всех пользователей в системе Linux с помощью команды Cut, выполните:
cat /etc/passwd
Эта команда выведет список всех доступных пользователей.
Пример вывода:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin
avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin
cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
whoopsie:x:112:117::/nonexistent:/bin/false
kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
saned:x:114:119::/var/lib/saned:/usr/sbin/nologin
avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false
geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin
gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
sk:x:1000:1000:sk,,,:/home/sk:/bin/bash
Debian-exim:x:122:128::/var/spool/exim4:/usr/sbin/nologin
pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
systemd-timesync:x:123:127:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
tss:x:124:131:TPM software stack,,,:/var/lib/tpm:/bin/false
tcpdump:x:125:132::/nonexistent:/usr/sbin/nologin
_flatpak:x:126:133:Flatpak system-wide installation helper,,,:/nonexistent:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
Список всех пользователей Linux с помощью команды cat
Как я уже упоминал, первое поле в приведенных выше записях представляет пользователей. Если вам не нужны все поля, а отображаются только имена пользователей, вам помогут следующие методы.
3. Список пользователей с помощью команды вырезания
Команда «вырезать» используется для удаления разделов (или полей) из каждой строки файлов.
Чтобы просмотреть всех пользователей с помощью команды Cut в системе Linux, выполните:
cut -d: -f1 /etc/passwd
Эта команда отображает только имена пользователей из файла /etc/passwd и игнорирует все остальные поля.
Пример вывода:
root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
list
irc
gnats
nobody
systemd-network
systemd-resolve
syslog
messagebus
_apt
uuidd
avahi-autoipd
usbmux
dnsmasq
rtkit
cups-pk-helper
speech-dispatcher
whoopsie
kernoops
saned
avahi
colord
hplip
geoclue
gnome-initial-setup
gdm
sk
Debian-exim
pulse
systemd-timesync
tss
tcpdump
_flatpak
systemd-coredump
Список всех пользователей Linux с помощью команды Cut
4. Распечатайте пользователей в Linux с помощью команды awk.
Мы также можем использовать команду «awk» для вывода списка всех пользователей Linux.
awk -F':' '{ print $1}' /etc/passwd
Эта команда также отобразит только пользователей и опустит все остальные детали.
Список всех пользователей Linux с помощью команды awk
5. Просмотр списка пользователей с помощью compgen
Compgen – это встроенная функция BASH для управления программируемыми средствами завершения.
Чтобы вывести список всех пользователей, использующих compgen, запустите:
compgen -u
6. Отобразите всех пользователей с помощью команды getent.
Другой способ составить список пользователей в Linux — использовать команду getent, как показано ниже:
getent passwd
Эта команда прочитает файл /etc/passwd и выведет список всех пользователей в этом файле.
Список всех пользователей Linux с помощью команды awk
Одним из заметных преимуществ команды getent является то, что она выводит список не только пользователей в файле /etc/passwd, но и всех пользователей во всех настроенных бэкэндах userdb, например LDAP, в данной системе.
7. Перечислите пользователей, используя команды «больше» или «меньше».
Команды more и less используются для открытия данного файла для интерактивного чтения, позволяющего прокручивать и искать.
Чтобы распечатать всех пользователей с помощью команды more или less, запустите:
more /etc/passwd
Или,
less /etc/passwd
Связанное чтение:
- Как составить список членов группы в Linux
- Как найти вошедших в систему пользователей в Linux
- Как отслеживать активность пользователей в Linux
- Как ограничить доступ пользователя к системе Linux
- Разница между «больше», «меньше» и большинством команд
- Как добавлять, удалять и предоставлять привилегии Sudo пользователям в Ubuntu
- Как узнать, к каким группам принадлежит пользователь в Linux
- Правильный способ редактирования файлов /etc/passwd и /etc/group в Linux
Надеюсь это поможет.