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

在作业中,项目使用文件上传。 这个功能很常见。 当K     ai   Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件。 它是怎么发生的? 经过许多问题之后,事实证明这是由于Tomcat的配置所致!

正文:

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

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

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

 Linux系统中JAVA创建文件后权限不足应该如何解决_设计制作_存储技术  Linux系统中JAVA创建文件后权限不足应该如何解决_设计制作_存储技术

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

 Linux系统中JAVA创建文件后权限不足应该如何解决_设计制作_存储技术

于是根据文章提示,找到自己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,重新上传文件后,进行访问,图片正常访问成功!

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

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

16
51
0
70

相关资讯

  1. 1、小偷家族:从《无人知晓》到《小偷家族》,是枝裕和的变与不变3754
  2. 2、《爱情公寓3》唱响荧屏暑期档热恋三部曲开播4936
  3. 3、王晶导演第100部电影《十二金刚》竟有15位影帝,要搞事情?5037
  4. 4、屡败屡战,败出一片不一样的天空——《李宗伟:败者为王》2766
  5. 5、开心麻花回归大银幕!沈腾艾伦相聚《超能一家人》_电影3449
  6. 6、那些年扮演过小龙女的女星,贾玲负责搞笑,毛晓慧的最新版不期待1768
  7. 7、妮可携《摩纳哥王妃》来华对话杨澜避谈阿汤哥3810
  8. 8、有转机!休·杰克曼首度暗示:“金刚狼会回归,但不和死侍玩”3928
  9. 9、47岁演员海一天大婚,陈坤首次担任伴郎,颜值也太抢镜了560
  10. 10、日本有个痞子叫小栗旬,韩国有个痞子叫马东锡,中国的痞子叫啥?1426
全部评论(0)
我也有话说
0
收藏
点赞
顶部