关于nginx启动权限错误

在使用nginx -t检查nginx配置文件时出现这个错误:

$ /usr/local/nginx/sbin/nginx -t
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/nginx/conf/nginx.conf:2复制代码

nginx的所有者是root
我们都知道nginx的主进程需要使用root来运行,而子进程可以使用普通用户运行,
普通用户如果不使用sudo命令运行nginx时则需要获取SUID权限才能在nginx运行时将身份切换为root,否则就是用自己的身份来执行nginx,而恰巧在这个nginx.conf文件中设置了ssl的证书的放置位置在一些普通用户不能读取的位置或者一些普通用户不能读取的目录,所以出现了权限的错误.
解决的方法我总结了两种,一种是使用sudo来运行nginx,另一种是给nginx赋予SUID权限,让普通用户在执行nginx时将身份提升为nginx的所有者也就是root

1.使用sudo

$ sudo /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful复制代码

2.给nginx赋予SUID权限

$ sudo chmod u+s /usr/local/nginx/sbin/nginx
//或者$ sudo chmod 4755 /usr/local/nginx/sbin/nginx
$ ll /usr/local/nginx/sbin/nginx
-rwsr-xr-x 1 root root 8641260 Sep  7 14:33 /usr/local/nginx/sbin/nginx复制代码

但是由于SUID权限是linux中比较危险的一种程序,假设要执行的程序的所有者是root,那么任何非sudo用户都可以在运行这个程序的时候身份都变为了root,所以这个程序可以让任何人以root身份执行,有点心里慌慌.
还是用sudo执行好一些吧,至少只有在sudoers列表中的用户才能以root权限执行,还必须在命令前敲sudo来提醒一下自己,感觉安全性是提高了不少.

转载于:https://juejin.im/post/59c0c829f265da065476c5aa

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值