在运维的过程中,有时我们需要以有别于启动WebLogic的用户去访问或收集日志等信息,以及时了解系统运行情况,这就要求日志文件的访问权限是允许其他用户访问的。一般情况下,新生成的文件默认权限是根据操作系统的umask的设置决定的。那如何改变WebLogic运行时产生的日志文件的访问权限呢?

如果通过操作系统的umask命令修改是不会生效的,因为在WebLgoic的启动脚本startWebLogic.sh中有类似这么一条命令“umask 022”,其覆盖了操作系统的设置。

比如startWebLogic.sh中设置了“umask 037”,那么生成的日志文件访问权限如下:

-bash-4.2$ ls -l
total 13164
-rw-r----- 1 oracle oracle     842 Jul 25 04:30 access.log
-rw-r----- 1 oracle oracle 2150626 Jul 27 10:35 AdminServer.log
-rw-r----- 1 oracle oracle  576289 Jul 27 10:35 base_domain.log

我们可以通过修改脚本中umask的值来控制日志等新生成文件的访问权限。

这个在WebLogic 11g上可以正常工作。但是在WebLogic 12.2.1.1.0 和12.2.1.2.0上即使设置了umask也不会生效,这是WebLogic的bug(Bug 24794915),此缺陷在12.2.1.3.0上已经修复。

在这两个版本(12.2.1.1.0 和12.2.1.2.0)上需要安装这个补丁。12.2.1.3.0上已经支持了下面的参数,不需要再安装补丁。

安装补丁后支持了一个参数-Dweblogic.DefaultLogFilePermissionsEnabled,其默认是true。

此参数的含义是当-Dweblogic.DefaultLogFilePermissionsEnabled=true,新生成的文件使用默认的文件访问权限640。如果设置-Dweblogic.DefaultLogFilePermissionsEnabled=false,那么新生成的文件的访问权限受startWebLogic.sh脚本中的umask设置的值控制,采用自定义的设置。

所有在WebLogic12.2.*版本上,需要在启动该参数中加上-Dweblogic.DefaultLogFilePermissionsEnabled=false,然后再修改startWebLogic.sh中的umask值。Java options一般在setDomainEnv.sh中设置。

这个参数控制的是WebLogic新生成的所有的文件,不仅仅是日志文件。

另外如果WebLogic Server是通过NodeManager启动的,需要在startNodeManager.sh脚本中设置。