Группы пользователей в Linux

TuxВ статье о системе распределения прав доступа в операционных системах Linux мы рассматривали не только пользователей ОС, но и объединения этих пользователей — группы. Разберем подробнее, какие функции выполняют группы пользователей в Linux, и как можно ими управлять.

Смысл объединения пользователей в группы проистекает как раз из необходимости предоставлять права доступа к файлам и папкам разным пользователям системы. Так как пользователей может быть не два и не три, а больше, было принято решения создать группы пользователей и предоставлять права им.

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

Группы пользователей в Linux
Содержимое файла /etc/group.

В Linux есть довольно значительное количество системных групп. Их предназначение заключается в распределении доступа к системным ресурсам. Различное ПО также может создавать группы для распределения доступа. Для начала рассмотрим основные группы, которые встретятся вам при работе с Linux.

Группа Описание
adm Предоставляет доступ к директории /var/log/
audio Управление аудиодрайвером
cdrom Предоставляет доступ к CD-ROM
daemon От имени данной группы и пользователя daemon запускаются процессы, которым необходима возможность записи на диск
dialout Предоставляет доступ к серийному порту
disk Предоставляет доступ к дискам (/dev/hd*, /dev/sd*)
games Предоставляет играм доступ к папкам для записи (настроек, сохранений и пр.)
list Просмотр сообщений в /var/mail/
lp Использование устройств, подключаемых к параллельным портам
mail Запись в /var/mail/
man Добавление страниц в /var/cache/man/
nogroup Применяется для процессов, имеющих прав только на чтение, но не на запись
plugdev Возможность монтировать внешние устройства
proxy Группа для прокси-серверов, не предоставляет возможности записи на диск
shadow Доступ на чтение файла /etc/shadow
src Полный доступ к /usr/src/
staff Запись в каталог /usr/local/
sync Выполнение команд из /bin/sync/
sys Доступ к исходникам ядра системы
tty Предоставляет доступ на чтение и запись для устройств /dev/vca
utmp Запись в файлы /var/log/utmp и /var/log/wtmp
video Доступ к работе с видеодрайвером
wheel Запуск утилиты sudo
www-data Группа веб-сервера, которая открывает доступ на запись в /var/www/

Управление группами в Linux осуществляется как через уже известный нам файл /etc/group, так и через графический интерфейс. В разных средах рабочего стола есть разные инструменты для управления группами. Кому интересно, может поискать в сети такие названия, как YaST и Kuser. Мы же рассмотрим управление группами через терминал Linux.

Для создания группы используется команда groupadd. Синтаксис команды очень простой:

groupadd [-g идентификатор [-o]] [-r] [-f] [-p пароль] [-R директория] [-h] [-K ключ=значение] имя_группы

-g — идентификатор создаваемой группы. Представляет из себя целое неотрицательное число. Диапазон, откуда присваиваются числа, задаётся ключами GID_MIN и GID_MAX в файле /etc/login.defs;

-o — опциональный ключ, который указывает на то, что задаваемый идентификатор не является уникальным (дублирует идентификатор другой группы);

-r — создаваемая группа будет системной. Если не указан идентификатор (-g), будет выбран первый из доступных системных идентификаторов;

-f — данная опция приводит к завершению команды с успешным статусом, если указанная группа уже существует и отменяет -g, если такой идентификатор уже используется (будет выбран другой свободный идентификатор);

-p — пароль для группы;

-R — директория измененного корневого каталога;

-h — вывод справки о команде и выход из команды;

-K — позволяет менять значение ключей в файле /etc/login.defs прямо из команды groupadd. Нужно указать ключ, которым хотим изменить, и его новое значение;

имя_группы — может содержать только строчные буквы, символы подчеркивания, тире и символ доллара. Имя группы может начинаться либо со строчной буквы, либо с символа подчеркивания. Максимальная длина имени — 16 символов.

Конечно, для создания группы нужно обладать правами администратора. Большинство из вышеприведенных опций используются нечасто. Обычно команда для создания новой группы выглядит примерно так:

sudo groupadd primer

Таким образом мы создали группу primer. После просмотра файла /etc/group мы увидим, что ей присвоен ближайший свободный GID — 1002.

Группы пользователей в Linux

Итак, состав группы можно определять путём простого редактирования файла /etc/group. Но есть и другой способ, предоставляющий свои возможности. Например, мы можем пойти от обратного — не редактировать свойства группы, а редактировать свойства пользователя. Команда usermod в числе прочего обладает рядом нужных нам параметров:

-G — список дополнительных групп, членом которых является пользователь;

-a — добавление пользователя в дополнительную группу, используется только с параметром -G;

-g — изменение основной группы пользователя.

Для того, чтобы добавить пользователя test в только что созданную группу primer, мы можем использовать команду

sudo usermod -a -G primer test

Можно ли удалить пользователя из группы при помощи команды usermod? Да, но происходит это не при помощи отдельного параметра, а просто при переопределении дополнительных групп, в которые входит пользователь. В общем виде такая команда будет выглядеть так:

usermod -G имя_группы_1,имя_группы_2,…,имя_группы_n имя_пользователя

Посмотреть, в какие группы входит пользователь, можно командой

id имя_пользователя

Посмотрим на скриншот ниже, а дальше прокомментируем его.

Группы пользователей в Linux

Команда

id test

Показывает информацию о пользователе test, его uid, gid, в какие группы он входит (основную и дополнительные). Основная группа для него это группа test с идентификатором 1000. Остальные группы являются дополнительными. Следующей командой

sudo usermod -G adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare test

мы меняем перечень дополнительных групп для пользователя test. Опять повторив команду

id test

мы увидим, что перечень групп у пользователя test изменился. Так как мы не упомянули группу primer, фактически мы пользователя из этой группы удалили.

Что касается удаления групп, то здесь также можно воспользоваться редактированием файла /etc/group или отдельной командой. Команда в данном случае называется groupdel.

Удалим группу primer:

sudo groupdel primer

Команда groupdel имеет всего два параметра, в общем виде она выглядит так:

groupdel [-R директория] [-h] имя_группы

Выше мы разобрали команду groupadd, поэтому смысл параметров -R и -h должен быть понятен.

На этом можно остановиться с основами управления группами в Linux. Помимо этого, можно было упомянуть в целом похожие инструменты, такие как addgroup и delgroup, но, по сути, они всё равно обращаются к groupadd и groupdel, и изучить их можно самостоятельно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *