电子发烧友网 > 嵌入式技术 > 正文

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

2020年09月26日 09:06 次阅读

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

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

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

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

JavaWeb电商项目实战

能够熟练掌握使用JavaWeb技术实现项目的开发 从项目开发流程,到需求分析,再到代码编写,手把手开发项目,知
发烧友学院发表于 2019-04-29 00:00 122次阅读
JavaWeb电商项目实战

2020年Java开发岗位受欢迎的有哪些?这篇文...

2020年Java开发岗位受欢迎的有哪些?目前计算机专业的大学生想成为Java工程师,参加以实战项目....
发表于 2020-09-26 10:28 51次阅读
2020年Java开发岗位受欢迎的有哪些?这篇文...

Linux电源管理系统的组成详细资料介绍

任何系统的运转都需要能量。计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的....
发表于 2020-09-26 10:10 44次阅读
Linux电源管理系统的组成详细资料介绍

7个Google Chrome扩展程序从而改变您...

Momentum是一个非常受欢迎的Chrome扩展程序,拥有超过300万用户。它用新的“个人仪表板”....
发表于 2020-09-25 16:35 67次阅读
7个Google Chrome扩展程序从而改变您...

嵌入式Linux开发的一般过程

嵌入式系统是以应用为中心,以计算机技术为基础、软硬件均可裁剪、适应应用系统对功能、可靠性、成本、体积....
发表于 2020-09-25 15:50 207次阅读
嵌入式Linux开发的一般过程

linux设备中virtio组织关系及设备初始化...

我们看linux kernel中virtio驱动相关代码,会发现有很多相关文件。首先有virtio.....
发表于 2020-09-25 15:47 219次阅读
linux设备中virtio组织关系及设备初始化...

linux系统中如何创建文本菜单

当使用Linux系统时,最常见的Shell脚本交互类型是应用菜单(文本菜单),文本菜单的核心是cas....
发表于 2020-09-25 15:45 131次阅读
linux系统中如何创建文本菜单

基于linux eBPF的进程off-cpu的方...

提起off-CPU就不得不提on-cpu,on-cpu是在线程(进程)在CPU上运行的消耗,off-....
发表于 2020-09-25 15:41 207次阅读
基于linux eBPF的进程off-cpu的方...

【专家问答】杨光明:鸿蒙系统研发工程师教你从0开发鸿蒙PCB开发板

前言:本期我们邀请到了张飞实战电子团队的鸿蒙系统研发工程师杨光明老师,本期高手问答中老师将为我们解答大家在Lin...
发表于 2020-09-25 15:24 542次阅读
【专家问答】杨光明:鸿蒙系统研发工程师教你从0开发鸿蒙PCB开发板

从 Linux 内核的角度谈线程栈和进程栈

1. 进程栈 进程栈是属于用户态栈,和进程 虚拟地址空间(Virtual Address Space....
发表于 2020-09-25 15:23 250次阅读
从 Linux 内核的角度谈线程栈和进程栈

基于Linux内核源码的RCU实现方案

RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的....
发表于 2020-09-25 15:10 247次阅读
基于Linux内核源码的RCU实现方案

详谈Linux操作系统的信号量(附源码)

大家知道,互斥锁可以用于线程间同步,但是,每次只能有一个线程抢到互斥锁,这样限制了程序的并发行。如果....
发表于 2020-09-25 15:00 88次阅读
详谈Linux操作系统的信号量(附源码)

Linux中易混淆命令的区别

素材来源:Linux迷 sudo 与 su 两个命令的最大区别是:sudo 命令需要输入当前用户的密....
发表于 2020-09-25 14:25 74次阅读
Linux中易混淆命令的区别

Granulate宣布利用AI优化Linux服务...

尚不清楚各种形式的AIOps将对IT工作产生什么影响。从理论上讲,较小的IT团队应该能够管理较大的I....
发表于 2020-09-25 12:56 233次阅读
Granulate宣布利用AI优化Linux服务...

全球第二的桌面浏览器迎重大改进,大幅降低CPU、...

年初上线的微软新Edge,基于Chromium开源生态打造,推出不到三个月就跃升为全球份额第二的桌面....
发表于 2020-09-25 12:00 182次阅读
全球第二的桌面浏览器迎重大改进,大幅降低CPU、...

Linux常用命令--韦东山老师带你上手鸿蒙内核Liteos-a开发

3.3 Linux常用命令3.3.1 Linux命令行介绍1. Linux Shell简介Shell的意思是“外壳”,在Linux中它是一个程序,比...
发表于 2020-09-25 10:21 214次阅读
Linux常用命令--韦东山老师带你上手鸿蒙内核Liteos-a开发

基于Valgrind和在线调试器实现Linux应...

嵌入式系统是一个资源受限的系统,直接在嵌入式硬件平台上进行软件的开发与调试是不合适的,开发与调试通常....
发表于 2020-09-25 10:07 156次阅读
基于Valgrind和在线调试器实现Linux应...

基于ARM技术的uClinux系统设计和应用分析

根文件系统是构建一个 uCLinux嵌入式系统的重要组成部分。目前嵌入式系统可以选择的根文件系统有:....
发表于 2020-09-24 17:08 381次阅读
基于ARM技术的uClinux系统设计和应用分析

Google很快将其小部件发布到iPhone用户...

您还可以将Google Chrome浏览器设置为默认浏览器。也就是说,当您单击链接时,iOS 14将....
发表于 2020-09-24 16:27 80次阅读
Google很快将其小部件发布到iPhone用户...

Google Chrome浏览器正准备接收一项新...

正如您在视频中看到的那样,只要您打开一个新标签页,它就会自动进行组织。仍然可以看到,要实现这一点,有....
发表于 2020-09-24 16:04 410次阅读
Google Chrome浏览器正准备接收一项新...

外网浏览器安卓版哪个好用

外网浏览器器安卓版哪个好用?现在的人都喜欢用手机浏览各种网页新闻,或者看小说,这些都是需要有浏览器才能完成的,...
发表于 2020-09-24 14:56 0次阅读
外网浏览器安卓版哪个好用

华为大屏端的内容建设在教育相关的内容方面具有独特...

过去一年里华为将华为视频、音乐、阅读等也将国内很多互联网伙伴的优质内容带给了更多国家和地区的消费者。....
发表于 2020-09-24 12:06 175次阅读
华为大屏端的内容建设在教育相关的内容方面具有独特...

Linux中常见并发访问的保护机制设计原理浅析

今天谈谈linux中常见并发访问的保护机制设计原理。这既可以考察面试者对锁的原理的理解,又可以考察面试者编程技能)。...
发表于 2020-09-24 10:24 202次阅读
Linux中常见并发访问的保护机制设计原理浅析

干货:通过crx文件安装Chrome浏览器的扩展...

我们知道Chrome是世界上最流行的浏览器,而Chrome能获得如此地位,扩展程序功不可没。Chro....
发表于 2020-09-24 10:15 46次阅读
干货:通过crx文件安装Chrome浏览器的扩展...

基于嵌入式操作系统实现safe mode安全模式...

目前的各种嵌入式产品已经丰富多彩,它们正改变着我们的生活方式。随着嵌入式产品功能的增加,如何让用户对....
发表于 2020-09-24 09:56 129次阅读
基于嵌入式操作系统实现safe mode安全模式...

Danfo.js提供高性能、直观易用的数据结构,...

Danfo.js 是个 JavaScript 开源库,提供了高性能、直观易用的数据结构,支持结构化数....
发表于 2020-09-23 18:21 265次阅读
Danfo.js提供高性能、直观易用的数据结构,...

迅为i.MX6ULL开发板资料下载,让Linux学习更轻松

迅为电子的 i.MX6ULL 核心板分为工业级和商业级两种。提供的接口是邮票孔方式。 开发板资料下载链接:链接:h...
发表于 2020-09-23 18:07 101次阅读
迅为i.MX6ULL开发板资料下载,让Linux学习更轻松

微软正努力将Java移植到基于ARM的Mac和W...

和诸多重要开发者一起,微软正努力将Java移植到基于ARM的Mac和Windows设备上,其中就包括....
发表于 2020-09-23 17:46 125次阅读
微软正努力将Java移植到基于ARM的Mac和W...

基于Linux嵌入式操作系统实现实时调度器的设计

嵌入式系统大多工作在有实时性要求的环境中,有些嵌入式设备可能需要软件在ms级时间单位内做出响应,而有....
发表于 2020-09-23 17:08 180次阅读
基于Linux嵌入式操作系统实现实时调度器的设计

Linux操作系统在S3C2410开发板上的的移...

S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM9....
发表于 2020-09-23 17:05 110次阅读
Linux操作系统在S3C2410开发板上的的移...

Google即将停止其Chrome浏览器的付费扩...

有了这项更改,想要向用户收取Chrome扩展程序费用的开发人员将不再能够依靠Google进行付款。在....
发表于 2020-09-23 16:18 54次阅读
Google即将停止其Chrome浏览器的付费扩...

怎么快速入门linux

这次我们该谈论什么? 这次让我们讨论一下这个Linux([inks])。 什么是Linux([Ink....
发表于 2020-09-23 16:17 108次阅读
怎么快速入门linux

基于Chromium的Edge浏览器最终将在Li...

但是Microsoft增加了更多的隐私功能,以使您可以直接控制网站如何跟踪您,以及它自己的创新(例如....
发表于 2020-09-23 16:15 110次阅读
基于Chromium的Edge浏览器最终将在Li...

Linux中的物理内存的具体分配情况

首先,各个内存区域的空闲可用物理内存被分割成一个一个的链表,每个链表当中的元素表示的空闲页的大小都是....
发表于 2020-09-23 11:26 430次阅读
Linux中的物理内存的具体分配情况

基于Java JEP数量随着迭代的加速更加容易应...

在六个月的节奏下,交付可用于生产的 JDK 新版本的速度已大大提高。而不是每隔几年在大型主要版本中发....
发表于 2020-09-23 11:16 218次阅读
基于Java JEP数量随着迭代的加速更加容易应...

Linux 内核模块工作原理及内核模块编译案例

一个内核模块至少包含两个函数,模块被加载时执行的初始化函数init_module()和模块被卸载时执....
发表于 2020-09-23 09:39 107次阅读
Linux 内核模块工作原理及内核模块编译案例

关于Android和Linux的专业知识

当开发人员在电话上使用Linux时,他们总是会感到有些兴奋。 这是在Android手机上进行的一项开....
发表于 2020-09-22 16:53 207次阅读
关于Android和Linux的专业知识

Linux5.10支持新的AMD安全存储加密功能

Linux 5.10支持新的AMD安全存储加密(SME)功能,作为安全加密虚拟化(SEV)的一部分。....
发表于 2020-09-22 16:27 54次阅读
Linux5.10支持新的AMD安全存储加密功能

在 Linux 操作 Hi3516DV300 鸿蒙开发板实现Helloworld 程序

这篇文档带领大家在 Linux 操作 Hi3516DV300 鸿蒙开发板实现编写一个Helloworld 程序。算是应用开发最初级的入门...
发表于 2020-09-22 16:16 0次阅读
在 Linux 操作 Hi3516DV300 鸿蒙开发板实现Helloworld 程序

HarmonyOS应用开发-API参考

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人...
发表于 2020-09-22 15:14 101次阅读
HarmonyOS应用开发-API参考

用ASP.NET控制HTTP请求过程中浏览器缓存...

max-age,Expires:要表达的意思基本差不多。max-age表示某次HTTP的响应结果应该....
发表于 2020-09-22 15:11 444次阅读
用ASP.NET控制HTTP请求过程中浏览器缓存...

Linux内核的同步机制

在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实像多进程多线程编程一样也需要一些同....
发表于 2020-09-22 09:46 203次阅读
Linux内核的同步机制

国产AI开发板香橙派4B的NPU使用下篇(Linux系统)

https://bbs.elecfans.com/jishu_1957810_1_1.html 本文继续介绍在Linux系统下的NPU使用: 1、烧写固件 烧录固...
发表于 2020-09-21 17:55 0次阅读
国产AI开发板香橙派4B的NPU使用下篇(Linux系统)

基于linux嵌入式技术实现远程监控和图象传输系...

如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息....
发表于 2020-09-21 17:52 424次阅读
基于linux嵌入式技术实现远程监控和图象传输系...

在Linux操作Hi3516DV300鸿蒙开发板实现Helloworld程序

本文主要介绍了如何在Linux环境下在Hi3516DV300开发板搭载鸿蒙OS实现一个简单的Helloworld程序。 ...
发表于 2020-09-21 14:41 101次阅读
在Linux操作Hi3516DV300鸿蒙开发板实现Helloworld程序

Linux进程管理:内核如何描述进程标识

所谓进程其实就是执行中的程序而已,和静态的程序相比,进程是一个运行态的实体,拥有各种各样的资源。
发表于 2020-09-21 14:30 145次阅读
Linux进程管理:内核如何描述进程标识

Linux DMA 功能介绍及接口分析

从方向上来说,DMA传输可以分为4类:memory到memory、memory到device、dev....
发表于 2020-09-21 14:23 190次阅读
Linux DMA 功能介绍及接口分析

Linux应用技巧之操作命令记录

grep -n "字符串" * 列出字符串所在文件的行号,结合vim 文件 +行号 打开....
发表于 2020-09-21 13:53 69次阅读
Linux应用技巧之操作命令记录

击败Linux和Android,黑莓QNX操作系...

由于战略选择失误,黑莓在手机市场的存在感越来越低,以至于经常被拿出来当做手机行业的经典反面案例。但是....
发表于 2020-09-21 12:02 333次阅读
击败Linux和Android,黑莓QNX操作系...

如何在Linux环境下在Hi3516DV300开发板搭载鸿蒙OS实现一个简单的Helloworld程序

1.   目标理解HarmonyOS驱动框架,用户态APP和内核态驱动之间的通信机制。具体运行结果为用户态APP...
发表于 2020-09-21 10:17 291次阅读
如何在Linux环境下在Hi3516DV300开发板搭载鸿蒙OS实现一个简单的Helloworld程序

Linux下如何编译C程序?

少量文件时可以使用上面方法编译。源码文件较多时,可借用make工具。make通过解析Makefile....
发表于 2020-09-20 10:56 170次阅读
Linux下如何编译C程序?

戴尔 EMC 对运行 SAP 工作负载的企业级 ...

更大宗交易 -- 到目前为止,价值超过 100 万美元的客户交易数量增加了 35%。
发表于 2020-09-20 09:53 434次阅读
戴尔 EMC 对运行 SAP 工作负载的企业级 ...

基于Sti5516芯片的Java虚拟机的软件架构...

随着现代信息技术的迅猛发展,电视数字化步伐加快了。从一开始的模拟电视到现在的数字电视,不仅大大提高了....
发表于 2020-09-19 17:19 368次阅读
基于Sti5516芯片的Java虚拟机的软件架构...

Linux kernel内存管理模块结构分析

基于上面章节的需求,Linux kernel从虚拟内存(VM)、DMA mapping以及DMA b....
发表于 2020-09-19 11:55 201次阅读
Linux kernel内存管理模块结构分析

内存管理之KASAN的工作原理

KASAN的原理是利用额外的内存标记可用内存的状态。这部分额外的内存被称作shadow memory....
发表于 2020-09-19 11:40 131次阅读
内存管理之KASAN的工作原理

深度解析自旋锁及自旋锁的实现方案

入场券自旋锁和MCS自旋锁都属于排队自旋锁(queued spinlock),进程按照申请锁的顺序排....
发表于 2020-09-19 11:39 136次阅读
深度解析自旋锁及自旋锁的实现方案

深度解析内存管理SLUB DEBUG原理

 SLUB DEBUG检测oob问题原理也很简单,既然为了发现是否越界,那么就在分配出去的内存尾部添....
发表于 2020-09-19 11:30 169次阅读
 深度解析内存管理SLUB DEBUG原理

inux中常见并发访问的保护机制设计原理

自旋锁是linux中使用非常频繁的锁,原理简单。当进程A申请锁成功后,进程B申请锁就会失败,但是不会....
发表于 2020-09-19 11:23 66次阅读
inux中常见并发访问的保护机制设计原理

iOS 14更新:替代Safari浏览器的第三方...

在 iOS 14 正式版本中,苹果引入的最大一个改变就是允许第三方应用替代 Safari 和 App....
发表于 2020-09-19 10:47 470次阅读
iOS 14更新:替代Safari浏览器的第三方...