Модуль ролей

Материал из ALT Linux Wiki

Описание

Модуль ролей — это модуль для службы переключения имён 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

Управление включением/отключением модуля

Управление включением/отключением модуля осуществляется через подсистему control, например:

# control libnss-role
disabled
# control libnss-role enabled

Администрирование модуля

Файлы конфигурации

Для хранения и получения информации о ролях модуль использует файл /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