JAVA在Linux系统中创建文件后如何解决权限不足
在家庭作业中,项目使用文件上传。
此功能很常见。
当Kai Ge今天更改其官方帐户时,他遇到了一个问题,他无法访问下载的文件,也无法通过浏览器访问该文件。
它怎么发生的?经过许多问题,事实证明这是由于Tomcat的配置造成的!正文:最近,在Linux系统中通过tomcat部署项目后,该程序具有上传文件的功能。
无法查看上载的文件(由createNewFile创建)。
后来发现文件的权限为-rw-r -----,文件的所有者为root,因此只有所有者才具有root用户组的读取权限。
通过研究发现,Linux使用umask变量来控制所创建文件的默认权限。
我们知道在Linux系统中,创建文件的最高权限是666,创建文件夹的最高权限是777。
系统使用变量umask来控制创建文件的权限。
如果umask的值为022,则创建的文件许可权为644,即,该许可权由最高许可权减去umask的值来控制。
让我们看一下上传后的文件权限:我们可以看到,文件上传后,该文件属于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,重新上传文件,然后访问它。
图片正常访问成功!让我们来看看。
修改后,将上载文件的权限:更改权限后,您可以正常访问它们。