ash*_*eyh 8 debian nginx systemd
nginx-common 包自带的systemd单元文件以root身份运行master进程,这让我很紧张。
我认为它以 root 身份运行的唯一原因是绑定端口 80,但作为 root 用户太过分了,所以我以普通用户身份运行它并赋予它CAP_NET_BIND_SERVICE
能力。
我已将单元文件调整为如下所示:
[Service]
Type=forking
PIDFile=/var/run/nginx/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=/usr/sbin/nginx -s quit
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
Capabilities=cap_net_bind_service+=ep
user=www-data
Run Code Online (Sandbox Code Playgroud)
这种方法有什么缺点吗?nginx 是否希望成为 root 用户?有没有更好的方法来锁定 nginx?我知道有些人喜欢 chroot 它,但这似乎很麻烦。
master 进程必须以 root 身份运行,否则 nginx 将无法绑定到端口 80,因为这是一个特权端口。
http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html
您应该确保工作进程使用不同的用户。可以在您的nginx.conf
.
归档时间: |
|
查看次数: |
1079 次 |
最近记录: |