关键系统文件权限核查是做什么的
口令与认证相关文件的权限属于安全基线的必查项:/etc/passwd 需要所有人可读以便解析账户,口令哈希所在的 /etc/shadow 必须只允许 root 读取,/etc/gshadow、/etc/ssh/sshd_config、/etc/sudoers 同样不能被普通用户读取或写入。除权限位外,还要确认属主属组正确;对极少变更的文件可以加不可变位进一步防篡改。
基本信息
| 核查命令 | stat -c '%a %U:%G %n' 文件,或 ls -l |
|---|---|
| passwd 基线 | 644,属主 root:root |
| shadow 基线 | 000 或 600,属主 root:root,非 root 不可读 |
| sudoers | 440 或 400,必须用 visudo 编辑 |
| 不可变位 | chattr +i,改动前需 chattr -i 解除 |
典型使用场景
- 安全基线核查与等保测评:逐项核对认证文件权限是否被放宽
- 安全事件后确认是否有人改动过账户文件,配合完整性检查交叉验证
- 装完第三方软件后巡检:部分安装包会顺手改权限或归属,需要及时发现
- 批量基线脚本上线前核对误报:了解各发行版对 shadow 权限的传统差异
- 对高价值文件加不可变位,降低被批量替换账户信息的风险
- 审计变更:确认 sudoers 修改走的是 visudo 而非直接编辑
核查与修正
核查与修正
stat -c '%a %U:%G %n' /etc/passwd /etc/shadow /etc/sudoers # 一律核对权限与属主
ls -l /etc/group /etc/gshadow /etc/ssh/sshd_config
chmod 644 /etc/passwd # 所有人可读,仅 root 可写
chmod 000 /etc/shadow # 部分发行版用 000,600 亦被接受
chmod 640 /etc/gshadow
chmod 600 /etc/ssh/sshd_config
chattr +i /etc/passwd /etc/shadow # 加不可变位,变更前先解除
lsattr /etc/passwd /etc/shadow # 确认不可变位已生效关键文件权限基线
| 文件 | 建议权限 | 说明 |
|---|---|---|
| /etc/passwd | 644 | 所有用户可读,仅 root 可写 |
| /etc/shadow | 000 或 600 | 口令哈希,非 root 绝不可读 |
| /etc/group | 644 | 组信息,可读不可随意写 |
| /etc/gshadow | 640 或 000 | 组口令,仅管理员可读 |
| /etc/ssh/sshd_config | 600 | 含安全配置,禁止普通用户读取 |
| /etc/sudoers | 440 | 必须用 visudo 编辑并做语法检查 |
shadow 使用 000 还是 600 各发行版传统不同,通行核查口径只要求「非 root 用户不可读取」;核查脚本不要把某一数值写成硬性判据,避免产生大量误报。
加不可变位后,改口令、加用户、改 sudoers 等常规运维操作都会失败,属常见「权限正常但操作被拒」问题;交接文档必须写明解除命令与恢复流程。