当前位置:   article > 正文

关于nginx启动权限错误

./nginx 无权限 only if the master process

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

  1. $ /usr/local/nginx/sbin/nginx -t
  2. 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

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

2.给nginx赋予SUID权限

  1. $ sudo chmod u+s /usr/local/nginx/sbin/nginx
  2. //或者$ sudo chmod 4755 /usr/local/nginx/sbin/nginx
  3. $ ll /usr/local/nginx/sbin/nginx
  4. -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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/179350
推荐阅读
相关标签
  

闽ICP备14008679号