LINUX.ORG.RU
ФорумAdmin

Добавление пользователю прав без логаута


0

3

Добрый день. Проблема такая: необходимо изменять права работающего в системе (GUI) пользователя. То есть давать или отнимать права на доступ к некоторым ресурсам. Самый простой, наверно, способ - завести необходимые группы, дать им права на ресурсы, а потом вводить и выводить пользователя из этих групп. Но возникает проблема - команды usermod и groupmod применяются только при логине и на работающего пользователя никакого влияния не оказывают. Можно ли как-то заставить DE перечитать права или необходимо другое решение, а не обычные системные группы.


Если «ресурсы» - объекты файловой системы, то можно использовать
Access Control Lists (ACL), если, конечно, ФС их поддерживает.

ABW ★★★★★
()

Для смены членства в группах необходимы права суперпользователя. Обычный процесс ими не обладает и не может получить права суперпользователя в ходе своей работы (только через exec(), но это будет уже другой процесс).

mky ★★★★★
()
Ответ на: комментарий от mky

Для смены членства в группах необходимы права суперпользователя.

Так автор - админ.
Автору - selinux\apparmor?

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

Хорошо, сформулирую по другому. Для вызова setgroups() процесс должен работать от имени суперпользователя. Поэтому уже работающий DE не может перейти из одной группы пользователей в другую (не может «перечитать права» как хочет ТС).

Не знаю насчёт apparmor, но политики SeLinux'а, ЕМНИП, грузятся достаточно долго. Если я правильно понял ТС, то он хочет, чтобы на некоторое время у работающего пользователя поялялись определённые права, а потом исчезали. Разве что изначально написать включаемые правила и «рулить» с помощью setsebool.

mky ★★★★★
()
Ответ на: комментарий от ABW

Да, именно объекты файловой системы. И ACL я применяю. Права на ресурсы назначаются группам, к примеру группа A имеет доступ к ресурсам a1, a2 и a3. Ввели пользователя в группу A и доступ к ресурсам появился, вывели и нет доступа. Можно, конечно, давать права не группе, а пользователю, но тогда надо запоминать к каким именно ресурсам он имеет доступ и при смене группы пробегать по всем и ставить/снимать права. Не хочется так делать.

kryuch
() автор топика
Ответ на: комментарий от kryuch

Начал делать установку прав для конкретных пользователей и возникла проблема. Если при установке прав запомнить имя файла, то к тому моменту, когда права нужно будет модифицировать он может быть переименован и будет печально. Соответственно, надо, наверно, запоминать идентификатор файла и идентификатор устройства (черeз stat, к примеру). Но! Каким образом по этим идентификаторам потом можно будет получить имя файла. Не нашел функции преобразования :(

kryuch
() автор топика
Ответ на: комментарий от kryuch

Сделай fuse-обёртку и проверяй в ней права на каждый чих.

Если пользователю разрешено открыть файл на запись и он его открыл, а потом у него право отняли, должен ли он уметь писать в файл до закрытия? Или запись обрывается? Аналогичный вопрос с чтением, правом выполнения (как для файлов, так и для директорий). Должно ли человека выкидывать из директории? Должны ли прерываться процессы?

Что будет, если пользовательская программа писала данные, и вдруг права отобрали, что делать с недописанными данными? Они могут остаться в противоречивом состоянии.

i-rinat ★★★★★
()
Ответ на: комментарий от kryuch

Если ты имеешь в виду inode, то потом найти файл можно с помощью 'find <точка монтирования> -inum <inode>'
Беда в том, что это может быть как долго, так и очень долго.
Если гарантировано, что ссылка после переименования/перемещения находится в каких-то определенных каталогах, то может быть чуть быстрее, если натравливать find только на них.
Так что, возможно, лучше отслеживать переименования c помощью inotifiwait, например.

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.