NGINX---temp相关目录属主被篡改成nobody

一、背景

某天生产上突然有大量交易报错,一步一步查询下来,最终发现nginx的缓存temp目录的属主被篡改成了nobody,应用用户没有权限读取导致nginx的交易报错。

二、原因

某一个巡检程序脚本是用root权限执行的,脚本中含有nginx -t 命令,当使用root权限执行nginx -t 命令的时候会导致temp目录权限被修改。

why??? 为什么会这样

三、场景复现

我之前在做nginx镜像的时候,发现如果编译的时候不指定用户和属组,在启动镜像的时候会无法启动,因为有些目录没有读取权限,导致启动报错,就想到会不会是因为编译的时候没有指定用户和属组,我就在测试环境重新编译复现了一下,果然是这个原因。具体如何编译安装请看我的另一篇blog nginx编译安装

四、如何避免

1、当编译的时候需要指定 --user --group 为安装的用户目录,否则就会使用默认用户nobody,当使用root权限执行nginx -t 的时候,相关模块temp目录的属主会更改为nobody;

2、nginx.conf 文件中的user指令只有使用root权限运行的时候才会生效 ,即nginx -s reload 命令必须root权限执行这样user指令才会生效,否则会有警告;

3、当nginx.conf文件中的user指令制定之后,且需要指定为应用用户,这样即使使用root权限执行nginx -t 相关模块temp目录的属主也不会更改为noboay;如果指定的用户是非应用用户,即随意指定,当使用root权限执行nginx -t 后,相关模块temp目录的属组会更改为nobody;

4、其他用户,即使有对应的 执行nginx -t命令的权限,相关模块temp目录的属组也不会更改为nobody;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值