Поиск по сайту:

Как составить список членов группы в 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

Список всех групп в Linux с помощью команды compgen

Вы также можете получить список всех групп с помощью команды 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:

Список всех групп в Linux с помощью команды getent

Первое поле в файле /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. Методы, которые мы использовали здесь для идентификации членов группы, приведены ниже:

  1. используя файл /etc/group,
  2. с помощью команды getent,
  3. с помощью команды groupmems,
  4. с помощью команды members,
  5. с помощью команды 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:

Просмотр информации о группах Linux

Как я упоминал ранее, первое поле в /etc/group зарезервировано для имени группы. Как видно из приведенного выше вывода, система Linux может содержать несколько групп.

Чтобы просмотреть членов определенной группы на компьютере Linux, используйте команду grep, чтобы отфильтровать сведения о группе из файла /etc/group, например ниже:

grep '^sudo' /etc/group

Или,

grep -w sudo /etc/group

Приведенные выше команды показывают, что пользователи принадлежат к группе с именем sudo.

sudo:x:27:sk

Список членов группы в Linux с помощью команды grep

Как видно из приведенного выше вывода, группа sudo содержит только одного члена с именем «sk».

2. Просмотрите членов группы с помощью команды getent.

Команда getent отображает записи из баз данных, поддерживаемых библиотеками переключателей службы имен, которые настроены в файле /etc/nsswitch.conf.

Чтобы найти членов данной группы в Linux с помощью команды getent, запустите:

getent group sudo

Эта команда отображает членов группы «sudo».

Найдите членов группы в Linux с помощью команды getent

Одним из заметных преимуществ команды getent является то, что она выводит список не только локальных пользователей, но и всех пользователей во всех настроенных бэкэндах userdb, например LDAP, в данной системе.

3. Распечатайте пользователей в группе с помощью команды groupmems.

Команда groupmems позволяет пользователю управлять собственным списком членов группы без привилегий суперпользователя. Это часть пакета теневых утилит.

Чтобы распечатать членов группы с помощью команды groupmems, выполните:

sudo groupmems -g sudo -l

Распечатайте членов группы с помощью команды groupmems в Linux

У этой команды есть два недостатка. Он касается только групп в файле /etc/group, но не групп в LDAP или других пользовательских базах данных. Ему также требуются права суперпользователя, поскольку он пытается открыть файл /etc/gshadow.

4. Отображение членов группы с помощью команды участников.

Как ясно видно из названия, команды members в основном отображают членов группы в Linux.

Команда Members по умолчанию недоступна в большинстве дистрибутивов Linux. Вам необходимо установить его с помощью менеджера пакетов вашего дистрибутива.

Например, в системах на базе Debian вы можете установить его с помощью команды:

sudo apt install members

После установки вы можете отображать членов определенной группы в Linux с помощью команды members, как показано ниже:

members sudo

Отображение членов группы с помощью команды Members в Linux

По умолчанию команда 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 с помощью команды libuser-lid

Для получения более подробной информации обратитесь к страницам руководства соответствующей команды.

Это несколько разных способов найти список пользователей в группе в Linux. Надеюсь это поможет.

Связанное чтение:

  • Как узнать, к каким группам принадлежит пользователь в Linux
  • Как составить список всех пользователей в Linux

Статьи по данной тематике