为避免以root权限运行Tomcat(降低安全风险),需创建专用用户及组。
# 创建tomcat用户组(若不存在)
sudo groupadd tomcat
# 创建tomcat用户,指定所属组、家目录及shell(/bin/false禁止登录)
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
说明:tomcat用户仅用于运行Tomcat服务,无登录权限,减少潜在攻击面。
将Tomcat安装目录(如/opt/tomcat)的所有权赋予tomcat用户及组,确保服务有权访问自身文件。
sudo chown -R tomcat:tomcat /opt/tomcat
说明:-R参数递归修改目录及其子目录的所有权,避免遗漏。
根据目录功能分配合理权限,平衡安全性与功能性:
/opt/tomcat及其子目录设置755权限(所有者可读/写/执行,组及其他用户可读/执行),防止未授权修改。sudo chmod -R 755 /opt/tomcat
conf目录下的server.xml、web.xml等配置文件需严格限制为644(所有者可读/写,组及其他用户可读),避免敏感信息泄露。sudo chmod -R 644 /opt/tomcat/conf/*
logs(日志输出)、temp(临时文件)、work(编译缓存)、webapps(应用部署)目录需赋予组写权限(775),确保Tomcat可正常写入运行时文件。sudo chmod -R 775 /opt/tomcat/logs /opt/tomcat/temp /opt/tomcat/work /opt/tomcat/webapps
说明:logs、temp等目录需写权限,但webapps目录若部署第三方应用,建议进一步限制(如仅允许上传至特定子目录)。
Tomcat的bin目录下的启动/关闭脚本(如startup.sh、shutdown.sh)需具备执行权限,否则无法正常启动服务。
sudo chmod +x /opt/tomcat/bin/*.sh
说明:若通过Systemd管理服务(推荐),需在服务文件中指定User=tomcat、Group=tomcat,确保以专用用户身份运行。
通过Systemd管理Tomcat服务,实现开机自启、权限控制及日志管理。创建服务文件/etc/systemd/system/tomcat.service,内容如下:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" # 根据实际JDK路径修改
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
UMask=0007 # 限制新文件权限为770(所有者及组可读/写/执行,其他用户无权限)
[Install]
WantedBy=multi-user.target
操作步骤:
sudo systemctl daemon-reloadsudo systemctl start tomcatsudo systemctl enable tomcatsudo systemctl status tomcat(确认状态为active (running))conf/tomcat-users.xml,移除不必要的manager-gui、admin-gui角色及用户,或通过IP限制访问(如仅允许本地IP访问管理端口)。conf/server.xml中的Connector标签,添加server属性(如server="MyAppServer/1.0"),避免泄露Tomcat版本。conf/server.xml的Context标签中设置autoDeploy="false"、unpackWARs="false",防止恶意WAR文件自动部署。ufw或firewalld限制Tomcat端口(默认8080)的访问,仅允许可信IP访问。sudo ufw allow from 192.168.1.100 to any port 8080 # 仅允许指定IP
sudo ufw deny 8080 # 拒绝其他IP
sudo ufw reload
说明:这些措施可进一步提升Tomcat的安全性,防止未授权访问及攻击。
chmod 777(完全开放权限),会带来严重的安全风险。logs/catalina.out),及时发现权限相关错误(如无法读取配置文件、写入日志失败)。tomcat用户写入)。