Группы в группах (Иван Савин, OSSDEVCONF-2022)

Материал из 0x1.tv

Докладчик
Иван Савин

Данный доклад посвящён механизму, обеспечивающему назначение дополнительных групп для пользователей с помощью специализированного модуля. С точки зрения пользователя, этот механизм действует аналогично добавлению группы в группу подобно тому, как это реализовано в MS Windows.

Рассмотрены особенности реализации и реальный опыт применения на практике.

Видео

Презентация

Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf

Thesis

Специализированный модуль — модуль ролей (libnss-role) — это модуль для службы переключения имён (NSS). Он делает возможным добавление групп в группы. Для администрирования модуля ролей существуют специальные вспомогательные утилиты, в рамках которых все группы условно разделены на две категории: роли и привилегии.

Роли — группы, предназначение которых указывать на характерную деятельность, выполняемую пользователем. Такими группами могут быть группы localadmins, users, powerusers, developers и др.

Привилегии — обычные группы, которые могут быть назначены пользователю. После этого пользователь может совершать действия, соответствующие данной привилегии. К привилегиям относятся такие группы как cdwriter, audio, serial, virtualbox и др.

В конфигурационном файле nsswitch.conf в цепочке применяемых модулей role должен быть последним:\\ group: files systemd role

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

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

Для хранения и получения информации о ролях и привилегиях модуль использует файл /etc/role. Начиная с версии 0.5.0, также поддерживается каталог /etc/role.d, позволяющий устанавливать отдельные конфигурационные файлы для ролей. Файлы конфигурации хранят информацию о вхождении групп в группы. Каждая строка в файлах имеет формат:

  \\<имя_группы>:<имя_группы>[,<имя_группы>]*
Центр управления. Системные роли.

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

Пример:

Пусть у нас есть пользователь user. Пусть в файле /etc/group имеются записи:\\ group1:x:1:user\\ group2:x:2:user\\ group3:x:3:\\ group4:x:4:\\ group5:x:5:\\ group6:x:6:

А файл /etc/role содержит:\\ group2:group3,group4\\ group4:group5,group6

Тогда пользователь user получит все имеющиеся группы. Группы group1 и group2, так как они назначены ему непосредственно, group3 и group4 — потому что они назначены группе group2, а группы group5 и group6 — так как они назначены группе group4.

Центр управления. Роли.

Вспомогательные утилиты для администрирования

roleadd — добавляет роль (если её ещё нет) и назначает ей привилегии. Пользователи, входящие в группу-роль, входят во все группы-привилегии.

roledel — удаляет привилегии из ролей, т.е. пользователи из группы-роли исключаются из удаляемой группы-привилегии.

rolelst — показывает текущий список ролей и привилегий.

На основании вышеприведённых утилит сделан графический инструмент, модуль альтератора alterator-roles. С его помощью можно манипулировать ролями и привилегиями более наглядно.

Центр управления. Локальные учётные записи.


Системная роль (заголовок на первом рисунке) — это понятие, введённое для удобства. Такая роль имеет отдельный конфигурационный файл в «/etc/role.d» с названием соответствующей роли. Например, для системной роли users будет конфигурационный файл «/etc/role.d/users.role». Такие роли можно будет распространять, например, групповыми политиками, и их было решено выделить в отдельное подмножество.

Одним из ключевых «удобных» моментов является возможность задать системные роли локальным пользователям из предопределённого списка. Системные роли интегрированы в управление локальными учётными записями (локальными пользователями).


Группы в группах (Иван Савин, OSSDEVCONF-2022)!.jpg

Примечания и ссылки