apt 安装好nginx后如何非root用户启动?
useradd -M -s /sbin/nologin nginx
已经改了权限 chmod 755
所有有关nginx的文件也已经修改完用户组,
chown -R nginx /usr/sbin/nginx
chown -R nginx /etc/nginx/
使用命令行启动
sudo -u nginx /usr/sbin/nginx -c /etc/nginx/nginx.conf
报错
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
后来Google了一下,修改了 nginx.conf 文件 添加了 user nginx;
启动发现, master process进程是root用户启动,worker process是nginx用户启动
请问如何在不修改端口80的情况下,master 进程修改为nginx进程启动呢?
在 UNIX 和类 UNIX 系统中,普通用户(非 root 用户)默认情况下无法绑定到 1024 以下的端口,而端口 80 正是这类端口之一。这就是为什么你作为 nginx 用户尝试启动 Nginx 时会遇到权限问题。
当 Nginx 以 root 用户启动时,它的主进程(master process)将运行在 root 用户下,而工作进程(worker processes)可以配置为以非 root 用户(比如 nginx 用户)运行。这是一种常见的做法,可以提高安全性,因为工作进程处理大多数的请求和操作。
要以非 root 用户运行 Nginx 的主进程,同时在不更改端口号的情况下运行,有几种方法:
1.使用 setcap 命令给 Nginx 二进制文件赋予特权:
2.使用端口重定向:
3.使用认证绑定服务:
在大多数情况下,第一种方法(使用 setcap)是最直接和最常用的方法。不过,请注意,给予二进制文件额外的能力可能会带来安全风险。在进行这样的更改之前,请确保了解可能的安全影响,并在一个受管控和安全的环境中操作。
—— 来自GPT4
顶一下
无法 Linux下1024以下的端口必须有root权限才能监听
@Sh1zuku #2 那只能是master 进程root用户worker进程非root用户启动了
@Tiga #4 尝试过这个
方法,无效
为啥不让 nginx 以 root 启动()
@Hantong #6 甲方运维部门要求
@MadisonHart #7 甲方要求啊那没事了() 我在想如果是安全着想不应该扔 Docker 隔离开么...
@Tiga #4
+鸡腿
@MadisonHart #5 放弃80,用高位端口