- Saved searches
- Use saved searches to filter your results more quickly
- License
- Etersoft/libnss-role
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Модуль ролей
- Установка модуля ролей
- Управление включением/отключением модуля
- Администрирование модуля
- Файлы конфигурации
- Административные утилиты
- roleadd
- roledel
- rolelst
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
NSS API library and admin tools for roles and privilegies
License
Etersoft/libnss-role
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
NSS API library and admin tools for roles and privileges. This README is also available in Russian (Русский)
libnss-role is an NSS libc module that implements adding groups to groups for Linux / Unix systems and also provides functionality similar to Windows’ «Restricted Groups».
libnss_role is an NSS module adds support for adding groups to groups. This makes certain system administration tasks easier.
For example, you can create a group named users and add it to groups such as audio , cdwriter , serial etc. Now you can add all users to users group instead of adding them to all these groups manually.
Furthermore, you can create a group named admins and add it to groups users and wheel . As a result, administrators will get all «user» groups and a wheel group in addition.
This module has its own administration utilities. These utilities divide all groups into two categories: roles and privileges.
This is an ordinary POSIX group that can be assigned to a user. Members of a «privilege» group can perform certain actions. Examples of privileges are: cdwriter , audio , serial , virtualbox and many others.
A role is also a POSIX group, but it has another meaning: it describes a type of activity that a user performs. Examples of roles are: admin , user , power_user , developer and others.
A user may need some special rights to perform his role. It is useful to have a possibility of adding sets of privileges to users indirectly via assigning a role. For example, an user with admin role could also get privilege groups such as wheel , ssh , root etc.
This module implements such permission management model.
- CMake 3.10+ for building
- cmocka for unit testing
- nss_wrapper for unit testing
The build process is as simple as:
mkdir build cd build cmake .. make make test
Maybe you will need to create a configuration file with role info:
Now you need to enable the module. Open /etc/nsswitch.conf and append role to the end of the line that starts with groups: . . You should get something like this:
This module uses /etc/role file and a system file /etc/group to store role information.
/etc/group is a standard POSIX file and is described in many guides. /etc/role stores additional information about groups that are included in other groups. Format of /etc/role is as follows:
where is an integer group identifier.
An identifier before : means that a group is a role and will be included in other groups. Identifiers after : are identifiers of groups that include this role. Nested groups are resolved recursively.
Here is an example. Suppose that we have a user named pupkin and we have some records in /etc/group :
group1:x:1:pupkin group2:x:2:pupkin group3:x:3: group4:x:4: group5:x:5: group6:x:6:
Meanwhile the /etc/role file contains:
With such configuration pupkin will get all the groups.
- he gets group1 and group2 as they are assigned to him directly;
- he gets group3 and group4 as they are assigned to group2 ;
- he gets group5 and group6 as they are assigned to group4 .
Using identifiers in /etc/role makes it hard to edit the file manually, that’s why we have module administration utilities. There are three utilities: roleadd , roledel и rolelst .
Adds a role (if not exists) and assigns privileges and roles to it.
ROLE is a role name. Must match an existing group name.
GROUP is a name of role or a privilege.
When used with -s switch the groups are set; by default groups are appended.
Used to delete privileges from roles and to delete roles themselves (second form).
Shows a nice output of /etc/role , converting identifiers into readable names.
About
NSS API library and admin tools for roles and privilegies
Модуль ролей
Модуль ролей — это модуль для службы переключения имён 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:
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 --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 --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
$ 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