有关Tomcat 8.5版本文件上传后无权限访问的问题

在Tomcat8.5中遇到文件上传后无法通过nginx访问的问题,经过排查发现是由于文件权限设置不当导致。默认情况下,上传文件的权限被设置为umask027,更改该设置后问题得到解决。

之前在tomcat 7下文件上传后访问一直没问题,现在tomcat版本升到8.5,在测试文件http上传时,发现所传文件无法通过nginx访问了。(Tomcat具体版本为8.5.11)

输入图片说明

PS:tomcat通过root用户来启动。

在确定了nginx自身的没有配置问题之后,上Linux服务器查看所传文件,发现其上传目录下代码自动创建的目录权限是750,所上传文件权限是640。也就是说默认赋予的文件权限中其他用户的权限始终为0所导致。 默认权限与umask有关,因此怀疑是系统默认导致,但在查看系统默认配置(/etc/profile)后,发现默认配置没问题。

输入图片说明

umask 002 对应文件权限664,文件夹权限775;umask 022对应文件权限644,文件夹权限755。可见都有读取访问权限的。在默认情况下,tomcat所建目录及文件应该用到的是umask 022,但为何实际情况并非如此呢? (按照结果看tomcat 8.5下上传文件的默认权限为umask 027) 问题到这里,排除下来可能的原因并不多了,因为之前在其他机器上使用tomcat 7的时候是上传后访问没问题的,所以又拿tomcat 7在这台服务器上测试了一下,以判断是不是tomcat 8.5自身的问题。结果发现,在同台服务器上tomcat 7上传后访问没问题。最终定位为题是在tomcat 8.5上。 接下来,抱着试一试的心态,在tomcat 8.5的catalina.sh中搜索 umask关键字(因为我始终有个直觉这和默认权限设置有关,结果证实这次的判断是准确的),很庆幸,原因立马就定位到了。

输入图片说明

UMASK=”0027”出现了!在按照目前的功能需求,将其改为UMASK=”0022”并重启tomcat 8.5后,文件上传后访问恢复正常。 至此,问题解决。期间,不是没想过通过百度或google解决问题,但是因为tomcat 8.5版本比较新,相关问题的中文文档就没有搜到。英文文档也是在定位了tomcat 8.5问题后搜索关键词tomcat8.5 umask后在tomcat官网文档及相关英文论坛里发现了踪迹。

官方文档链接: https://tomcat.apache.org/tomcat-8.5-doc/security-howto.html

关于umask的介绍:http://cn.linux.vbird.org/linux_basic/0220filemanager_4.php#umask

转载于:https://my.oschina.net/ijustdoit/blog/872250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值