源码安装Nginx时,目录组权限不由configure直接设置,而是通过三步协同控制:一、编译前创建专用系统组(如nginx)并添加无登录用户;二、configure仅用--prefix指定根目录,不支持--user/--group;三、安装后执行chown -R nginx:nginx和chmod 750锁定权限,并在nginx.conf中用user指令明确worker进程身份。
源码安装 Nginx 时,安装目录本身不靠 configure 参数直接设“组权限”,而是靠三步协同控制:编译时指定根路径(--prefix)、安装后调整目录属主与权限、再通过 nginx.conf 的 user 指令限定工作进程身份。单纯设“组权限”不能防篡改,关键在于隔离+最小权限+所有权明确。
先建立仅用于 Nginx 运行的系统组(如 nginx 或 www-data),避免使用 wheel、root 等高权限组:
sudo groupadd -r nginx
sudo useradd -r -g nginx -s /sbin/nologin nginx
getent group nginx 和 id nginx
安装目录(如 /usr/local/nginx)必须提前存在,且属主为构建者(如 root),但要预留后续 chown 空间:
./configure --prefix=/usr/local/nginx ...
--user 或 --group(Nginx 最新 configure 不支持这两个参数,加了会报错或被忽略)/usr/local/nginx 目录存在且 root 可写:sudo mkdir -p /usr/local/nginx && sudo chown root:root /usr/local/nginx
make install 后,所有子目录(conf、logs、html、sbin)默认属 root。必须手动降权,只允许 nginx 用户及其组访问:
sudo chown -R nginx:nginx /usr/local/nginx
sudo chmod -R 750 /usr/local/nginx→ 这样只有 owner(nginx)和 group(nginx)可读写执行,others 仅可读(对 conf 目录尤其重要)
sudo chmod 750 /usr/local/nginx/logs /usr/local/nginx/client_body_temp
编辑 /usr/local/nginx/conf/nginx.conf,在 events 块之前添加:
user nginx nginx; —— 显式声明 worker 进程以 nginx 用户 + nginx 组运行/usr/local/nginx/sbin/nginx -t;启动后检查进程:ps aux | grep nginx,worker 应显示 UID/GID 均为 nginx