记一次诡异的故障排查经历

记一次诡异的故障排查经历

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

文章描述了一次故障排查,因nginx返回403错误,最终发现是Jenkins的umask设置导致文件权限不正确。修改tomcat8的umask后,问题得到解决。

🎯

关键要点

  • 故障排查因nginx返回403错误,问题源于文件权限不正确。
  • Jenkins调用发布程序varian,生成Docker镜像并上传。
  • 新环境使用Debian8,Python3.4,JDK1.8和Jenkins2.134。
  • nginx返回403的常见原因包括IP不在白名单、目录禁止列出、文件权限不足等。
  • 发现css文件权限为root,导致nginx无法读取,修改权限为644后问题解决。
  • 通过控制台执行脚本权限正常,但通过Jenkins执行权限不对,怀疑是umask设置问题。
  • umask控制新文件的默认权限,Jenkins在tomcat8中默认umask为0027,需改为0022。
  • 最终通过修改tomcat8的umask设置解决了文件权限问题。

延伸问答

nginx返回403错误的常见原因有哪些?

nginx返回403错误的常见原因包括IP不在白名单、目录禁止列出、文件权限不足等。

如何解决nginx的403错误?

可以通过修改文件权限,例如将css文件的权限改为644,使nginx能够读取文件,从而解决403错误。

umask是什么,它如何影响文件权限?

umask是用来设置用户在创建文件时的默认权限的值,影响新文件的权限设置。

为什么通过Jenkins执行脚本时文件权限不正确?

因为Jenkins在tomcat8中默认的umask设置为0027,导致生成的文件权限不足。

如何修改tomcat8的umask设置?

可以通过编辑tomcat的catalina.sh文件,将UMASK值改为0022来修改tomcat8的umask设置。

在故障排查中,如何确认文件权限问题?

可以通过检查文件的属主和权限设置,确认nginx服务用户是否有读取权限来判断文件权限问题。

➡️

继续阅读