Linux系统中JAVA创建文件后权限不足应该如何解决

在作业中,项目使用文件上传。 这个功能很常见。 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件。 它是怎么发生的? 经过许多问题之后,事实证明这是由于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,重新上传文件后,进行访问,图片正常访问成功!

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

权限变化后,就可以正常访问了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 操作系统课程设计基于Java实现的仿真Linux系统源码+项目说明文档.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 项目简介 1. 本工程根据南京农业大学人工智能学院 JHY教授 操作系统课程设计相关选题设计(难度系数5) 2. 本工程全部采用Java语言设计,仿真实现了Linux系统的进程管理、作业管理、调度管理、设备管理、文件管理等内容 3. 本工程所有源代码在30天内完成,时间较为仓促,设计不当之处还请不吝赐教 运行与安装 1. clone 或 pull 所有文件 2. 使用IDEA(推荐) 或 Eclipse 新建Java工程(JDK 版本 >= 1.8) 3. 删除工程下默认生成的src目录 4. 将文件解压后的/src,/static/,xxxxx-jobs-input.txt文件全部复制到工程根目录下 5. 使用IDEA 或 Eclipse 内的运行功能开始运行,或自行生成.jar可执行文件等 使用与说明 1. 首次使用,需删除xxxxx-jobs-input.txt文件下除首行外所有内容,切记第一行末尾没有换行符! 2. 本工程提供的可视化操作界面、文件系统命令行、文件系统视窗,用户基本能够自行探索功能 3. 文件系统命令行提供如下命令(只能英文输入法下使用) + ls [-l] 显示当前目录下的文件信息 -l 显示详细信息 + cd dir 切换当前工作目录 dir 指定目录绝对或相对路径 + mkdir dir [-p] 当前目录下创建目录 dir 指定目录绝对或相对路径 -p 递归创建 + touch file/dir 当前目录下创建一个新的文件;文件已存在,则更新文件的修改时间 file/dir 文件或目录路径 + rmdir dir -p 当前目录下删除目录 dir 目录路径 -p 当子目录被删除后使其也成为空目录,则一并删除 + rm file/dir [-r] 当前目录下删除文件或目录 file/dir 文件或目录路径 -r 递归删除,参数必须是目录 + close file/dir 关闭文件或目录 file/dir 文件或目录路径 + cat file 显示文件内容 file 文件路径 + vim file 修改文件内容 file 文件路径 + link old new 链接到一个已存在文件 old 已存在文件的目录 new 新文件目录 + chmod mode path [-r] 改变某个文件或目录的权限 mode 权限模式 000-777 path 文件或目录路径 -r 递归修改,一并修改目录及其以下所有子文件的权限 + explorer 打开资源管理器 4. 命令行输入explorer命令,进入更加友好的视窗风格界面,提供以下功能(鼠标点击操作时请尽量减少鼠标移动) + 鼠标左键单击目录,进入相关目录。 + 鼠标左键单击文件,查看文件信息。 + 鼠标左键双击文件,打开文件或目录。 + 鼠标右键单机文件,进行打

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值