趣文网 > 作文大全

Linux系统中JAVA创建文件后权限不足的问题 无法设置权限的问题

2020-12-31 11:40:01
相关推荐

前言:

在工作中,项目使用到文件上传,这个功能是很常见的吧。今天,凯哥修改自己的公众号的时候,遇到了一个问题:那就是上传后的文件访问不到,使用浏览器访问不到了。怎么办呢?经过多次查询,发现竟然是因为tomcat的配置原因!

正文:

最近在Linux系统中通过tomcat部署项目后,由于程序有上传文件功能。而上传后的却无法查看文件(通过createNewFile创建)。后来发现文件的权限为-rw-r-----,而文件的拥有者是root,这样就只有拥有者有root用户组的拥有读取权限。

通过研究发现,Linux通过umask变量来控制创建文件的默认权限问题。我们知道在Linux系统规定,创建文件的最高权限为666,而创建文件夹的最高权限为777,系统通过变量umask来控制创建文件的权限问题。如果当umask的值为022时,则创建的文件权限为644,即权限是通过最高权限减去umask的值来控制的。

先来看看,凯哥上传后文档的权限:

我们可以看到,当文件上传后,文件多所属者是root.但是访问不了,凯哥手动设置权限为777的时候,浏览器就可以访问到了。但是通过程序上传的时候,文件上传后所属者也是root,但是权限变成了640.而这个640权限,通过ftp是访问不到的。凯哥图片域名指向了图片服务器的根目录。这样来看,应该是权限不够导致的。于是开始各种尝试。分析后,想,会不会是tomcat自己搞的鬼呢?于是,搜索后,看到一篇文章,但Linux系统umask的默认值是0022,也就是说创建的文件应该是644的权限,而上传的文件却是640的权限。后来通过对查询Tomcat发现从tomcat8开始,catalina.sh文件中有下面几行代码

于是根据文章提示,找到自己tomcat的catalina.sh文件,大概在286行左右,如下图:

一看,确实发现,tomcat的配置:

# Set UMASK unless it has been overridden

if [ -z "$UMASK" ]; then

#如果是0027的话,文件上传后,权限640,图片域名访问不到。需要修改

#UMASK="0027"

fi

umask $UMASK

于是,根据文章,果断修改成“0000”:

保存文件,重启tomcat,重新上传文件后,进行访问,图片正常访问成功!

来看看,修改后,上传文件的权限:

权限变化后,就可以正常访问了。明天,就可以在凯哥,自己的公众号后台,编辑文章了。不用到公众号官方后台编辑了。开心!~

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

我真后悔作文400字 那个美好的瞬间作文 初中生英语作文大全 小学生扫黑除恶作文 我是什么迷作文500字 期望作文800字 四年级写事作文 我赢了作文 高职高考作文题目 我爱夏季初中作文 家乡的田野作文 做好人好事的作文 一次旅行英语作文 作文番茄炒鸡蛋 乡下人家作文400字 美丽家乡作文400字 英语作文100词左右高中 走出困境作文800字 写人记事作文400 运动的英文作文 食品安全作文600 学会放手作文800字 梦的作文怎么写 生活需要作文 一句话的力量作文600字 第一次坐动车作文 七年级写景作文 我喜欢跑步作文100字 乐趣作文600 鱼的天堂作文