我们有一个自动基线检查,如果权限/etc/shadow
未设置为 000,则会发出警报。
收到这些警报的工作人员已经开始质疑 000 的合理性,因为 root 可以在任何它想读写的地方读写(所有文件自动为 root 至少 600)但是 root 不能在没有执行权限集的情况下执行文件(没有root 的自动 700 文件权限)。
将/etc/shadow
权限设置为 000 是在许多基线中,例如官方 Red Hat GitHub 存储库中的 Ansible 剧本(用于 PCI DSS、CJIS、NIST、CCE)。
为什么/etc/shadow
应该是 000 而不是例如看似功能相同的 600 背后是否有起源故事?还是我对 Linux 对 root 用户的限制/许可程度的假设是错误的?
将权限设置为 000 背后的想法
/etc/shadow
是通过确保访问由DAC_OVERRIDE
功能控制来保护该文件不被守护程序访问,即使以 root 身份运行也是如此。从 Fedora 12 和 RHEL 6 开始,基于 Fedora 的系统运行守护程序而不使用DAC_OVERRIDE
,但授予DAC_OVERRIDE
管理员登录会话(这样更改对管理员是不可见的)。有关详细信息,请参阅较低的处理能力。
这依赖于 600 和 000 权限在功能上并不相同的事实:600 授予文件所有者读写权限,而 000 仅授予对具有该
DAC_OVERRIDE
功能的进程的访问权限。传统上,总是以 root 身份运行DAC_OVERRIDE
,但不一定如此。(SELinux 也可以用来限制 root 的能力,但这不是这里所涉及的。
/etc/shadow
确实有自己的 SELinux 上下文,提供额外的访问控制。)