Группы в группах (Иван Савин, OSSDEVCONF-2022) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
;{{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> и др. Привилегии — обычные группы, которые могут быть назначены пользователю. После этого пользователь может совершать действия, соответствующие данной привилегии. К привилегиям относятся такие группы как <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.
Рассмотрены особенности реализации и реальный опыт применения на практике.
Содержание
Видео
Презентация
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». Такие роли можно будет распространять,
например, групповыми политиками, и их было решено выделить в отдельное подмножество.
Одним из ключевых «удобных» моментов является возможность задать системные роли локальным пользователям из предопределённого списка. Системные роли интегрированы в управление локальными учётными записями (локальными пользователями).