Группы в группах (Иван Савин, OSSDEVCONF-2022) — различия между версиями

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

 
;{{SpeakerInfo}}: {{Speaker|Иван Савин}}
<blockquote>
Данный доклад посвящён механизму, обеспечивающему назначение дополнительных групп для пользователей с помощью
специализированного модуля. С точки зрения пользователя, этот механизм действует аналогично добавлению группы в группу
подобно тому, как это реализовано в MS Windows. 

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

{{VideoSection}}
{{vimeoembed|923073054|800|450}}
{{youtubelink|}}

{{SlidesSection}}
[[File:Группы в группах (Иван Савин, OSSDEVCONF-2022).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

* http://git.altlinux.org/gears/a/alterator-roles.git
* https://github.com/Etersoft/libnss-role 

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

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

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

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

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

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

<pre><nowiki>
  \\<имя_группы>:<имя_группы>[,<имя_группы>]*
</nowiki></pre>

[[File:Pereslavl-2022-savin-savin-savin-img001.png|center|640px|thumb|Центр управления. Системные роли.]]

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

Пример:

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

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

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

[[File:Pereslavl-2022-savin-savin-savin-img002.png|center|640px|thumb|Центр управления. Роли.]]

=== Вспомогательные утилиты для администрирования ===
<i>roleadd</i>  добавляет роль (если её ещё нет) и назначает ей привилегии. Пользователи, входящие в
группу-роль, входят во все группы-привилегии.

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

<i>rolelst</i>  показывает текущий список ролей и привилегий.

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

[[File:Pereslavl-2022-savin-savin-savin-img003.png|center|640px|thumb|Центр управления. Локальные учётные записи.]]


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

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

* [https://www.altlinux.org/Модуль_ролей Модуль ролей]
* [https://www.altlinux.org/Alterator-roles Alterator-roles]


{{----}}
[[File:{{#setmainimage:Группы в группах (Иван Савин, OSSDEVCONF-2022)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSSDEVCONF-2022]]
[[CategoryКатегория:Draft]]

Текущая версия на 15:27, 17 марта 2024

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

Данный доклад посвящён механизму, обеспечивающему назначение дополнительных групп для пользователей с помощью специализированного модуля. С точки зрения пользователя, этот механизм действует аналогично добавлению группы в группу подобно тому, как это реализовано в 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

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