教您解决JAVA在Linux系统中创建文件后权限不足的问题
在家庭作业中,项目使用文件上传。此功能很常见。
当Kai Ge今天更改其官方帐户时,他遇到了一个问题,他无法访问下载的文件,也无法通过浏览器访问该文件。它是如何发生的?经过许多问题,事实证明这是由于Tomcat的配置造成的!文本:最近,在Linux系统中通过tomcat部署项目后,该程序具有上传文件的功能。
无法查看上载的文件(由createNewFile创建)。后来发现文件的权限为-rw-r -----,文件的所有者为root,因此只有所有者才具有root用户组的读取权限。
通过研究发现,Linux使用umask变量来控制所创建文件的默认权限。我们知道在Linux系统中,创建文件的最高权限是666,创建文件夹的最高权限是777。
系统使用变量umask来控制创建文件的权限。如果umask的值为022,则创建的文件许可权为644,即,该许可权由最高许可权减去umask的值来控制。
首先让我们看一下Kai Ge上传后的文件权限:我们可以看到,文件上传后,该文件属于root。但是无法访问。
当Kai Ge手动将权限设置为777时,浏览器可以访问它。 。
但是,当通过程序上传时,文件的所有者在上传后也是root用户,但是权限变为640。并且不能通过ftp访问此640权限。
Kaige图片域名指向图片服务器的根目录。从这个角度来看,这应该是由于权限不足引起的。
于是开始了各种尝试。经过分析,我想这可能是Tomcat自己的幽灵吗?因此,在搜索之后,我看到了一篇文章,但是Linux系统umask的默认值为0022,这意味着创建的文件应具有644的许可权,而上载的文件具有640的许可权。
后来,通过查询Tomcat,我发现从tomcat8开始,catalina.sh文件中包含以下代码行。因此,根据文章提示,我找到了我的tomcat的catalina.sh文件,该文件大约286行,如下图所示:我确实找到了Tomcat配置:#设置UMASK,除非它已被覆盖[- z“ $ UMASK” ]; then#如果它是0027,则在文件上传后,权限是640,并且无法访问图像域名。
需要修改#UMASK =“ 0027” fiumask $ UMASK因此,根据文章,将其果断地修改为“ 0000”:保存文件,重新启动tomcat,重新上传文件,然后访问,图片正常访问成功!来看看修改后上传的文件权限:权限更改后,您可以正常访问它们。明天,您可以在自己的官方帐户Kai兄弟的背景下编辑文章。
无需在官方帐户的官方后台进行编辑。
