先看现象。安全扫描报告里出现「私钥文件可被其他用户读取」,路径是 /etc/nginx/ssl/example.key,权限 644,站点本身访问正常,但合规检查一直不过。
真正麻烦的地方在于,几个原因的现象几乎一样。部署脚本用 cp 复制文件,继承了源文件的宽松权限。另一种情况是私钥和证书放在同一个目录,目录权限也是 755。
少数情况下是容器镜像里打包了私钥,运行时权限无法收紧。
不容易想到的是,备份脚本把私钥同步到了可读的共享目录。
动手时先确认私钥文件与目录的实际权限
stat -c '%a %U:%G %n' /etc/nginx/ssl/example.key /etc/nginx/ssl
收紧到仅 root 可读
chmod 600 /etc/nginx/ssl/example.key && chown root:root /etc/nginx/ssl/example.key
随后确认 Nginx worker 仍能正常加载
nginx -t && nginx -s reload
末了找出其他位置的私钥副本
find / -name '*.key' -perm -o+r 2>/dev/null | head
恢复的判定其实很直接。私钥权限变成 600 且属主为 root,Nginx 重载成功,扫描报告里这条高危项消失。
提醒一点。权限问题不影响访问,只影响合规和泄露风险,部署脚本里加一步 chmod 比事后整改便宜。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
