我已将三类用户指定为staff_t
、user_t
和guest_t
。但是这些用户类型的默认权限并不完全符合我的需求。使用现有的三种定义似乎比尝试定义一个全新的类型更容易。特别是,被指定为 的用户需要能够user_t
运行sudo
- 不是以 root 身份运行命令,而是仅以其他用户的身份运行预定义命令,这些用户也指定为user_t
。我不介意这首先需要使用newrole
来采用除提供之外的补充角色user_t
,这不需要输入密码。
我无法找到有关如何执行此操作的清晰细节。所以我不得不尝试弄清楚它是如何配置的,例如staff_t
。我可以猜测一些需要的转换,但我怀疑实际上有一个或两个 m4 宏可以完成这项工作。有一个sudodomain
应用于的属性staff_sudo_t
。有趣的是,/etc/selinux/targeted/contexts/users/user_u
包含一行user_sudo_t
但user_sudo_t
类型不存在。但这强化了我的看法,这可能是一个常见的配置,所以应该不会像我发现的那么困难。
我正在使用带有 FreeIPA 的 RHEL 9 系统。
答案1
回答我自己的问题,但我最终得到的解决方案涉及添加以下策略:
policy_module(user_sudo, 1.0.0);
gen_require(`
type user_t;
role user_r;
')
sudo_role_template(user, user_r, user_t)
这个宏比我担心的或我最初尝试的要简单得多。我不能说这是否是最好的或“正确的”方法,但它至少是有效的。为了找到这个宏,我必须阅读 SELinux 策略的源代码。我找不到任何地方对此有明确的记录。