由于生产安全要求,日常运维用户不能拥有管理员权限,需使用普通用户更改nginx配置、重新加载配置、查看日志等操作

适用于使用rpm安装的nginx,目前在centos7上使用正常

rpm或yum安装nginx

添加nginx安装源
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装nginx
yum install -y nginx
启动nginx和配置nginx开机启动
service nginx start && chkconfig nginx on

由于nginx需要使用的默认端口号是80,如果使用使用普通用户启动,只用使用1024以上的端口号,1024以内的端口号只能由root用户启动

使用rpm安装的nginx
默认配置文件在/etc/nginx
默认日志文件在/var/log/nginx
默认执行文件在/usr/sbin/nginx
nginx默认线程启动用户为nginx

创建普通用户和用户组
groupadd useradmin
useradd -g useradmin useradmin
passwd useradmin

方法1:

给与普通用户相应权限
chmod useradmin:useradmin /etc/nginx -R
chomd 777 /var/log/nginx
chomd 4755 /usr/sbin/nginx

之后普通用户即可可以执行
重新加载配置
/usr/sbin/nginx -s reload
修改配置文件
vim /etc/nginx/nginx.conf
查看日志文件
tailf /var/log/nginx/access.log

4755权限说明
chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。
为什么要设置4755 而不是 755?
假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

方法2:

nginx各个目录赋权useradmin用户

chown -R useradmin /var/log/nginx/
chown -R useradmin /etc/nginx/
chown -R useradmin /etc/nginx/conf.d/*
chown -R useradmin /usr/sbin/nginx
chown -R useradmin /var/cache/nginx
mkdir -p /var/run/nginx
chown -R useradmin /var/run/nginx

nginx配置修改pid文件路径且端口使用1024以上端口
vi /etc/nginx/nginx.conf
#pid /var/run/nginx.pid;
pid /home/useradmin/nginx.pid;

方法3:

所有用户都可以运行(因为是755权限,文件所有者:root,组所有者:root)

chown root:root nginx
chmod 755 nginx
chmod u+s nginx

方法4:

仅 root 用户和 reistlin 用户可以运行(因为是750权限,文件所有者:root,组所有者:www)

chown root:www nginx
chmod 750 nginx
chmod u+s nginx

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐