Модуль ролей: различия между версиями
м (→roledel) |
мНет описания правки |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 16: | Строка 16: | ||
== Установка модуля ролей == | == Установка модуля ролей == | ||
{{ | {{pkgL|libnss-role}} — это библиотека для NSS и набор инструментов для администрирования ролей и привилегий. | ||
Установка модуля ролей: | Установка модуля ролей: | ||
< | <syntaxhighlight lang="bash"># apt-get install libnss-role</syntaxhighlight> | ||
== Управление включением/отключением модуля == | == Управление включением/отключением модуля == | ||
Строка 25: | Строка 25: | ||
Управление включением/отключением модуля осуществляется через подсистему [[Control|control]]: | Управление включением/отключением модуля осуществляется через подсистему [[Control|control]]: | ||
< | <syntaxhighlight lang="bash"> | ||
# control libnss-role disabled | # control libnss-role disabled | ||
# control libnss-role enabled | # control libnss-role enabled | ||
</ | </syntaxhighlight> | ||
Просмотреть текущее состояние: | Просмотреть текущее состояние: | ||
< | <syntaxhighlight lang="bash"> | ||
# control libnss-role | # control libnss-role | ||
enabled | enabled | ||
</ | </syntaxhighlight> | ||
== Администрирование модуля == | == Администрирование модуля == | ||
Строка 45: | Строка 45: | ||
<имя_группы>:<имя_группы>[,<имя_группы>]* | <имя_группы>:<имя_группы>[,<имя_группы>]* | ||
Имя до | Имя до «:» означает что данная группа будет являться ролью или, что тоже самое, будет входить в другие группы, а последующие имена означают в какие группы входит данная или какие привилегии и роли ей назначены. Вхождения групп в группы применяется рекурсивно. | ||
Для наглядности приведем пример. Пусть у нас есть пользователь pupkin. Пусть в файле /etc/group имеются записи: | Для наглядности приведем пример. Пусть у нас есть пользователь pupkin. Пусть в файле {{path|/etc/group}} имеются записи: | ||
group1:x:1:pupkin | group1:x:1:pupkin | ||
Строка 88: | Строка 88: | ||
Примеры: | Примеры: | ||
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role}}): | *Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roleadd users fuse</syntaxhighlight> | ||
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role.d/users.role}}): | *Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role.d/users.role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roleadd -S users fuse</syntaxhighlight> | ||
*Добавить привилегии radio,camera,floppy,xgrp,scanner роли users в файл {{path|/etc/role.d/test.role}}: | *Добавить привилегии radio,camera,floppy,xgrp,scanner роли users в файл {{path|/etc/role.d/test.role}}: | ||
*:< | *:<syntaxhighlight lang="bash"># roleadd --file=test.role -m users radio camera floppy xgrp scanner</syntaxhighlight> | ||
==== roledel ==== | ==== roledel ==== | ||
Строка 111: | Строка 111: | ||
Примеры: | Примеры: | ||
*Удалить привилегию fuse для роли users (будет удалена привилегии из файла {{path|/etc/role/users.role}}): | *Удалить привилегию fuse для роли users (будет удалена привилегии из файла {{path|/etc/role/users.role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roledel -S users fuse</syntaxhighlight> | ||
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role/users.role}}): | *Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role/users.role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roledel -Sr users</syntaxhighlight> | ||
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role}}): | *Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roledel -r users</syntaxhighlight> | ||
*Удалить привилегию xgrp для роли users из файла {{path|/etc/role/test.role}}): | *Удалить привилегию xgrp для роли users из файла {{path|/etc/role/test.role}}): | ||
*:< | *:<syntaxhighlight lang="bash"># roledel --file=test.role -m users xgrp</syntaxhighlight> | ||
==== rolelst ==== | ==== rolelst ==== | ||
Строка 136: | Строка 136: | ||
Примеры: | Примеры: | ||
*Показать текущий список ролей и привилегий: | *Показать текущий список ролей и привилегий: | ||
*:< | *:<syntaxhighlight lang="bash">$ rolelst | ||
powerusers2:remote | powerusers2:remote | ||
localadmins:wheel,remote,vboxusers,vboxadd | localadmins:wheel,remote,vboxusers,vboxadd | ||
powerusers:remote,vboxadd,vboxusers | powerusers:remote,vboxadd,vboxusers | ||
users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers | users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers | ||
vboxadd:vboxsf</ | vboxadd:vboxsf</syntaxhighlight> | ||
*Показать текущий список ролей и привилегий с дополнительной информацией об источниках ролей (будут отдельно выведены данные, прочитанные только из /etc/role и затем данные после слияния с /etc/role.d/): | *Показать текущий список ролей и привилегий с дополнительной информацией об источниках ролей (будут отдельно выведены данные, прочитанные только из {{path|/etc/role}} и затем данные после слияния с {{path|/etc/role.d/}}): | ||
*:< | *:<syntaxhighlight lang="bash">$ rolelst -V | ||
# Settings read from /etc/role: | # Settings read from /etc/role: | ||
powerusers2:remote | powerusers2:remote | ||
# Resulting settings merged with /etc/role.d entries | # Resulting settings merged with /etc/role.d entries | ||
powerusers2:remote | powerusers2:remote | ||
localadmins:wheel,remote,vboxusers,vboxadd | localadmins:wheel,remote,vboxusers,vboxadd | ||
powerusers:remote,vboxadd,vboxusers | powerusers:remote,vboxadd,vboxusers | ||
users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers | users:cdwriter,cdrom,audio,proc,radio,camera,floppy,xgrp,scanner,uucp,fuse,vboxadd,vboxusers | ||
vboxadd:vboxsf</ | vboxadd:vboxsf</syntaxhighlight> | ||
Текущая версия от 12:21, 19 апреля 2024
Описание
Модуль ролей — это модуль для службы переключения имён 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
Просмотреть текущее состояние:
# 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