Я могу понять, как сопоставить пользователя SELinux с существующей ролью, но как мне создать новые роли? Я хочу создать ограниченную роль администратора для своего ящика.
Используйте sepolicy из пакета policycoreutils-devel в вашем дистрибутиве RedHat. Чтобы добиться того, о чем вы просили, вам нужно будет использовать следующее:
sepolicy generate --confined_admin -n NAME [-a ADMIN_DOMAIN] [-u USER]
Это сгенерирует политику, которую вы можете скомпилировать (make -f /usr/share/selinux/devel/Makefile
) в модуль, который можно установить с помощью semodule -i
, но сначала проверьте полученный файл .te и настройте его по своему усмотрению. Также обратите внимание, что генератор по умолчанию вставляет разрешающий домен в политику. Поэтому, как только вы довольны созданной политикой - вам нужно удалить разрешающий домен, перекомпилировать политику с make -f /usr/share/selinux/devel/Makefile
и вперед :)
Если вы не хотите переписать практически всю политику, Не вижу смысла в новой роли. Обратите внимание, что после его создания вам нужно будет создать собственные правила политики для буквально каждый модуль эту роль предполагается использовать.
Моя идея предоставить пользователю ограниченную роль администратора реализована:
guest_u
, это строго ограниченный (и уже существующий) пользователь SELinux.sudo
правила, позволяющие конкретным людям запускать определенные команды на определенных машинах с определенной ролью и типом SELinux.rbash
, ограниченный PATH
, 2FA аутентификация, правильная авторизация, ...)Ключевым моментом здесь является возможность предоставления непривилегированных guest_u
пользователь может запускать команду с повышенными привилегиями никогда не покидая его / ее ограниченное сопоставление пользователей SELinux.
Проверить sudoers(5)
manpage для получения подробной информации.
Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
SELinux_Spec В системах с поддержкой SELinux записи sudoers могут дополнительно иметь роль и / или тип SELinux, связанные с командой. Если роль или тип указаны с помощью команды, они переопределят любые значения по умолчанию, указанные в sudoers. Однако роль или тип, указанные в командной строке, заменят значения в sudoers.
Чтобы проверить поддержку SELinux в sudo
, бегать:
# ldd $(which sudo) | grep selinux
На RHEL, sudo
по умолчанию включена поддержка SELinux.