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

在作业中,项目使用文件上传。 这个功能很常见。 当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,重新上传文件后,进行访问,图片正常访问成功!

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

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

换一批

延伸阅读

[嵌入式软件] Linux Kernel 5.9.1 及更早版本发现数据泄露

Linux Kernel 5.9.1 及更早版本发现数据泄露

Linux内核最近发现了一系列错误,这些错误允许攻击者在没有经验证据的情况下获得访问机密数据和现有帐户的权限。 以下是漏洞详情: 漏洞详情 1.CVE-2020-26088 严重程度:高 net / nfc...

关键字: Linux kernel 漏洞

[嵌入式软件] Linux内核社区接受了SM2国密算法被

Linux内核社区接受了SM2国密算法被

制定了大量的密码管理方案和方案,并制定了大量的密码管理方案和规范。 随着近年来外部的国际贸易冲突和技术封锁,内部互联网的快速发展,IoT 领域的崛起,以及金融领域的变革愈演愈烈。摆脱对国外技术和产品的过度依赖,建设行业网络安全...

关键字: 算法 sm2 Linux

[嵌入式大杂烩] 从串口驱动到Linux驱动模型

点击上方「嵌入式大杂烩」,「星标公众号」第一时间查看嵌入式笔记! 原文:https://www.jianshu.com/p/3a9013b9569c 作者:Linker...

关键字: 嵌入式 编程 Linux

[嵌入式软件] Linux 5.8 内核,全局主题切换,全新组件上线

Linux 5.8 内核,全局主题切换,全新组件上线

10月23日,Yuqilin团队宣布ubuntukylin开源版本20.10正式发布。 20.10 是优麒麟发布的第 16 个版本,提供 9 个月的技术支持,与 Ubuntu 20.10、Lubuntu 20.10、Xubun...

关键字: 主题 优麒麟 Linux

[嵌入式分享] V4L2的管道驱动程序是如何被Xilinx Linux 理解的

V4L2的管道驱动程序是如何被Xilinx Linux 理解的

Xilinx提供了完整的V4L2的驱动程序,Xilinx V4L2 driver。处于最顶层的驱动程序是V4L2框架的视频管道(Video pipeline)驱动程序,也叫桥驱动程序(bridge driver),主要代码在文件xil...

关键字: Xilinx v4l2 管道驱动程序 Linux

嵌入式教程

6897 篇文章

关注

发布文章

技术子站

关闭