
В Linux группа — это совокупность пользователей. Основное назначение групп — определение набора привилегий, таких как разрешение на чтение, запись или выполнение для заданного ресурса, которые могут быть предоставлены пользователям внутри группы. Пользователи могут быть добавлены в существующую группу , чтобы использовать предоставляемые ею привилегии.
В этом руководстве объясняется, как отобразить все группы, в которых состоит пользователь. Мы также объясним, как составить список всех участников группы.
Группы Linux
Существует два типа групп, к которым может принадлежать пользователь:
-
Основная группа (или группа входа) — это группа, которая назначается файлам, создаваемым пользователем. Обычно имя основной группы совпадает с именем пользователя. Каждый пользователь должен принадлежать только к одной основной группе.
-
Вторичная или дополнительная группа — используется для предоставления определённых привилегий группе пользователей. Пользователь может быть членом нуля или нескольких вторичных групп.
Список всех групп, в которые входит пользователь
Существует несколько способов узнать, к каким группам принадлежит пользователь.
Основная группа пользователя хранится в файле /etc/passwd , а дополнительные группы, если таковые имеются, перечислены в файле /etc/group .
Один из способов узнать группы пользователя — просмотреть содержимое этих файлов с помощью cat , less или grep . Другой более простой вариант — использовать команду, предназначенную для предоставления информации о пользователях и группах системы.
Использование команды groups
Самая запоминающаяся команда для вывода списка всех групп, в которых состоит пользователь, — это команда groups . При выполнении без аргумента эта команда выведет список всех групп, в которые входит текущий вошедший в систему пользователь:
groups
Первая группа — это основная группа.
john adm cdrom sudo dip plugdev lpadmin sambashare
Чтобы получить список всех групп, к которым принадлежит конкретный пользователь, укажите имя пользователя в команде groups в качестве аргумента:
groups linuxize
Как и прежде, первая группа является основной.
linuxize : linuxize sudo
Использование команды id
Команда id выводит информацию об указанном пользователе и его группах. Если имя пользователя не указано, выводится информация о текущем пользователе.
Например, чтобы получить информацию о пользователе linuxize вам нужно ввести:
id linuxize
Команда покажет идентификатор пользователя ( uid ), основную группу пользователя ( gid ) и дополнительные группы пользователя ( groups ).
uid=1001(linuxize) gid=1001(linuxize) groups=1001(linuxize),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.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Связанные руководства