Узнайте, к каким группам принадлежит пользователь в 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
Хоу это помогает.