Основной задачей системного администратора является настройка и управление пользователями и группами.
В этой статье я покажу вам, как перечислять пользователей в 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
1 comment
[…] мы уже обсуждали команду passwd, которая позволяет вам изменять пароль учетной записи […]