如何允许 user_t SELinux 用户使用 sudo

如何允许 user_t SELinux 用户使用 sudo

我已将三类用户指定为staff_tuser_tguest_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_tuser_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 策略的源代码。我找不到任何地方对此有明确的记录。

相关内容