Группы в группах (Иван Савин, OSSDEVCONF-2022) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) (Новая страница: «;{{SpeakerInfo}}: {{Speaker|Иван Савин}} <blockquote> </blockquote> {{VideoSection}} {{vimeoembed||800|450}} {{youtubelink|}} {{SlidesSection}} File…») |
StasFomin (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
;{{SpeakerInfo}}: {{Speaker|Иван Савин}}
<blockquote>
Данный доклад посвящён механизму, обеспечивающему назначение дополнительных групп для пользователей с помощью
специализированного модуля. С точки зрения пользователя, этот механизм действует аналогично добавлению группы в группу
подобно тому, как это реализовано в MS Windows.
Рассмотрены особенности реализации и реальный опыт применения на
практике.
</blockquote>
{{VideoSection}}
{{vimeoembed|923073054|800|450}}
{{youtubelink|}}
|eEhkkOvvyAM}}
{{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> и др.
Привилегии — обычные группы, которые могут быть назначены пользователю. После этого пользователь может совершать
действия, соответствующие данной привилегии. К привилегиям относятся такие группы как <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]]
[[Категория:Draft]] | |||
Текущая версия на 15:59, 31 мая 2024
- Докладчик
- Иван Савин
Данный доклад посвящён механизму, обеспечивающему назначение дополнительных групп для пользователей с помощью специализированного модуля. С точки зрения пользователя, этот механизм действует аналогично добавлению группы в группу подобно тому, как это реализовано в MS Windows.
Рассмотрены особенности реализации и реальный опыт применения на практике.
Содержание
Видео
Презентация
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». Такие роли можно будет распространять,
например, групповыми политиками, и их было решено выделить в отдельное подмножество.
Одним из ключевых «удобных» моментов является возможность задать системные роли локальным пользователям из предопределённого списка. Системные роли интегрированы в управление локальными учётными записями (локальными пользователями).