Tomcat 8以上版本文件上传后无权限访问的问题

之前在tomcat 7下文件上传后访问一直没问题,现在tomcat版本升到8.5,在测试文件http上传时,发现所传文件无法通过nginx访问了:报错 403 forbidden
反复确定nginx配置没有问题,上服务器查看了一下文件,发现上传目录下自动创建的目录权限750,文件权限640,也即:默认赋予的文件权限中其他用户的权限始终为0。
因此怀疑是默认的环境变量里umask被改了,然而cat /etc/profile后发现:

if [ $UID -gt 199 ] && [ "id -gn" = "id -un" ]; then
umask 002
else
umask 022
fi

是没有问题的。那么,就只能说tomcat的默认umask有问题,vim tomcat8.5/bin/catalina.sh,搜索umask关键字,发现:

if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK

ok,破案了。
经检查,tomcat7时代是没有这个设定的,因此应该是tomcat出于安全性考虑增加的,但这个真是造成了困扰。
解决办法:把umask的0027改为0022即可,即:保证目录755文件644的权限就可以避免nginx以匿名用户访问(use nobody)时发生403 forbidden的问题

你可能感兴趣的:(Tomcat 8以上版本文件上传后无权限访问的问题)