我们正在将应用程序从 Solaris 迁移到 Linux,并且通过使用 RBAC 角色,允许主用户运行一些系统命令,如 svccfg/svcadm(redhat 上的 chkconfig)。
是否可以仅使用 SElinux(无 sudo),允许普通用户关闭/打开 chkconfig(基本上赋予其添加删除服务的能力)?
我的方法是尝试创建一个具有相应 SElinux 角色的 SElinux 用户,该角色管理应用程序的域/类型,并允许其转换到运行 chkconfig、tcpdump 或任何其他通常仅限于 root 访问权限的系统实用程序所需的所有其他域。到目前为止,我的所有尝试都失败了,所以我的第二个问题是,在哪里可以找到适用于这个特定问题的良好文档?
答案1
答案2
从 selinux 邮件列表收到的回复:
仅通过 SELinux 无法实现,因为目前我们没有提供授予原本无法授予的功能的方法,只能进一步限制这些功能。曾有补丁支持此类功能,但遭到了民众的反对。
因此,您需要使用其他方法(sudo 或文件大写或其他)来首先授予功能,然后您可以使用 SELinux 来帮助将用户锁定为仅需要的功能。sudo 现在确实有 SELinux 支持,既可以通过命令行选项也可以通过 sudoers 配置。
答案3
当然可以使用 SElinux 来满足您的请求,并且配置应该很容易。
步骤是:
- 创建具有最小终端权限的 SElinux 用户。
- 创建一个系统用户并将该用户映射到新创建的 SElinux 用户。
- 修改SElinux用户的附加角色,让用户转换
chkconfig_t
。 - 系统用户无法运行几乎所有的 linux 命令,因为他的权限很小,如果需要,我们可以使用
sudo
或newrole
命令让用户转换到域。您可以使用它来创建或修改 SElinux 模块。chkconfig_t
system-config-selinux
我曾使用 SElinux 限制用户只具有重新启动 httpd 和修改其配置的权限。但对此,用户却无能为力。