1、使用springmvc、tomcat、linux,上传文件后,该文件无访问权限。
tomcat版本发生在8.5以上
tomcat7、tomcat8.0无此现象,tomcat8.5、tomcat9都有次现象
2、原因
tomcat出于安全原因,更改了用户文件目录权限。官方地址(https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html),修改地址中对应的版本号即可查看各种版本中的安全配置,找到Non-Tomcat settings标题查看
7.0
8.0
8.5
9.0
关键字 umask
umask:umask是“用户文件创建模式掩码”的缩写,是一个四位的八进制数值。用来确定一个新创建文件的权限。每个进程都从父进程那里继承了自己的umask。一般该命令会在.bashrc,.profile,.cshrc或是/etc/profile及/etc/bashrc中。
计算umask值最简单的方法是记住:umask值中的2屏蔽了写权限,而7屏蔽了读,写及执行权限。
8.5以后的版本使用的是umask=0027,屏蔽了用户读的权限,故api上传文件后,用户无法访问该文件。
3、解决方案
找到tomcat的bin目录下的catalina.sh 文件,大概260行附近,修改UMASK的值为0022,即
UMASK="0027" 改为 UMASK="0022"
修改完成后,重启tomcat