nginx转发请求403的原因 nginx403错误怎么解决( 二 )


控制台执行跟Jenkins执行有什么区别?账号不一样啊 , 遂把jenkins项目、tomcat文件都改成属主属组都为root重新执行 , 发现还是一样的结果 。
再想想还有哪里不对 , 这个css文件是程序生成的 , 生成的文件权限不对 , umask!这个词突然蹦出来 , 对 , 应该就是umask , 他控制了生成新文件的权限 。
简单介绍下什么是umask:
umask值用来设置用户在创建文件时的默认权限 , 跟设置文件权限命令chmod是相对的 , 总共四位 , 不过我们通常只用后三位 , 同样对应属主属组以及其他用户的权限 , 例如你的账号umask值为0022(可直接通过umask命令查看) 。
此时你创建的文件权限默认为644(文件初始的最高权限为666 , umask设置为022 , 那么最终的权限为:6-0,6-2,6-2=644 。
当然有人说文件的权限最高是777 , 是的没错 , 但我们说的是默认权限 , 默认权限是由umask决定的 , umask设置为000时文件的权限就是666 , 文件夹权限777) , 此时创建的目录权限为755(目录的最高权限为777 , umask设置为022 , 那么最终的权限为7-0,7-2,7-2=755) 。
查了root用户的umask、jenkins用户的umask , 都为0022 , 没问题呀 , 并且登录这两个账号创建了新文件权限也都正常 , 就剩下一种情况了Jenkins!
Jenkins没有地方可以给配置UMASK , Jenkins跑在tomcat容器里 , 老版本的varian也有相似的处理逻辑一直没问题 , 本次升级了tomcat8 , 难道tomcat8更新了UMASK?半信半疑的看了下 , 果然!tomcat8的umask默认改成了0027 , 麻溜的改成了0022 , 问题顺利解决!
说明:本文转载自“运维咖啡吧”公众号 , 点击查看原文 。
2021年5月14-15 , GOPS 2021 · 深圳站 , 早鸟票限时开启~

猜你喜欢