
我有一个在 Ubuntu 20.04 上运行的 Tomcat 9 实例。
在我systemd
的 Tomcat 9 服务文件中,我将 Tomcat 设置为以实用程序用户“sally”的身份运行并登录到/var/log/tomcat9/catalina.out
:
[Service]
User=sally
Group=sally
SyslogIdentifier=
StandardOutput=append:/var/log/tomcat9/catalina.out
StandardError=append:/var/log/tomcat9/catalina.out
我注意到,当catalina.out
创建时,它归 root 所有:
-rw-rw-rw- 1 root admin 83K May 25 11:59 catalina.out
这让我很惊讶;由于“sally”正在运行 Tomcat 进程(我通过检查ps
列表确认了这一点),我希望该用户也拥有该日志文件,事实上,在我之前运行的类似的 16.04 系统上就是这种情况。
目录的权限/var/log/tomcat9/
是
drwxr-s--- 2 sally admin 12K May 25 14:53 /var/log/tomcat9/
请注意,目录中没有“setuid”位,因此catalina.out
不会从目录继承所有权。即使有,也应该继承“sally”。
什么决定了 Tomcat 日志的所有权catalina.out
,特别是在 下systemd
?
答案1
当 Tomcat 由 systemd(即 root)启动时,会创建日志。然后,出于安全原因,该进程会更改所有权。
对于想要轮换 catalina.out 日志的人来说,它是一件非常麻烦的事情。除了重新启动 Tomcat 之外,没有其他办法。当我运行 Tomcat 时,我通过强制开发人员妥善管理其应用程序的日志记录来确保标准输出保持在最低限度。每当他们错过什么时,它都会出现在 catalina.out 中。