Разрешения, необходимые для изменения меток SELinux

Разрешения, необходимые для изменения меток SELinux

Я пишу код, который поддерживает SELinux. Я новичок в этом модуле безопасности и у меня крутая кривая обучения.

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

Очевидно, что для монтирования мне нужны права root (иметь полномочия CAP_SYS_ADMIN), но нужно ли мне быть пользователем root для перемаркировки?

В Fedora мне разрешено переименовывать файлы, владельцем которых я являюсь, например, как непривилегированный пользователь я могу сделать следующее:

$ touch /tmp/test
$ ls -Z /tmp/test
unconfined_u:object_r:user_tmp_t:s0 /tmp/test
$ chcon system_u:object_r:etc_t:s0 /tmp/test
$ ls -Z /tmp/test
system_u:object_r:etc_t:s0 /tmp/test

Похоже, что нет разрешения на переименование файлов, принадлежащих другому пользователю.

Но сейчас я нашел следующее в RedHatруководство:

Политика SELinux определяет, могут ли пользователи изменять контекст SELinux для любого файла.

что, по-видимому, указывает на то, что такое поведение действительно можно настроить, и что я не могу полагаться на возможность переименовывать файлы, принадлежащие мне.

РЕДАКТИРОВАТЬ: Похоже, Fedora реализует это с помощью constraints.

# dnf install setools-console
# seinfo --constrain
...
constrain file {relabelto create relabelfrom } (u1 == u2 or ( t1 == can_change_object_identity ));
...

Связанный контент