Сегодня разные операционные системы имеют возможность использовать несколько пользователей, каждый со своими настройками и пользовательскими конфигурациями, чтобы облегчить совместную работу администраторов и операторов в одной системе.
Linux,очень силен в этом вопросе, поскольку позволяет нескольким пользователям одновременно работать в системе независимо. Он может даже позволить одному пользователю открывать несколько сеансов даже из разных мест для работы в системе.
Вот некоторые советы и рекомендации для как узнать всех пользователей Linux.
Список всех пользователей в Linux
Допустим, вы хотите создать пользователя sudo в Linux. Наверное, самое первое, что нужно знать, это как узнать, какие пользователи уже есть в моей системе. Есть несколько способов получить список пользователей в Linux.
1. Показать пользователей в Linux, используя 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
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin
/etc/passwd (END)
Структура в приведенном выше выводе выглядит так:
- Имя пользователя
- Зашифрованный пароль (
x
означает, что пароль хранится) - Идентификационный номер пользователя (UID)
- Идентификационный номер группы пользователя (GID)
- ФИО
- Домашний каталог пользователя
- Оболочка входа пользователя (по умолчанию — оболочка bash)
Почему так много пользователей? Какие из них «настоящие»?
Список показывает намного больше пользователей, чем вы ожидали, потому что в нем также перечислены все пользователи системы.
Теперь, если вы хотите отличить обычных пользователей от системных пользователей, вы можете обратиться к номеру идентификатора пользователя (UID).
Обычно обычный пользователь имеет UID, больший или равный 1000. Это дает вам подсказку, что пользователь с UID> = 1000 является обычным пользователем, а пользователи с UID <1000 являются системными пользователями.
Вы также заметите, что у некоторых пользователей есть «nologin» в конце их строки. Это означает, что эти пользователи не могут войти в систему. Эти пользователи также называются псевдопользователями.
2. Просмотр пользователей с помощью getent passwd
Эта команда выдаст вам вывод, аналогичный «less /etc/passwd», однако на самом деле он запрашивает файл конфигурации функциональных возможностей переключателя службы имен GNU (находится в /etc/nsswitch.conf).
Это conf включает passwd, поэтому он будет отображаться очень похоже, но если вы используете LDAP для аутентификации, он также будет включать это.
3. Список пользователей Linux с compgen
Если вы просто хотите , чтобы перечислить все имена пользователей без какой — либо дополнительной информации, вы можете использовать CompGen команду с -u опцией.
compgen -u
Вывод будет выглядеть так:
compgen -u
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
pulse
avahi
colord
hplip
geoclue
gnome-initial-setup
gdm
abhishek
Несколько советов о перечислении пользователей в Linux
Вы только что увидели три способа просмотра пользователей в Linux. Вот несколько советов, которые помогут вам при работе с списком пользователей.
Список только имена пользователей
У вас уже есть команда compgen для этого, но вам не нужно постоянно ее помнить.
Если мы хотим получить только список имен пользователей в системе, вы можете использовать команду awk или команду cut для фильтрации вывода двух других команд, которые мы видели ранее.
cut -d: -f1 /etc/passwd
или
getent passwd | awk -F: '{ print $1}'
Любой из них даст нам отфильтрованный список пользователей, показывая только самый первый столбец с именем пользователя:
root
daemon
bin
sys
sync
games
man
lp
mail
news
johndoe
davmail
statd
Проверьте, существует ли имя пользователя в системе
Это может быть полезно, если вы хотите знать, существует ли конкретное имя пользователя в системе:
getent passwd | grep johndoe
Это вывод:
johndoe:x:1000:1000:John Doe,,,:/home/johndoe:/bin/bash
Список всех подключенных пользователей
Если вы хотите знать какие пользователи в настоящее время вошли в вашу систему Linux, вам нужно использовать простую команду who и это немедленно выведет список текущих имен пользователей с активным сеансом в вашей системе.
user@system:~$ who
johndoe :0 2019-01-28 21:35 (:0)
harrysmith pts/0 2019-02-01 09:51 (192.168.1.1)
stevejones pts/1 2019-02-02 09:51 (192.168.1.173)
В этом случае в списке появится не только список подключенных имен пользователей, но и то, как они подключены, с момента, когда они подключены и откуда они подключены.
В самом первом столбце будет указано, какое это имя пользователя.
Во втором столбце будет указано, к какому типу соединения это относится: если оно обозначено знаком «: X», где X — число, это означает, что используется графический интерфейс пользователя (GUI) или сеанс рабочего стола, например Gnome, XDE и т. д. ; если терминал отображает «pts/X», где X — число, это означает, что это соединение, установленное по протоколу SSH (командная строка).
В третьем столбце будет указано, с каких пор этот сеанс был подключен к серверу (дата и время). В четвертом и последнем столбце будет указано место, откуда он подключен. Если удаленно, будет отображаться IP-адрес, с которого установлено соединение, если локально (например, GUI), будет отображаться «(: X)», где X — это число сеанс в этом случае и будет соответствовать число во втором столбце для этой строки.
Итог
Как видите, перечисление пользователей в Linux совсем не сложно. Он состоит из простых команд, которые выводят всю информацию для вас, что бы вы ни хотели сделать или получить эту информацию, это то, что вам нужно отфильтровать в зависимости от того, что вы хотите проверить в системе.