仅使用 SElinux 就可以将 Solaris RBAC 角色移植到 Linux 吗?

仅使用 SElinux 就可以将 Solaris RBAC 角色移植到 Linux 吗?

我们正在将应用程序从 Solaris 迁移到 Linux,并且通过使用 RBAC 角色,允许主用户运行一些系统命令,如 svccfg/svcadm(redhat 上的 chkconfig)。

是否可以仅使用 SElinux(无 sudo),允许普通用户关闭/打开 chkconfig(基本上赋予其添加删除服务的能力)?

我的方法是尝试创建一个具有相应 SElinux 角色的 SElinux 用户,该角色管理应用程序的域/类型,并允许其转换到运行 chkconfig、tcpdump 或任何其他通常仅限于 root 访问权限的系统实用程序所需的所有其他域。到目前为止,我的所有尝试都失败了,所以我的第二个问题是,在哪里可以找到适用于这个特定问题的良好文档?

答案1

SELinux 参考策略已包含一个用户角色sysadm_r,该角色在以下情况下(略微)限制 root 权限:受限用户正在使用在系统上(默认情况下它们不是)。

应该可以设计一个可以启动/停止服务而不能执行其他管理任务的用户角色,大致基于sysadm_r,但我以前从未这样做过,因此我犹豫着是否要逐行向您说明。虽然我不愿意这么说,但这个问题我可能会提交给 selinux 邮件列表。

答案2

从 selinux 邮件列表收到的回复:

仅通过 SELinux 无法实现,因为目前我们没有提供授予原本无法授予的功能的方法,只能进一步限制这些功能。曾有补丁支持此类功能,但遭到了民众的反对。

因此,您需要使用其他方法(sudo 或文件大写或其他)来首先授予功能,然后您可以使用 SELinux 来帮助将用户锁定为仅需要的功能。sudo 现在确实有 SELinux 支持,既可以通过命令行选项也可以通过 sudoers 配置。

答案3

当然可以使用 SElinux 来满足您的请求,并且配置应该很容易。

步骤是:

  1. 创建具有最小终端权限的 SElinux 用户。
  2. 创建一个系统用户并将该用户映射到新创建的 SElinux 用户。
  3. 修改SElinux用户的附加角色,让用户转换chkconfig_t
  4. 系统用户无法运行几乎所有的 linux 命令,因为他的权限很小,如果需要,我们可以使用sudonewrole命令让用户转换到域。您可以使用它来创建或修改 SElinux 模块。chkconfig_tsystem-config-selinux

我曾使用 SElinux 限制用户只具有重新启动 httpd 和修改其配置的权限。但对此,用户却无能为力。

相关内容