核心是让配置文件只能被root读写、Nginx进程可读:/etc/nginx目录权限755,.conf文件644,auth_basic_user_file为640;创建无登录专用用户nginx并配置user nginx nginx;,日志与pid目录权限700,二进制文件755,验证sudo -u nginx cat成功、-u nobody失败且nginx -t通过。

核心是让配置文件只能被 root 读写、Nginx 进程可读,杜绝普通用户或攻击者篡改或窃取配置。
创建专用运行用户并绑定权限
不使用 root 或 nobody 启动 Nginx,而是新建一个无登录能力的专用用户:
- 执行
useradd -r -s /sbin/nologin -M nginx创建系统级用户 nginx - 在
nginx.conf全局块顶部明确指定:user nginx nginx; - 确保该用户不在
/etc/sudoers或/etc/sudoers.d/中有提权配置
收紧配置文件及目录权限
配置文件本身和所在目录必须严格限权,防止越权读取(如泄露 SSL 私钥、认证凭据等):
- 配置目录(如
/etc/nginx):属主 root,属组 root,权限755 - 所有
.conf文件(含主配置和 include 的子配置):权限统一设为644,即 root 可读写、nginx 用户可读、其他用户不可访问 - 若使用了
auth_basic_user_file(如.htpasswd),该文件权限必须为640,属主 root,属组 nginx
隔离日志与运行时文件权限
避免因日志或 pid 目录权限过宽,间接导致配置泄露或进程劫持:
- 日志目录(如
/var/log/nginx):属主 nginx,属组 nginx,权限700(仅 nginx 用户可访问) - pid 文件目录(如
/var/run/nginx):同样设为700,属主 nginx,属组 nginx - Nginx 二进制文件(如
/usr/sbin/nginx):属主 root,属组 root,权限755,禁止非 root 修改
验证权限是否生效
加固后务必检查关键路径的实际权限状态:
- 运行
ls -l /etc/nginx/nginx.conf,确认输出类似-rw-r--r-- 1 root root ... - 切换到 nginx 用户测试读取:
sudo -u nginx cat /etc/nginx/nginx.conf应成功;sudo -u nobody cat ...应失败 - 用
nginx -t验证配置仍可被正常加载,避免因权限问题导致启动失败


















