web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限

一、 问题描述

背景描述:

0.saas-business-运营后台,website-网站页面。

1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该程序里面上传图片功能,上传图片至linux服务器挂载盘(共享盘)中/nfs/uploads/目录下。tomcat是以root用户来运行的。

2.website,部署在另一台linux系统ngxin容器中,该台linux系统也挂载了(共享盘)/nfs/uploads/目录。ngixn是以其他组的角色来运行的。

操作:

我通过saas-business里面的上传图片功能 ,上传图片到/nfs/uploads/下,查看服务器,确实已经上传成功。

然后在浏览器中访问website程序,却访问不到刚刚上传的图片。

问题:图片成功上传到linux服务器共享盘中,但却在网页中访问不到!

二、 表面原因

在linux 中挂在盘目录下,查看刚刚上传的图片:确实已经上传成功。

[root@tmp4 backgroundImg]# ll

总用量 408

-rw-r----- 1 root root 414642 7月 11 17:27 login_background.jpg

可以看到 login_background.jpg图片,对于当前 拥有者 、群组 、其它组 分别是:读写、读、无。显而易见,website是nginx容器以其他组的一个用户来运行的,所有没有任何权限。

找到表面原因,我们可以直接修改图片的权限。

[root@tmp4 backgroundImg]# chmod 644 login_background.jpg

[root@tmp4 backgroundImg]# ll

总用量 408

-rw-r--r-- 1 root root 414642 7月 11 17:27 login_background.jpg

此时,通过网站访问 该图片便没有问题。

三、 根本原因

因为tomcat版本的差别。我当前使用的是tomcat8.5.+,当我将为tomcat8.0.24版本便没有此问题。

下面,做的配置,是以tomcat8.5.+版本 为例的。

a)、检查linux

linux文件访问默认权限与umask有关,查看系统默认配置(/etc/profile)是否正常,如果是002或022就正常没有问题。

[umask 002 对应文件权限664,文件夹权限775;

umask 022对应文件权限644,文件夹权限755]

b)、检查tomcat

打开bin/catalina.sh文件,检查大概在263行左右。

将0027改改为0022,重启tomcat,上传访问的问题解决。

清单一、原代码

# Set UMASK unless it has been overridden

if [ -z "$UMASK" ]; then

UMASK="0027"

fi

清单二、修改为

# Set UMASK unless it has been overridden

if [ -z "$UMASK" ]; then

UMASK="0022"

fi

c)、重启tomcat

sh shutdown.sh(关闭)

sh startup.sh 或者 ./startup.sh(启动)

四、总结:

Javaweb上传文件到Linux 没有读写权限,最后总结有以下3种解决方案。

1.将程序在容器中以root用户运行。这时候运行权限最高。(如,我可以将website,由其他用户组的nginx角色,改为所有者root权限,便没有此问题)。

2.降低我的tomcat版本。(这个也是可行的)

3.修改tomcat中的bin/catalina.sh配置,并重启tomcat(这个我觉得是最根本的,推荐使用)

彩蛋:查看程序启动用户,ps -ef | grep tomcat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2008Beta 版AJAX的一个奇怪的问题

最近在用ASP.NET做一个MIS系统,为了使页面有比较好的效果,减少刷新,用了AJAX控件,比如日历,水印等。 最主要的是用它来实现几个DropDownList控件之间的联动。起初问题是当也面加载时…

如何将IntelliJ项目添加到GitHub

尽管GitHub文档包含有关如何将现有GitHub项目添加到本地计算机的好信息,但是我对如何将本地计算机上的现有(未版本化)项目添加到GitHub的了解还很少。 这是我使用的步骤。 从IntelliJ 选择“ VCS”菜单->在版本控制中导入->在GitHub上…

REST-framework快速构建API--四部曲

代码目录结构: 一、使用原生APIView 使用rest-framework原生的APIView实现过程: 以url(r^books/$, views.BookView.as_view(),name"books")为例进行流程分析, 1、views.BookView.as_view()>APIView的as_view方法>父类【View】…

aix内核是linux,查看Linux及AIX硬件信息方法总结

一. CPU信息1. AIX1.查看CPU核心数:# pmcycles -m# pmcycles -mCpu 0 runs at 1900 MHzCpu 1 runs at 1900 MHzCpu 2 runs at 1900 MHzCpu 3 runs at 1900 MHz2.查看逻辑CPU个数# bindprocessor -q# bindprocessor -qThe available processors are: 0 1 2 33.查看CP…

Tomcat-部署多个项目(不同端口)

20190713 整理 参考文档 https://blog.csdn.net/chenchunlin526/article/details/78799772 如何在Tomcat服务中,为不同端口部署不同项目? https://jingyan.baidu.com/article/2f9b480ddda95e41cb6cc2a2.html Tomcat manager 配置 https://blog.csdn.ne…

JavaFX技巧2:使用Canvas API进行清晰绘图

当我最初开始使用Canvas API时,我注意到渲染代码的结果有些模糊,甚至更糟,不一致。 有些线条模糊,有些线条清晰。 来自Swing,我花了一些时间才意识到这是由JavaFX的坐标系引起的,该坐标系允许双精度渲染。 …

在阳光下歌唱

在阳光下歌唱 ——代腾飞 2007年11月27日 于成都 在寒冬迷雾阴霾已久的早上 突然迎来了一轮金色的太阳 清新的晨风轻抚着我的脸庞 一缕缕暖暖的阳光洒子身上 让人倍感清新爽朗欢心舒畅 昔日的忧伤也不再让人惆怅 往日的苦难也顿时被人遗忘 骑着车儿在阳光下尽情歌唱 我歌唱秋…

[Apple开发者帐户帮助]五、管理标识符(4)注册一个应用程序组

您需要注册一个或多个组才能启用应用组。 所需角色:帐户持有人或管理员。 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择操作系统。 在“标识符”下,选择“应用程序组”,然后单击右上角的“添加”按钮&…

JDK 8中的Oracle Drops Collection文字

在OpenJDK JEP 186上的一个帖子中,Oracle的Brian Goetz通知Oracle在JDK8中不会将集合文字用作语言功能。 集合文字是一种语法表达式形式,其求值形式为数组,列表或映射的聚合类型。 Project Coin提出了集合文字,这也补充了Java SE…

linux软件安装非系统盘,linux操作系统可不可以像安装windows软件一样在windows系统下的硬盘上安装...

linux操作系统可不可以像安装windows软件一样在windows系统下的硬盘上安装答案:2 信息版本:手机版解决时间 2020-07-24 14:13已解决2020-07-23 16:48打开linux操作系统iso压缩包,没有setup,听说要在虚拟机上安装,能不能不用虚拟机安装,在硬盘…

java中值传递和引用传递

1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递。 按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了。 2:按引用传递是什么 指的是在方法调用时,传递的参数是按引用进行传…

HTML5 Inline SVG

这是效果图&#xff1a; 1 <!DOCTYPE html>2 <html>3 <head>4 <meta content"text/html; charsetutf-8" http-equiv"Content-Type" />5 <title>geovindu svg</title>6 </head>7 <body>8 9 <svg width&…

【err】VIDEOIO ERROR: V4L: index 0 is not correct!Unable to connect to camera

前言 新到手一块板子&#xff0c;程序编译成功之后&#xff0c;运行出现错误&#xff0c;不能连接到摄像头。 问题 VIDEOIO ERROR: V4L: index 0 is not correct! Unable to connect to camera 查询系统摄像头接口 ubuntumyimx6ek200:~/build$ ls /dev/vi* /dev/video0 /dev/vi…

linux 卸载lv,Linux 软件安装、卸载、查询

平台构建及注意事项软件安装、配置等一、RPM 安装方法&#xff1a;# RPM -ivh XXX.rpm软件将被安装到缺省目录下。(不可指定安装路径&#xff01;)二、软件卸载&#xff1a;1、查询安装的软件注册名称&#xff1a;# rpm -q -a 部分可猜测软件名前缀 *2、卸载软件&#xff1a;#…

前端开发网络——Ajax(GET、POST)

ajax请求的过程 我们平时输入的网址&#xff0c;比如www.baidu.com&#xff0c;就会被解析成14.215.177.39这一串数字&#xff0c;然后发送请求给后台服务器&#xff08;客户端发送http请求&#xff09;。 服务器会确认你发送的是什么请求&#xff0c;需要请求什么东西&#xf…

通过Spring将继承树加载到List中

我注意到有趣的Spring功能。 我的一位同事使用它将Spring Bean的整个继承树加载到列表中。 在学习Spring文档时错过了这一点。 让我们来看看Spring bean的继承树&#xff1a; 下面的代码片段是通过构造函数注入将该豆树加载到列表中的&#xff1a; Component public class N…

CSS DIV Shadow

css code: /*2011-11-28 塗聚文 締友計算機信息技術有限公司CSS DIV Shadowcss3 */#geovinduDiv-shadow{padding:10px;background-color:#f9f9f9;border:1px solid #fff;position:relative;/*Firefox*/-moz-box-shadow: 3px 3px 4px #000;/*Safari,Chrome*/-webkit-box-shadow:…

面试题1——反转单链表

题目 反转一个单链表 实现 1.&#xff08;递归法&#xff09;利用递归思想&#xff0c;从头结点递归遍历到最后一个结点&#xff0c;递归返回最后一个结点并修改指针&#xff0c;使指针指向前一个结点。 2.&#xff08;移动指针&#xff09;定义当前结点指针cur&#xff0c;前一…

在VS2003下把一个DataTable Update 到数据库

假设一个常见的场景先吧----实际也是我当前的场景-----把一个excel 文件导入到数据库. 这实在是一个常见的功能,但是,没想到的是, 我着实费了一把劲. 实际上,我以前写的有现成的函数来完成这个工作, 但是, 可惜那函数只能在VS2005 下工作, 在2003下面无效,无效的原因是,vs2003 …

linux 挂载有数据硬盘分区,linux下磁盘分区、挂载知多少

0x01 Linux 分区简介主分区 vs 扩展分区硬盘分区表中最多能存储四个分区&#xff0c;但我们实际使用时一般只分为两个分区&#xff0c;一个是主分区(Primary Partion)一个是扩展分区(extended partition)&#xff0c;主分区可以马上被使用但不能再分区&#xff0c;扩展分区必须…