在 Tomcat 中,“日志权限”通常涉及 日志文件本身的 Linux 文件权限、Tomcat 运行用户、以及 日志目录的访问控制。下面从常见场景给你说明怎么改。
先确认 Tomcat 是用哪个用户启动的(很重要):
ps -ef | grep tomcat
或者:
ps aux | grep java
常见用户:
tomcatwwwroot(不推荐)假设 Tomcat 运行用户是 tomcat。
Tomcat 日志一般在:
$TOMCAT_HOME/logs/
例如:
/opt/tomcat/logs/catalina.out
chmod 640 /opt/tomcat/logs/catalina.out
常用权限说明:
644:owner 可写,其他人只读640:owner 可读写,组可读,其他无权限(推荐)600:仅 owner 可读写(最严格)chmod -R 640 /opt/tomcat/logs
chmod 750 /opt/tomcat/logs
⚠️ 注意:
750 或 755推荐组合:
chmod 750 /opt/tomcat/logs
chmod 640 /opt/tomcat/logs/*
如果日志权限不对,通常是 属主不对。
chown -R tomcat:tomcat /opt/tomcat/logs
如果是 root 启动的 Tomcat:
chown -R root:tomcat /opt/tomcat/logs
在 catalina.sh 或启动脚本中加:
umask 027
效果:
640750Tomcat 使用 JULI 日志:
$TOMCAT_HOME/conf/logging.properties
示例:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
⚠️ JULI 不支持直接设置日志文件权限,只能通过系统 umask 控制。
vim /etc/logrotate.d/tomcat
示例:
/opt/tomcat/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 tomcat tomcat
}
这样轮转后的日志权限始终是 640。
vim /etc/systemd/system/tomcat.service
[Service]
User=tomcat
Group=tomcat
UMask=0027
然后:
systemctl daemon-reload
systemctl restart tomcat
如果你能告诉我:
我可以给你更精确的修改方案。