我想知道是否可以使用 SELinux 使 CentOS 7 服务器的安全性chcon
低于 SELinux 处于宽容模式的安全性。我本质上是尝试使用 Nginx 设置 Phusion Passenger,以便与rbenv
不是 sudoer 的用户使用安装的 Ruby 版本(一个 Ruby 版本管理器,本质上在用户的主目录中安装 Ruby 库、二进制文件、lib 等)。我使用过类似的工具setroubleshoot-server
来从本质上解决各种问题,例如使用 SELinux 布尔值的问题,但这些工具不能帮助我诊断安装在特定用户主目录中的 Ruby 版本的问题。在以下情况下,Phusion Passenger 和 Nginx 一切正常:
- 使用系统范围的 Ruby (v2.0) 安装(SELinux 处于强制模式)
- 使用
rbenv
已安装的 Ruby (v2.2.3)(SELinux 处于宽容模式) rbenv
运行以下命令后使用已安装的 Ruby (v2.2.3)(SELinux 处于强制模式):chcon -R --reference /bin /home/myuser/.rbenv/
请注意,我在配置更改之间重新启动了服务器以验证观察到的行为。
我觉得我本质上是通过chcon
更改包含rbenv
Ruby 版本的文件夹的安全上下文来绕过 SELinux,使其具有与该/bin
文件夹相同的安全上下文。chcon
以这种方式使用是否会产生任何意想不到的安全后果?
这可能超出了问题的范围,但是是否有正确的方法来设置安装在用户主目录中的 Ruby 解释器的安全上下文以与 Nginx 和 Phusion Passenger 一起使用?
答案1
SELinux 默认拒绝任何未明确允许的内容。当 SELinux 在许可模式下运行时,SELinux 会记录权限拒绝但不会强制执行(即 SELinux 不会阻止任何操作完成)。在强制模式下,SELinux 记录并强制拒绝权限(即 SELinux 阻止操作完成)。
使用chcon
本质上绕过 SELinux 并不会让您的系统比在宽容模式下使用 SELinux 更安全,因为强制模式下的 SELinux 仍然会拒绝对系统中您未接触过的所有其他部分进行操作chcon
。