执行 make install 报“目标目录无权限”是因普通用户对安装路径(如/usr/local/nginx)无写入权,解决方法:①切换root用户执行;②改用家目录等无需提权路径重新configure安装。

当执行 make install 报错提示“目标目录无权限”,本质是当前用户(通常是普通用户)对 Nginx 的安装路径(如 /usr/local/nginx)没有写入权限,而非 Nginx 进程运行时的权限问题。这类错误发生在编译安装阶段,与后续服务启动或访问无关。
确认目标安装路径及当前用户权限
默认情况下,./configure 会将 --prefix 设为 /usr/local/nginx。执行以下命令检查该路径归属和权限:
-
ls -ld /usr/local/nginx(若目录已存在) -
ls -ld /usr/local(检查父目录是否允许创建子目录) -
whoami查看当前执行make install的用户
常见情况是:/usr/local 属于 root:root,权限为 drwxr-xr-x,普通用户无法在其下新建目录。
解决方法:用 root 权限执行或换安装路径
不推荐直接用 sudo make install(可能引发权限混乱),更稳妥的方式有两种:
-
方案一(推荐):切换到 root 用户后操作
执行sudo su -,再运行make install。这样所有生成文件归属清晰,且符合 Linux 系统惯例。 -
方案二:指定非系统路径,避免权限冲突
重新 configure,例如:./configure --prefix=/home/yourname/nginx,之后make && make install全程无需提权,所有文件都在用户家目录下。
验证安装结果是否完整
安装完成后,检查关键文件是否存在且可访问:
-
ls -l /usr/local/nginx/sbin/nginx(主程序是否生成) -
ls -l /usr/local/nginx/conf/nginx.conf(配置文件是否写入) -
ls -l /usr/local/nginx/html/index.html(默认首页是否部署)
如果某个目录为空或报 No such file or directory,说明 make install 实际未成功写入,需回溯前一步是否真正获得了目标路径的写权限。
补充:避免后续启动权限问题
即使 make install 成功,若用普通用户启动 Nginx,仍可能因监听低端端口(如 80)或访问日志目录失败而报错。建议:
- 启动前确认
nginx.conf中user指令设置合理(如user nobody;) - 确保日志路径(
error_log、access_log)所在目录对运行用户可写 - 监听 80/443 端口需 root 启动;如不想用 root,可改用 8080 等高位端口测试


















