先看现象。安全扫描报告里出现「私钥文件可被其他用户读取」,路径是 /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 比事后整改便宜。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189