Модуль ролей: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
 
(не показано 8 промежуточных версий 2 участников)
Строка 12: Строка 12:


Модуль ролей позволяет реализовать подобное назначение прав пользователям системы. Группы-роли назначаются непосредственно пользователю, а группы-привилегии назначаются как пользователю непосредственно, так и группам-ролям. Деление групп на два сорта условно, и администратор может управлять им самостоятельно.
Модуль ролей позволяет реализовать подобное назначение прав пользователям системы. Группы-роли назначаются непосредственно пользователю, а группы-привилегии назначаются как пользователю непосредственно, так и группам-ролям. Деление групп на два сорта условно, и администратор может управлять им самостоятельно.
{{Attention|Дальнейшее описание актуально для [[P10|P10]], [[Sisyphus]].}}


== Установка модуля ролей ==
== Установка модуля ролей ==
{{pkg|libnss-role}} — это библиотека для NSS и набор инструментов для администрирования ролей и привилегий.
{{pkgL|libnss-role}} — это библиотека для NSS и набор инструментов для администрирования ролей и привилегий.


Установка модуля ролей:
Установка модуля ролей:
<source lang="text" highlight="1"># apt-get install libnss-role</source>
<syntaxhighlight lang="bash"># apt-get install libnss-role</syntaxhighlight>
 
== Управление включением/отключением модуля ==
 
Управление включением/отключением модуля осуществляется через подсистему [[Control|control]]:
 
<syntaxhighlight lang="bash">
# control libnss-role disabled
# control libnss-role enabled
</syntaxhighlight>
 
Просмотреть текущее состояние:
 
<syntaxhighlight lang="bash">
# control libnss-role
enabled
</syntaxhighlight>


== Администрирование модуля ==
== Администрирование модуля ==
Строка 27: Строка 45:
  <имя_группы>:<имя_группы>[,<имя_группы>]*
  <имя_группы>:<имя_группы>[,<имя_группы>]*


Имя до ":" означает что данная группа будет являться ролью или, что тоже самое, будет входить в другие группы, а последующие имена означают в какие группы входит данная или какие привилегии и роли ей назначены. Вхождения групп в группы применяется рекурсивно.
Имя до «:» означает что данная группа будет являться ролью или, что тоже самое, будет входить в другие группы, а последующие имена означают в какие группы входит данная или какие привилегии и роли ей назначены. Вхождения групп в группы применяется рекурсивно.


Для наглядности приведем пример. Пусть у нас есть пользователь pupkin. Пусть в файле /etc/group имеются записи:
Для наглядности приведем пример. Пусть у нас есть пользователь pupkin. Пусть в файле {{path|/etc/group}} имеются записи:


  group1:x:1:pupkin
  group1:x:1:pupkin
Строка 49: Строка 67:
Существуют три утилиты для выполнения задач по администрированию модуля: {{cmd|roleadd}}, {{cmd|roledel}} и {{cmd|rolelst}}.
Существуют три утилиты для выполнения задач по администрированию модуля: {{cmd|roleadd}}, {{cmd|roledel}} и {{cmd|rolelst}}.


{{Note|Для выполнения задач по администрированию модуля можно также воспользоваться модулем [[Alterator-roles|Управление ролями]].}}
{{Note|Для выполнения задач по администрированию модуля можно также воспользоваться модулем ЦУС [[Alterator-roles|Управление ролями]].}}


==== roleadd ====
==== roleadd ====
Строка 70: Строка 88:
Примеры:
Примеры:
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role}}):
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role}}):
*:<source lang="text" highlight="1"># roleadd users fuse</source>
*:<syntaxhighlight lang="bash"># roleadd users fuse</syntaxhighlight>
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role.d/users.role}}):
*Добавить привилегию fuse роли users (запись будет добавлена в файл {{path|/etc/role.d/users.role}}):
*:<source lang="text" highlight="1"># roleadd -S users fuse</source>
*:<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}}:
*:<source lang="text" highlight="1"># roleadd --file=test.role -m users radio camera floppy xgrp scanner</source>
*:<syntaxhighlight lang="bash"># roleadd --file=test.role -m users radio camera floppy xgrp scanner</syntaxhighlight>


==== roledel ====
==== roledel ====
Строка 93: Строка 111:
Примеры:
Примеры:
*Удалить привилегию  fuse для роли users (будет удалена привилегии из файла {{path|/etc/role/users.role}}):
*Удалить привилегию  fuse для роли users (будет удалена привилегии из файла {{path|/etc/role/users.role}}):
*:<source lang="text" highlight="1"># roledel -S users fuse</source>
*:<syntaxhighlight lang="bash"># roledel -S users fuse</syntaxhighlight>
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role/users.role}}):
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role/users.role}}):
*:<source lang="text" highlight="1"># roledel -Sr users</source>
*:<syntaxhighlight lang="bash"># roledel -Sr users</syntaxhighlight>
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role}}):
*Удалить все привилегии для роли users (будут удалены привилегии из файла {{path|/etc/role}}):
*:<source lang="text" highlight="1">#roledel -r users</source>
*:<syntaxhighlight lang="bash"># roledel -r users</syntaxhighlight>
*Удалить привилегию xgrp для роли users из файла {{path|/etc/role/test.role}}):
*Удалить привилегию xgrp для роли users из файла {{path|/etc/role/test.role}}):
*:<source lang="text" highlight="1">#roledel --file=test.role -m users xgrp</source>
*:<syntaxhighlight lang="bash"># roledel --file=test.role -m users xgrp</syntaxhighlight>


==== rolelst ====
==== rolelst ====
Строка 105: Строка 123:
{{cmd|rolelst}} — показывает текущий список ролей и привилегий. Данные считываются из файла {{path|/etc/role}}. Начиная с версии 0.5.0, также поддерживается каталог {{path|/etc/role.d}}.  
{{cmd|rolelst}} — показывает текущий список ролей и привилегий. Данные считываются из файла {{path|/etc/role}}. Начиная с версии 0.5.0, также поддерживается каталог {{path|/etc/role.d}}.  


<pre>Использование: roledel [-hrmv] [[-f file.role] | [-S]] РОЛЬ [*ПРИВИЛЕГИЯ]
<pre>Использование: rolelst [-hnvV] [[-f file.role] | [-S]] [*РОЛЬ]


Параметры:
Параметры:
Строка 118: Строка 136:
Примеры:
Примеры:
*Показать текущий список ролей и привилегий:
*Показать текущий список ролей и привилегий:
*:<source lang="text" highlight="1">$ rolelst
*:<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</source>
vboxadd:vboxsf</syntaxhighlight>
*Показать текущий список ролей и привилегий с дополнительной информацией об источниках ролей (будут отдельно выведены  данные, прочитанные только из /etc/role и затем данные после слияния с /etc/role.d/):
*Показать текущий список ролей и привилегий с дополнительной информацией об источниках ролей (будут отдельно выведены  данные, прочитанные только из {{path|/etc/role}} и затем данные после слияния с {{path|/etc/role.d/}}):
*:<source lang="text" highlight="1">$ rolelst -V
*:<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</source>
vboxadd:vboxsf</syntaxhighlight>





Текущая версия от 12:21, 19 апреля 2024

Описание

Модуль ролей — это модуль для службы переключения имён NSS. Модуль реализует возможность добавления групп в группы. Для администрирования модуля ролей реализованы специальные вспомогательные утилиты, которые рассматривают все группы поделёнными на две категории: роли и привилегии.

Привилегия
Обычная POSIX-группа, которая может быть назначена пользователю. После этого пользователь может совершать действия, соответствующие данной привилегии. К привилегиям относятся такие группы, как cdwriter, audio, serial, virtualbox и др.
Роль
Роль так же является POSIX группой, но её предназначение указывать, на характерную деятельность, которую выполняет пользователь, работая за компьютером. Такими группами могут быть группы localadmins, users, poweruser, developer и др.

Для того чтобы пользователь мог выполнять определённую роль ему могут понадобиться определённые права (привилегии), поэтому полезно уметь назначать привилегии как непосредственно пользователю (как это делается в POSIX), так и косвенно добавлять ему наборы привилегий через назначение роли. Например, пользователь, которому назначена роль localadmins мог бы получать кроме группы localadmins, ещё и группы-привилегии wheel, ssh, root и пр.

Модуль ролей позволяет реализовать подобное назначение прав пользователям системы. Группы-роли назначаются непосредственно пользователю, а группы-привилегии назначаются как пользователю непосредственно, так и группам-ролям. Деление групп на два сорта условно, и администратор может управлять им самостоятельно.

Внимание! Дальнейшее описание актуально для P10, Sisyphus.


Установка модуля ролей

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