ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как перечислить группы в Linux

Как перечислить группы в Linux

В Linux группа – это совокупность пользователей. Основная цель групп – определить набор привилегий, таких как права на чтение, запись или выполнение для данного ресурса, которые могут быть общими для пользователей в группе. Пользователи могут быть добавлены в существующую группу, чтобы использовать предоставленные ей привилегии.

В этой статье объясняется, как показать все группы, в которые входит пользователь. Мы также объясним, как составить список всех членов группы.

 

Пользователь может принадлежать к двум типам групп:

 

Есть несколько способов узнать группы, к которым принадлежит пользователь.

Основная группа пользователей хранится в файле /etc/passwd, а дополнительные группы, если таковые имеются, перечислены в файле /etc/group.

Один из способов найти группы пользователей – просмотреть содержимое этих файлов, используя catless или grep. Другой более простой вариант – использовать команду, цель которой – предоставить информацию о пользователях и группах системы.

 

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

groups

Первая группа является основной группой.

john adm cdrom sudo dip plugdev lpadmin sambashare

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

groups andreyex

Как и прежде, первая группа является основной.

andreyex : andreyex sudo

Команда id печатает информацию об указанном пользователе и его группах. Если имя пользователя не указано, отображается информация о текущем пользователе.

Например, чтобы получить информацию о пользователе, andreyex, вы должны набрать:

id andreyex

Команда покажет имя пользователя (uid), первичную группу пользователя (gid) и вторичные группы пользователя (groups)

uid=1001(andreyex) gid=1001(andreyex) groups=1001(andreyex),27(sudo)

Для печати только имен без идентификаторов пользователя и группы используйте опцию -n. Опция -g будет печатать только основную группу и -G все группы.

Следующая команда напечатает имена групп, в которые входит текущий пользователь:

id -nG
john adm cdrom sudo dip plugdev lpadmin sambashare

Чтобы вывести список всех членов группы, используйте команду getent group, за которой следует имя группы.

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

getent group developers

Если группа существует, команда напечатает группу и всех ее членов:

developers:x:126:frank,mary

Если нет вывода, это означает, что группа не существует.

 

Для просмотра всех групп, присутствующих в системе, просто откройте файл /etc/group. Каждая строка в этом файле представляет информацию для одной группы.

less /etc/group

Другой вариант – использовать команду getent, которая отображает записи из баз данных, настроенных в /etc/nsswitch.conf, включая базу данных group, которую мы можем использовать для запроса списка всех групп.

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

getent group

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

Вы также можете использовать awk или cut для печати только первое поле, содержащее название группы:

getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1

В этой статье вы узнали, как найти группы, в которые входит пользователь. Те же команды применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.

Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.

Exit mobile version