执行 make install 时提示“Permission denied”本质是当前用户无权写入目标安装路径,需用 sudo 执行或改用用户可写路径(如 --prefix=$HOME/nginx)并确保子目录权限一致。
执行 make install 时提示“Permission denied”,本质是当前用户没有写入目标安装路径的权限,不是 Nginx 配置或运行阶段的问题,而是安装过程中的文件系统权限问题。
默认情况下,make install 会将二进制、配置、日志等文件复制到 --prefix 指定的目录(如 /usr/local/nginx 或 /usr/local)。这些路径通常由 root 创建,普通用户无权写入。
ls -ld /usr/local/nginx 查看目录属主和权限;若显示 drwxr-xr-x 2 root root,说明普通用户无法写入/usr/local、/opt/nginx、/etc/nginx 等系统级目录sudo 执行,或改用当前用户有权限的路径(如 --prefix=$HOME/nginx)即使 --prefix 可写,其下的子目录(如 logs/、sbin/、conf/)也可能因父目录权限继承受限而失败。
--prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx 中 /usr/sbin 是 root-only 目录,普通用户无法写入--prefix=$HOME/nginx --conf-path=$HOME/nginx/conf/nginx.conf
./configure --help 查看所有可定制路径,避免混用系统保护路径make 成功但 make install 失败时,可跳过自动安装,直接复制已编译好的文件。
make 后,二进制文件已在 objs/nginx 生成;模块在 objs/*.so
mkdir -p $HOME/nginx/{sbin,conf,logs}
cp objs/nginx $HOME/nginx/sbin/,cp -r conf/ $HOME/nginx/
用 sudo make install 虽能成功,但可能带来后续隐患:
sudo
sudo 对特定路径(如 /var/run)的写入,即使加了 sudo 仍报错PATH 或软链接调用,避免权限纠缠