Модуль ролей
Описание
Модуль ролей — это модуль для службы переключения имён NSS. Модуль реализует возможность добавления групп в группы. Для администрирования модуля ролей реализованы специальные вспомогательные утилиты, которые рассматривают все группы поделёнными на две категории: роли и привилегии.
- Привилегия
- Обычная POSIX-группа, которая может быть назначена пользователю. После этого пользователь может совершать действия, соответствующие данной привилегии. К привилегиям относятся такие группы, как cdwriter, audio, serial, virtualbox и др.
- Роль
- Роль так же является POSIX группой, но её предназначение указывать, на характерную деятельность, которую выполняет пользователь, работая за компьютером. Такими группами могут быть группы localadmins, users, poweruser, developer и др.
Для того чтобы пользователь мог выполнять определённую роль ему могут понадобиться определённые права (привилегии), поэтому полезно уметь назначать привилегии как непосредственно пользователю (как это делается в POSIX), так и косвенно добавлять ему наборы привилегий через назначение роли. Например, пользователь, которому назначена роль localadmins мог бы получать кроме группы localadmins, ещё и группы-привилегии wheel, ssh, root и пр.
Модуль ролей позволяет реализовать подобное назначение прав пользователям системы. Группы-роли назначаются непосредственно пользователю, а группы-привилегии назначаются как пользователю непосредственно, так и группам-ролям. Деление групп на два сорта условно, и администратор может управлять им самостоятельно.
Установка модуля ролей
libnss-role — это библиотека для NSS и набор инструментов для администрирования ролей и привилегий.
Установка модуля ролей:
# apt-get install libnss-role
Администрирование модуля
Файлы конфигурации
Для хранения и получения информации о ролях модуль использует файл /etc/role. Начиная с версии 0.5.0, также поддерживается каталог /etc/role.d, позволяющий устанавливать отдельные конфигурации ролей. Файлы конфигурации хранят дополнительную информацию о вхождении групп в группы. Каждая строка в файлах имеет формат:
<имя_группы>:<имя_группы>[,<имя_группы>]*
Имя до ":" означает что данная группа будет являться ролью или, что тоже самое, будет входить в другие группы, а последующие имена означают в какие группы входит данная или какие привилегии и роли ей назначены. Вхождения групп в группы применяется рекурсивно.
Для наглядности приведем пример. Пусть у нас есть пользователь pupkin. Пусть в файле /etc/group имеются записи:
group1:x:1:pupkin group2:x:2:pupkin group3:x:3: group4:x:4: group5:x:5: group6:x:6:
А файл /etc/role содержит:
group2:group3,group4 group4:group5,group6
Тогда пользователь pupkin получит все имеющиеся группы. Группы group1 и group2, так как они назначены ему непосредственно, group3 и group4 — потому что они назначены группе group2, а группы group5 и group6 — так как они назначены группе group4.
Административные утилиты
Существуют три утилиты для выполнения задач по администрированию модуля: roleadd, roledel и rolelst.
roleadd
roleadd — утилита, позволяющая добавлять группы привилегий в группы ролей. Это означает, что все пользователи в группе ролей входят во все группы привилегий, добавленные в измененную роль.
Использование: roleadd [-hsmv] [[-f file.role] | [-S]] РОЛЬ [*ПРИВИЛЕГИЯ] Параметры: -h, --help показать справку и выйти -s, --set установить роль только с указанными привилегиями (переопределить) -m, --skip-missing-groups пропустить отсутствующие группы (привилегии) вместо ошибки -v, --version вывести версию и выйти -f, --file=file.role изменить роль в дополнительном файле /etc/role.d/file.role -S, --system изменить системную роль (ROLE) в дополнительном файле /etc/role.d/ROLE.role
Добавляет роль (если её ещё нет) и назначает ей привилегии и группы. РОЛЬ — имя роли (должна совпадать с уже имеющейся группой). ПРИВИЛЕГИЯ — имя роли или привилегии, которые будут назначены данной (если используется вместе с параметром -s, то производится установка групп; по умолчанию группы добавляются к уже имеющимся).
Примеры:
- Добавить привилегию fuse роли users (запись будет добавлена в файл /etc/role):
# roleadd users fuse
- Добавить привилегию fuse роли users (запись будет добавлена в файл /etc/role.d/users.role):
# roleadd -S users fuse
- Добавить привилегии radio,camera,floppy,xgrp,scanner роли users в файл /etc/role.d/test.role:
# roleadd --file=test.role -m users radio camera floppy xgrp scanner
roledel
roledel — утилита, позволяющая удалять группы привилегий из групп ролей. Это означает, что все пользователи в группе ролей исключаются из всех групп привилегий, которые удалены из измененной роли.
Использование: roledel [-hrmv] [[-f file.role] | [-S]] РОЛЬ [*ПРИВИЛЕГИЯ] Параметры: -h, --help показать справку и выйти -r, --remove удалить все привилегии из роли -m, --skip-missing-groups пропустить отсутствующие группы (привилегии) вместо ошибки -v, --version вывести версию и выйти -f, --file=file.role изменить роль в дополнительном файле /etc/role.d/file.role -S, --system изменить системную РОЛЬ (ROLE) в дополнительном файле/etc/role.d/ROLE.role
Примеры:
- Удалить привилегию fuse для роли users (будет удалена привилегии из файла /etc/role/users.role):
# roledel -S users fuse
- Удалить все привилегии для роли users (будут удалены привилегии из файла /etc/role/users.role):
# roledel -Sr users
- Удалить все привилегии для роли users (будут удалены привилегии из файла /etc/role):
#roledel -r users
- Удалить привилегию xgrp для роли users из файла /etc/role/test.role):
#roledel --file=test.role -m users xgrp
rolelst
rolelst — показывает текущий список ролей и привилегий. Данные считываются из файла /etc/role. Начиная с версии 0.5.0, также поддерживается каталог /etc/role.d.
Использование: rolelst [-hnvV] [[-f file.role] | [-S]] [*РОЛЬ] Параметры: -h, --help показать справку и выйти -n, --numeric вывести GID вместо названий групп -v, --version вывести версию и выйти -V, --verbose вывести дополнительную информацию об источниках ролей -f, --file=file.role показать привилегии роли из дополнительного файла /etc/role.d/file.role -S, --system[=ROLE] показать привилегии системной РОЛИ (ROLE) из дополнительного файла /etc/role.d/ROLE.role
Примеры:
- Показать текущий список ролей и привилегий:
$ rolelst powerusers2:remote localadmins:wheel,remote,vboxusers,vboxadd powerusers:remote,vboxadd,vboxusers users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers vboxadd:vboxsf
- Показать текущий список ролей и привилегий с дополнительной информацией об источниках ролей (будут отдельно выведены данные, прочитанные только из /etc/role и затем данные после слияния с /etc/role.d/):
$ rolelst -V # Settings read from /etc/role: powerusers2:remote # Resulting settings merged with /etc/role.d entries powerusers2:remote localadmins:wheel,remote,vboxusers,vboxadd powerusers:remote,vboxadd,vboxusers users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers vboxadd:vboxsf
Источник: https://github.com/Etersoft/libnss-role/blob/master/README-ru.md