JAVA生成的文件到Linux系统没有公共读权限

图片到服务器只有640(公共读)的权限?

最近在处理一个小程序项目,发现发送出去的图片在服务中是存在,而上传后的却无法查看文件(通过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文件,我这边大概是在293行左右
在这里插入图片描述
刚开始时这边的UMASK是0027的
如果是0027的话,文件上传后,权限640,图片域名访问不到。需要修改

我这边是改成0022,这个是已经存在公共读的权限的,当然各位大佬也可以改成0000,这个应该是生出最大权限的
在这里插入图片描述
保存文件,重启tomcat !!!
保存文件,重启tomcat !!!
保存文件,重启tomcat !!!

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

第一次自写,算是自创吧,有问题的地方,欢迎各位大佬指导

我是从这位大佬中受到启发的,点击即可跳转

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值