通过tomcat.service为tomcat8设置umask

Pie*_*ier 11 umask systemd tomcat8

我正在尝试为tomcat 8实例设置自定义umask,试图通过在systemd tomcat单元中使用UMask指令使其成为一种好方法,如此处所示,没有运气.

我想设置022 umask,因为公司开发人员需要访问tomcat /应用程序日志,并且它们与tomcat用户不在同一组中....

疯狂的是systemd doc说:

控制文件模式创建掩码.采用八进制表示法访问模式.有关详细信息,请参阅umask(2).默认为0022.

但是日志(application/tomcat)设置为640(不是预期的755):

-rw-r----- 1 top top 21416 Feb  1 09:58 catalina.out
Run Code Online (Sandbox Code Playgroud)

我的服务文件:

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[...]

User=top
Group=top
UMask=0022

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

谢谢

小智 16

尝试将UMASK作为环境变量添加到tomcat的服务文件中:

[Service]
...
Environment='UMASK=0022'
...
Run Code Online (Sandbox Code Playgroud)

默认catalina.sh正在检查环境的$ UMASK:

# Set UMASK unless it has been overridden
 if [ -z "$UMASK" ]; then
  UMASK="0027"
 fi
 umask $UMASK
Run Code Online (Sandbox Code Playgroud)

(在我看来,Tomcat不使用systemd的UMask,但我不完全确定.)

  • 正如 catalina.sh 上的建议: # 不要在此脚本中设置变量。相反,请将它们放入 CATALINA_BASE/bin 中的脚本 setenv.sh 中,以保持自定义设置的独立性。 (2认同)
  • @Tadgh 在 debian10 上使用 systemd for tomcat9 让它像魅力一样工作。只需添加一个名为“/etc/systemd/system/tomcat9.service.d/override.conf”的文件,其中包含答案的内容,并确保使用“systemctl daemon-reload”刷新,否则它将被忽略。 (2认同)