Weblogic中间件创建文件权限问题解决

半仙 自动化运维

随着现在自动化运维、开发运维、开发安全运维的兴起,还有各种公有云、私有云、混合云的风起云涌,街头巷尾大家都在谈论各种高大上的东西,基础的知识、问题处理没人关心了,谁还搞基础的操作系统、数据库、中间件......那都会被人笑掉大牙,越是在一些信息化建设有较大提升空间的企业,这种思想越是普遍。

于此相反的,国外一些老牌厂商、国内一些创新力较强的IT公司其实一直对于基础知识特别重视(从面试题里就可以看出),今天给大家分享一个WebLogic中间件小问题的解决方法。

1、问题描述及起因

某公司电商系统,需要B服务器(Weblogic中间件)的文件在其他服务器可以查询,没有额外设备、额外经费。
不过这点难不倒半仙这种老司机,简单思考了下,综合考虑安全性、可扩充性、灵活性等,采用搭建一个文件服务器,采用NFS共享的方式,各服务器用户挂载共享的目录,分别根据需求设置需要的权限,只允许规定服务器访问,权限设置也是该只读的只读、该读写的读写,很快完成了这部分子环境安装配置。

私有云环境就是这点好,克隆服务器一类飞快,我的世界我做主。 开发部门也是老司机,很快完成了部署,不到半天看上去搞定了,当天进入测试阶段,发现了一个问题。 现象:网站提示403错误。

2、问题分析及解决

  • 经过分析,此部分为服务器B上的图片,图片存在但在服务器C、D无法显示,其他共享的文件访问正常。
  • 登录服务器B,查找此文件,发现此文件,权限为本组只读其他不可读写
  • 经与开发人员确认,此文件通过程序后台在B服务器上传的图片,再次测试上传新图片,确认是新上传图片权限问题。
  • 缩小了范围,按半仙的经验,新创建的文件权限,当然是umask值决定的,修改umask变量即可。
  • 登录服务器B,进入软件运行的专属账号,修改.bash_profile,添加一行

基础知识 在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。 可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r,则创建文件的最终默认权限为 -rw-rw-r-- 。同理,目录的默认权限为 drwxrwxrwx ,则d rwx rwx rwx - 002 = (d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x,所以用户创建目录的默认访问权限为 drwxrwxr-x 。

  • 生效后,手动创建文件测试,各服务器均可读写,再次在程序后台上传文件,文件权限和umask修改前一样,仍然没有生效。
  • 半仙想,程序难道没有调用新的环境变量么?直接关掉Weblogic,重新客户端登录服务器,确认环境变量生效,启动Webligic重新测试,问题没有解决。
  • 现在基本确定了,Weblogic使用新的环境变量,可能是Weblogic有自己单独设置的环境变量,查询Weblogic启动脚本,一步步往前递归,果然在最前面的启动脚本里,发现了环境变量设置。
  • 原来启动Weblogic时,软件自己设置了环境变量,当然半仙设置的全局变量不管用了,知道了原因,修改之。
  • 修改后,重新启动Weblogic,在程序后台重新上传文件,权限变了,新上传图片具备了读权限。 问题完美解决,这都归功于对基础知识的掌握和正确的思路,以及开发和运维间默契的配合。

一点小技巧,不能藏私,希望能对大家有所帮助。

背景知识

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 WebLogic是美商oracle的主要产品之一,系并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.1.3) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。