[devel] Проблемы привилегий и ролей
Evgeny Sinelnikov
=?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Чт Фев 21 09:25:34 MSK 2008
2008/2/21 Хихин Руслан <hihin на yandex.ru>:
> Здравствуйте Evgeny Sinelnikov
> В сообщении от 21 февраля 2008 Evgeny Sinelnikov написал(a):
> Вы предлагаете Rsbac или Selinux ?
>
Ни то, ни другое... Эти два проекта расширяют возможности аворизации.
SELinux за счёт добавления контекста безопасности, а RSBac расширяет
возможностями сових модулей, которые вносят свои данные в расширенные
атрибуты.... Оба решения не расширяют списка стандартных групп пользователя.
Они на уровне ядря динамически расширяют критерии оценки действий.
Для рассматриваемой задачи оба эти решения - монстры... На домашнем
компьютере, в этом контексте, они излишни. А кроме того ещё и бесполезны.
Я предлагаю вариант решения проблемы в виде собственного nss-модуля, который
сможет решить проблемы добавления групп в группы. Это решения позволит
устранить вопрос об установке нового пакета, который должен создать группу и
хочет, по умолчанию, предоставить её всем пользователям и только. Группу
создать не сложно. Но, её ведь нужно добавить всем пользователям. Если иметь
механизм групп в группах и предоставить пакетам регистрировать стандартные
настройки своих привилегий, то это решит все вопросы, которые так тичично
были решены правами 0777.
Например, будем считать, что мы реализуем группы в группах. Для решения этой
задачи может быть применён следующий метод:
1) Однажды, в самом начале, после установки нашего расширения, скажем
libnss_roles в /etc/nsswitch.conf прописывается такая строка:
group: files roles
2) Далее этот модуль расширяет список привилеший назначаемых пользователям.
Тут можно считать, что некотрые группы у нас представляют собой роли.
Например, для начала, можно решить, что группа users это роль пользователь,
а wheel - администратор.
3) При входе в систему, кроме стандартных групп из /etc/group, новый модуль
добавляет пользователю дополнительные привилегии (тоже группы) из файла
/etc/roles:
users: xgrp, cdwriter
wheel: webmaster, kqemu
То есть, всем, кто входят в группу users, будут дополнительно назначены xgrp
и cdwriter, а всем, кто входит в группу wheel - webmaster и kqemu.
На самом деле, по ряду моментов, стоит указывать не имена групп, а gid'ы -
для утилит roleadd и roledel - это не важно, ну а для ручной правки конечно
не удобно. Зато снимается ряд вопросов при мпереименовании пользователей, и,
что более актуально, для сетевых... Получаем /etc/roles вида:
users: 80,119
wheel: 57,35
4) Далее, для устанавливаемых пакетов вроде vdr можно организовать
специальный каталог /etc/role.d, куда усанавливаемые пакеты смогут добавлять
файлы вида:
/etc/role.d/vdr:.
users: vdr
или
users: VDR_GID
Вообще этот подход позволяет решить вопрос, который был поставлен, простым
скриптом в спек-файле, то есть даже не обязательно реализовывать вариант с
/etc/role.d файлами.
--
Sin (Sinelnikov Evgeny)
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20080221/94c6463c/attachment-0002.html>
Подробная информация о списке рассылки Devel