/etc/shadow文件必须设为400或640权限、启用chattr +i不可变属性,并配合selinux上下文同步与root账户管控;仅chmod不足以防御提权篡改,需权限控制、不可变属性和访问隔离三者结合。

/etc/shadow 文件必须锁定读写权限,且不能依赖“仅靠 chmod”就认为安全。真正有效的锁定是权限控制 + 不可变属性 + 访问隔离三者结合。
确认当前状态再操作
先看它现在是不是已经暴露:
- 运行 ls -l /etc/shadow —— 正常应为
-rw-r-----(640)或-r--------(400),绝不能是 644、666 或 777 - 运行 lsattr /etc/shadow —— 若无输出或不含
i,说明尚未启用不可变保护 - 用普通用户执行 cat /etc/shadow —— 应提示
Permission denied;若能读出内容,风险已存在
设置最小必要权限
权限不是越“高”越安全,而是越“精准”越可靠:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 推荐设为 400(
-r--------):只允许 root 读取,连写权限都禁掉——因为 shadow 文件本就不该被直接编辑 - 若系统依赖 PAM 模块需 group 读取(如某些 LDAP 或 sssd 配置),可设为 640,但必须确保属组是
shadow:sudo chown root:shadow /etc/shadow && sudo chmod 640 /etc/shadow - 无论选哪种,都要清除 setuid/setgid/sticky 位:
sudo chmod u-s,g-s,o-t /etc/shadow
加不可变属性(chattr +i)
chmod 只防普通用户,chattr +i 才防 root 级篡改:
- 执行
sudo chattr +i /etc/shadow后,连 root 也无法修改、删除、重命名该文件 - 验证是否生效:
lsattr /etc/shadow应显示类似----i---------e---(含i即成功) - 注意:启用后
passwd、usermod等命令会失败,日常运维中建议在系统稳定期启用,变更前先chattr -i解锁,操作完立即重锁
配套防护不能少
单点加固容易绕过,需同步做几件事:
- 检查是否有 UID 0 的非 root 用户:
awk -F: '($3 == 0) { print $1 }' /etc/passwd—— 输出只应有root - 禁用 root 远程 SSH 登录:修改
/etc/ssh/sshd_config中PermitRootLogin no并重启 sshd - 同步 SELinux 上下文(如启用):
sudo restorecon /etc/shadow,避免因上下文异常导致权限失效 - 备份原始文件:
sudo cp /etc/shadow /etc/shadow.bak,加固前留底










