Tomcat 8.5版本文件上传后无权限访问的问题
之前在tomcat 7下文件上传后访问一直没问题,现在tomcat版本升到8.5,在测试文件http上传时,发现所传文件无法通过nginx访问了。
(Tomcat具体版本为8.5.11)
PS:tomcat通过root用户来启动。
在确定了nginx自身的没有配置问题之后,上linux服务器查看所传文件,发现其上传目录下代码自动创建的目录权限是750,所上传文件权限是640。
也就是说默认赋予的文件权限中其他用户的权限始终为0所导致。
默认权限与umask有关,因此怀疑是系统默认导致,但在查看系统默认配置(/etc/profile)后,发现默认配置没问题。
,文件夹权限;
,文件夹权限。
可见都有读取访问权限的。
在默认情况下,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官网文档及相关英文论坛里发现了踪迹。
最新文章
- CentOS7使用firewalld打开关闭防火墙与端口
- ng-option指令使用记录,设置默认值需要注意
- 获取某地的经纬度 &;&; 通过经纬度获取相应的地理位置
- HDU 4462 Scaring the Birds (暴力求解,二进制法)
- linux shell编程学习笔记(二) --- grep命令
- 关于http客户端常见错误";警告:Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is rec";
- http协议和web本质
- chapter 2: Representing and manipulating information
- js中得call()方法和apply()方法的用法
- 【取对数+科学计数法】【HDU1060】 N^N
- 「OC」 封装
- Starting a Gradle Daemon, 5 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details FAILURE: Build failed with an exception. * What went wrong: Could not dispatch
- 47.Odoo产品分析 (五) – 定制板块(2) – 为业务自定义odoo(2)
- java 常用工具整理
- 使用vue.js 引用阿里图标 --无法显示(报错)
- opencv学习之路(22)、轮廓查找与绘制(一)
- android的学习网站
- githup地址
- SQL的其他用法
- 写了一个hiero中添加自定义Token的脚本