Как составить список членов группы в Linux
В этом руководстве объясняются различные способы поиска и составления списка всех групп, а также составления списка членов группы в Linux и Unix-подобных операционных системах.
Введение
Все пользователи системы Linux должны быть членами хотя бы одной группы. Эта группа известна как основная группа. Если у пользователя нет основной группы, он не сможет войти в систему.
Помимо основной группы, пользователи могут быть членами дополнительных групп. Настройка основной группы хранится в файле /etc/passwd
.
Имя первичной группы указывается в 4-м поле этого файла. Настройки остальных (вторичных) групп хранятся в файле /etc/group
.
Список всех групп в Linux
Прежде чем перечислять всех пользователей, принадлежащих к группе, давайте сначала найдем список доступных групп с помощью команды compgen
. Compgen – это встроенный BASH для управления программируемыми средствами завершения.
Чтобы просмотреть все доступные группы в системе Linux, запустите команду compgen с опцией -g
, как показано ниже:
compgen -g
Пример вывода:
root
daemon
bin
sys
adm
tty
disk
lp
mail
news
uucp
man
proxy
.
.
.
nova
rdma
libvirt
libvirt-qemu
libvirt-dnsmasq
cockpit-ws
cockpit-wsinstance
libvirtdbus
root
nogroup
Вы также можете получить список всех групп с помощью команды getent
:
getent group
Пример вывода:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sk
tty:x:5:syslog
disk:x:6:sk
lp:x:7:
mail:x:8:
news:x:9:
.
.
.
nova:x:134:
rdma:x:135:
libvirt:x:136:sk,libvirtdbus
libvirt-qemu:x:64055:libvirt-qemu
libvirt-dnsmasq:x:137:
cockpit-ws:x:138:
cockpit-wsinstance:x:139:
libvirtdbus:x:998:
root:x:0:
nogroup:x:65534:
Первое поле в файле /etc/group
— это имя группы. Итак, мы можем использовать команды awk
или cut
для печати только первого поля, содержащего имя группы, как показано ниже. :
getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1
Если вы хотите просмотреть группы постранично, используйте команду "more" или "less", как показано ниже:
more /etc/group
less /etc/group
Теперь давайте проверим членов группы.
Список членов группы в Linux
Есть несколько способов найти участников группы в Linux. Методы, которые мы использовали здесь для идентификации членов группы, приведены ниже:
- используя файл
/etc/group
, - с помощью команды
getent
, - с помощью команды
groupmems
, - с помощью команды
members
, - с помощью команды
lid
.
1. Перечислите членов группы, используя файл /etc/group.
При создании группы информация о группе сохраняется в файле /etc/group
. Давайте посмотрим на содержимое этого файла с помощью команды cat
:
cat /etc/group
Пример вывода:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sk
tty:x:5:syslog
disk:x:6:sk
lp:x:7:
mail:x:8:
news:x:9:
.
.
.
systemd-coredump:x:999:
nova:x:134:
rdma:x:135:
libvirt:x:136:sk,libvirtdbus
libvirt-qemu:x:64055:libvirt-qemu
libvirt-dnsmasq:x:137:
cockpit-ws:x:138:
cockpit-wsinstance:x:139:
libvirtdbus:x:998:
Как я упоминал ранее, первое поле в /etc/group
зарезервировано для имени группы. Как видно из приведенного выше вывода, система Linux может содержать несколько групп.
Чтобы просмотреть членов определенной группы на компьютере Linux, используйте команду grep
, чтобы отфильтровать сведения о группе из файла /etc/group
, например ниже:
grep '^sudo' /etc/group
Или,
grep -w sudo /etc/group
Приведенные выше команды показывают, что пользователи принадлежат к группе с именем sudo.
sudo:x:27:sk
Как видно из приведенного выше вывода, группа sudo содержит только одного члена с именем «sk».
2. Просмотрите членов группы с помощью команды getent.
Команда getent отображает записи из баз данных, поддерживаемых библиотеками переключателей службы имен, которые настроены в файле /etc/nsswitch.conf
.
Чтобы найти членов данной группы в Linux с помощью команды getent
, запустите:
getent group sudo
Эта команда отображает членов группы «sudo».
Одним из заметных преимуществ команды getent является то, что она выводит список не только локальных пользователей, но и всех пользователей во всех настроенных бэкэндах userdb, например LDAP, в данной системе.
3. Распечатайте пользователей в группе с помощью команды groupmems.
Команда groupmems
позволяет пользователю управлять собственным списком членов группы без привилегий суперпользователя. Это часть пакета теневых утилит.
Чтобы распечатать членов группы с помощью команды groupmems
, выполните:
sudo groupmems -g sudo -l
У этой команды есть два недостатка. Он касается только групп в файле /etc/group
, но не групп в LDAP или других пользовательских базах данных. Ему также требуются права суперпользователя, поскольку он пытается открыть файл /etc/gshadow
.
4. Отображение членов группы с помощью команды участников.
Как ясно видно из названия, команды members
в основном отображают членов группы в Linux.
Команда Members по умолчанию недоступна в большинстве дистрибутивов Linux. Вам необходимо установить его с помощью менеджера пакетов вашего дистрибутива.
Например, в системах на базе Debian вы можете установить его с помощью команды:
sudo apt install members
После установки вы можете отображать членов определенной группы в Linux с помощью команды members
, как показано ниже:
members sudo
По умолчанию команда members
отображает всех пользователей. Используйте -p
или -s
, чтобы отобразить только членов основной или вторичной группы.
5. Перечислите всех пользователей, принадлежащих к группе, с помощью команды libuser-lid.
Команда libuser-lid
используется для отображения информации о группах, содержащих имя пользователя, или о пользователях, содержащихся в имени группы.
Команда libuser-lid также недоступна по умолчанию во многих дистрибутивах Linux. libuser предоставляет эту команду, поэтому вам необходимо установить ее с помощью менеджера пакетов вашего дистрибутива.
В Debian, Ubuntu установите пакет libuser с помощью команды:
sudo apt install libuser
Чтобы вывести список всех пользователей в группе, запустите:
sudo libuser-lid -g sudo
Обратите внимание, что для запуска этой команды требуются права суперпользователя.
Пример вывода:
sk(uid=1000)
Для получения более подробной информации обратитесь к страницам руководства соответствующей команды.
Это несколько разных способов найти список пользователей в группе в Linux. Надеюсь это поможет.
Связанное чтение:
- Как узнать, к каким группам принадлежит пользователь в Linux
- Как составить список всех пользователей в Linux