Как просмотреть пользователей с помощью командной строки Linux

by itisgood

Основной задачей системного администратора является настройка и управление пользователями и группами.

В этой статье я покажу вам, как перечислять пользователей в Linux с помощью командной строки.

Команды, которые я показываю, будут работать на всех дистрибутивах Linux, таких как Ubuntu / Centos и Arch Linux.

1) Из  “/ etc / passwd – Использование команды Cut & Awk

Файл под названием «/ etc / passwd» хранит список всех пользователей независимо от созданной учетной записи для человека, связанной с сервисом или системного пользователя.

Каждая строка «/ etc / passwd» является отдельным пользователем.

Эти команды должны работать на Centos / Ubuntu / Arch и других дистрибутивах Linux.

Используйте команду ниже, чтобы указать всех пользователей

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
...

вы можете получить список без ненужной информации, используя:

$ cut -d : -f 1 /etc/passwd

Cut – это команда для форматирования каждой строки файлов и отображения только требуемого вывода на консоли.

В принципе, команда cut вырезает строку и извлекает текст.

Помните что команда cut требует опции, иначе она вернет вам ошибку

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
....

Давайте попробуем что-нибудь еще

$ cat /etc/passwd | grep "/home" |cut -d: -f1
syslog
administrator
linoxide
...

Теперь, что мы сделали, мы передали предыдущий вывод команды в другую переменную “cut”

$ cut -d: -f1

-d определяет разделитель “:”
-f1 отображает первое поле строки, то есть имя пользователя.

Давайте попробуем еще немного форматирования, Awk – это утилита, которая позволяет системному администратору создавать команды, которые определяют текстовые шаблоны, которые необходимо искать в файле.

Awk в основном используется для пост-обработки и сопоставления шаблонов.

Теперь давайте попробуем некоторое форматирование вывода, ниже печатает больше, чем просто имена входа.

Команда awk выведет полное имя и домашний каталог вместе с логином:

$ awk -F":" '{print "Login:" $1 "\tName:" $5 "\tHome:" $6}' /etc/passwd

посмотрите на результат, вы увидите хорошо отформатированный и украшенный вывод по сравнению с другой командой,

Login:root	Name:root	Home:/root
Login:daemon	Name:daemon	Home:/usr/sbin
Login:bin	Name:bin	Home:/bin
Login:sys	Name:sys	Home:/dev
Login:sync	Name:sync	Home:/bin
Login:games	Name:games	Home:/usr/games
Login:man	Name:man	Home:/var/cache/man
Login:lp	Name:lp	Home:/var/spool/lpd
Login:mail	Name:mail	Home:/var/mail
Login:gnats	Name:Gnats Bug-Reporting System (admin)	Home:/var/lib/gnats
...

2) Команда Getent

Команда getent выполняет то же самое, что и команда cut, которую мы видели ранее, команда getent извлекает записи из баз данных, поддерживаемых библиотекой служб имен.

Если для команды предоставляется одна или несколько опций, отображаются только те элементы, которые соответствуют этому параметру.

В противном случае будут отображаться все записи.

getent [option] [database]

Показать всех пользователей

Это то же самое, что и список пользователей, использующих cat / etc / passwd, если другие параметры не предоставлены, команда getent использует passwd в качестве ссылки на базу данных и перечисляет всех пользователей.

$ getent passed
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
vivek:x:1000:1000:vivek:/home/vivek:/bin/bash
vboxadd:x:991:1::/var/run/vboxadd:/bin/false
linoxide:x:9999:9999:official:/home/lino_dir:/bin/bash
...

Найти все группы Linux

В приведенных ниже командах список всех групп без каких-либо условий или совпадений, если не указаны другие параметры, команда getent использует группу в качестве ссылки базы данных и перечисляет все группы.

$ getent group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
haclient:x:189:
unbound:x:997:
colord:x:996:
dip:x:40:
usbmuxd:x:113:
...

Поиск всех групп с определенным пользователем

$ getent group | grep username

Вышеприведенная команда извлекает всю группу, передавая имя пользователя в список каналов только для соответствующей строки.

На выводе есть группа и имя пользователя, принадлежащие этой группе.

Следующая команда предназначена для расширенного форматирования с использованием команды awk, cut & sed вместе, чтобы указать всех пользователей и пользователей, принадлежащих к определенной группе

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
echo "$group: $members" | sed 's/,,*/ /g';done

You may also like

1 comment

Linux chpasswd команда учебное пособие для начинающих (5 примеров) — ITISGOOD.RU 22.08.2018 - 10:48

[…] мы уже обсуждали команду passwd, которая позволяет вам изменять пароль учетной записи […]

Reply

Leave a Comment