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

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

Группа Linux — это совокупность одного или нескольких пользователей с одинаковыми требованиями к разрешениям для файлов и каталогов. Пользователь может быть членом более чем одной группы одновременно. В Linux информация о каждой группе хранится в файле "/etc/group". В этом руководстве мы рассмотрим все возможные способы легко узнать, к каким группам принадлежит пользователь в Linux и Unix-подобных операционных системах.

Во многих случаях будет полезно узнать, к каким группам принадлежит учетная запись пользователя. Например, на днях я устанавливал Dropbox на свой сервер Ubuntu. При настройке Dropbox мне пришлось ввести текущее имя пользователя и имя группы. Вы также можете оказаться в ситуации, когда вам необходимо определить группы, к которым принадлежит пользователь. Если да, воспользуйтесь любым из следующих методов, чтобы узнать, в какой группе находится пользователь.

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

Существует множество способов составить список групп, членом которых является пользователь Linux. Наиболее часто используемый метод — использование команды groups.

Способ 1 — команда групп

Команда groups отображает текущие имена групп и принадлежность пользователей к этим группам в Linux и Unix-подобных операционных системах.

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

Чтобы найти список доступных в Linux, запустите команду groups без каких-либо аргументов, как показано ниже:

groups

Пример вывода:

sk adm disk cdrom sudo dip plugdev lpadmin sambashare kvm libvirt vboxusers

Список доступных групп в Linux

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

Теперь выясните, к каким группам принадлежит конкретный пользователь, например sk. Для этого введите команду «группы» и имя пользователя, как показано ниже:

groups sk

Пример вывода:

sk : sk adm disk cdrom sudo dip plugdev lpadmin sambashare vboxusers kvm libvirt

Узнайте, к каким группам принадлежит пользователь в Linux, с помощью команды groups

Здесь sk — мое имя пользователя, а пользователь sk — член всех вышеперечисленных групп. Возможно, вы заметили, что слово «sk» указано дважды. Потому что я использовал одно и то же имя как для имени пользователя, так и для имени группы.

Более подробную информацию о команде «группы» можно найти на страницах руководства.

man groups

Способ 2 — команда идентификатора

Другой способ определить группы, в которых состоит пользователь, — использовать команду "id". Команда id используется для печати информации о пользователе и группе для указанного ПОЛЬЗОВАТЕЛЯ. Если ПОЛЬЗОВАТЕЛЬ не указан, будет напечатана информация для текущего пользователя.

Чтобы определить все группы, к которым принадлежит пользователь, с помощью команды «id», выполните:

id sk

Замените sk на свое имя пользователя.

Пример вывода:

uid=1000(sk) gid=1000(sk) groups=1000(sk),4(adm),6(disk),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),1001(vboxusers),129(kvm),136(libvirt)

Узнайте, к каким группам принадлежит пользователь в Linux, с помощью команды id

Как вы видите здесь, команда id не только перечисляет группы, в которых состоит пользователь, но также идентификатор группы и идентификатор пользователя (UID и GID) данного пользователя и групп. Она имеет более подробный вывод, чем команда «groups», поэтому, если вам нужен идентификатор группы/идентификатор пользователя, используйте это!

Если вы не хотите печатать числа, просто используйте флаг -Gn, как показано ниже:

id -Gn sk
sk adm disk cdrom sudo dip plugdev lpadmin sambashare vboxusers kvm libvirt

Более подробную информацию можно найти на страницах руководства.

man id

Способ 3 – использование файла «/etc/group»

Как я уже говорил, файл /etc/group содержит информацию о каждой группе в системе Linux. Вы можете узнать, к каким группам принадлежит данный пользователь, из содержимого файла /etc/group с помощью команды "grep", как показано ниже:

grep sk /etc/group

Пример вывода:

adm:x:4:syslog,sk
disk:x:6:sk
cdrom:x:24:sk
sudo:x:27:sk
dip:x:30:sk
plugdev:x:46:sk
lpadmin:x:116:sk
sk:x:1000:
sambashare:x:126:sk
vboxusers:x:1001:sk
kvm:x:129:sk
libvirt:x:136:sk,libvirtdbus

Если вы хотите исключить идентификаторы групп и имя пользователя и отображать только имена групп, передайте выходные данные команды «grep» команде «awk», как показано ниже:

grep sk /etc/group | awk -F: '{ print $1 }'

Пример вывода:

adm
disk
cdrom
sudo
dip
plugdev
lpadmin
sk
sambashare
vboxusers
kvm
libvirt

Узнайте, к каким группам принадлежит пользователь в Linux, используя команды grep и awk

Способ 4 — команда getent

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

Мы можем перечислить все доступные группы и их участников в системе Linux, используя команду getent, как показано ниже:

getent group

Чтобы узнать, к каким группам принадлежит конкретный пользователь (например, sk),  запустите:

getent group | grep sk

Пример вывода:

adm:x:4:syslog,sk
disk:x:6:sk
cdrom:x:24:sk
sudo:x:27:sk
dip:x:30:sk
plugdev:x:46:sk
lpadmin:x:116:sk
sk:x:1000:
sambashare:x:126:sk
vboxusers:x:1001:sk
kvm:x:129:sk
libvirt:x:136:sk,libvirtdbus

Если вы хотите отображать только группы, исключая все остальные детали, отфильтруйте вывод с помощью команд «grep» и «awk», как показано ниже:

getent group | grep sk | awk -F: '{ print $1 }'
adm
disk
cdrom
sudo
dip
plugdev
lpadmin
sk
sambashare
vboxusers
kvm
libvirt

Узнайте, к каким группам принадлежит пользователь в Linux, используя команды getent, grep и awk.

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

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

$ grep -w storage /etc/group
storage:x:95:sk

Легко, правда? Действительно. Определить, к каким группам принадлежит пользователь и к каким пользователям принадлежит конкретная группа, очень просто!

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

  • Как составить список членов группы в Linux
  • Как найти всех пользователей Sudo в вашей системе Linux

Хоу это помогает.

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