我可以弄清楚如何将SELinux用户映射到现有angular色,但是如何创build新angular色? 我正在为我的盒子创build一个受限制的pipe理员angular色。
除非你想重写整个refpolicy , 否则我觉得没有什么用处。 请注意,在创build它之后,您需要为angular色应该能够使用的每个模块创build自定义策略规则。
我给用户一个受限的pipe理员angular色的想法是通过以下方式实现的:
guest_u ,这是一个非常有限(并且已经存在)的SELinux用户。 sudo规则,以允许特定人员在特定的SELinuxangular色和types下在特定的计算机上运行特定的命令。 rbash ,有限的PATH ,2FA身份validation,适当的授权等) 这里的关键是能够授予非特权guest_u用户运行提升特权命令的能力, 而不必离开他/她的受限SELinux用户映射 。
有关详细信息,请查看sudoers(5)页。
Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd
SELinux_Spec在支持SELinux的系统上,sudoers条目可以select性地具有与命令关联的SELinuxangular色和/或types。 如果使用该命令指定angular色或types,它将覆盖sudoers中指定的任何默认值。 但是,在命令行中指定的angular色或types将取代sudoers中的值。
要检查sudo SELinux支持,请运行:
# ldd $(which sudo) | grep selinux
在RHEL上, sudo默认启用SELinux支持。
在RedHat发行版中使用policycoreutils-devel软件包中的sepolicy。 要达到你所要求的,你将需要使用以下内容:
sepolicy generate --confined_admin -n NAME [-a ADMIN_DOMAIN] [-u USER]
这会产生一个你可以编译的模块( make -f /usr/share/selinux/devel/Makefile )到一个你可以用semodule -i安装的模块,但是请先检查生成的.te文件,然后调整它适合你。 还请注意,生成器默认情况下将允许域插入到策略中。 因此,一旦您对创build的策略感到满意 – 您需要删除许可域名,使用make -f /usr/share/selinux/devel/Makefile重新编译策略,然后closures