.
Введение
В Linux группа — это набор пользователей. Основная цель групп — определить набор привилегий, таких как разрешение на чтение, запись или выполнение для данного ресурса, которые могут быть разделены между пользователями в группе. Пользователи могут быть добавлены в существующую группу.
В этом руководстве объясняется, как отобразить все группы, членом которых является пользователь. Мы также объясним, как составить список всех членов группы.
Группы в Linux
Существует два типа групп, к которым может принадлежать пользователь:
- Первичная группа или группа доступа: это группа, назначенная файлам, созданным пользователем. Обычно имя основной группы совпадает с именем пользователя. Каждый пользователь должен принадлежать ровно к одной первичной группе.
- Вторичная или дополнительная группа — используется для предоставления определенных привилегий группе пользователей. Пользователь может быть членом нуля или более подгрупп.
Список всех групп, членом которых является пользователь
Есть несколько способов узнать, к каким группам принадлежит пользователь.
Группа основного пользователя хранится в файле /etc/passwd, а дополнительные группы, если они есть, перечислены в файле /etc/group.
Один из способов найти группы пользователей — составить список содержимого этих файлов с помощью команд cat, less или grep. Другой более простой вариант — использовать команду, целью которой является предоставление информации о системных пользователях и группах.
Использование команды групп
Самая простая команда для вывода списка всех групп, членом которых является пользователь, — это команда groups. При запуске без аргумента команда напечатает список всех групп, к которым принадлежит вошедший в данный момент пользователь:
groups
Первая группа является основной группой.
noviello sudo plugdev lpadmin
Чтобы получить список всех групп, к которым принадлежит конкретный пользователь, передайте имя пользователя команде groups в качестве аргумента:
groups noviello
Первая группа является основной группой.
noviello: noviello sudo
Использование идентификатора команды
Команда id выводит информацию об указанном пользователе и его группах. Если имя пользователя не указано, отображается информация для текущего пользователя.
Например, чтобы получить информацию о пользователе noviello, введите:
id noviello
Команда покажет имя пользователя ( uid ), основную группу пользователя ( gid ) и дополнительные группы пользователя ( groups ).
uid=1001(noviello) gid=1001(noviello) groups=1001(noviello),27(sudo)
Чтобы напечатать только имена без идентификатора пользователя и группы, используйте параметр -n. Опция -g печатает только основную группу, а опция -G печатает все группы.
Следующая команда напечатает имена групп, членом которых является текущий пользователь:
id -nG
noviello sudo plugdev lpadmin
Список всех участников группы
Чтобы вывести список всех членов группы, используйте команду getent group, за которой следует имя группы.
Например, чтобы узнать членов группы с именем ftp, используйте следующую команду:
getent group ftp
Если группа существует, команда напечатает группу и всех ее членов:
ftp:x:126:piero,ftpuser
Если нет вывода, группа не существует.
Список всех групп
Чтобы просмотреть все группы, присутствующие в системе, просто откройте файл /etc/group. Каждая строка в этом файле представляет информацию для группы.
less /etc/group
Другой вариант — использовать команду getent, которая отображает записи базы данных, настроенные в файле /etc/nsswitch.conf, включая группу базы данных, которую мы можем использовать для запроса списка всех групп.
Чтобы получить список всех групп, введите следующую команду:
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.