1. 创建专用Tomcat用户和组
为避免Tomcat以root权限运行(降低安全风险),需创建专用系统用户和组。执行以下命令:
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
其中,-s /bin/false 禁止用户登录shell,-d /opt/tomcat 指定用户主目录(需与Tomcat安装路径一致)。
2. 设置Tomcat目录及文件权限
将Tomcat安装目录(如/opt/tomcat)的所有权转移至tomcat用户和组,并配置合理权限:
sudo chown -R tomcat:tomcat /opt/tomcat # 递归修改所有权
sudo chmod -R 755 /opt/tomcat/bin/*.sh # 允许用户执行脚本
sudo chmod -R 750 /opt/tomcat/conf # 限制配置文件访问(仅用户和组可读)
sudo chmod -R 755 /opt/tomcat/webapps # 允许用户访问webapps目录
关键说明:conf目录包含敏感配置(如数据库密码),需严格限制为tomcat组可读;webapps目录需允许用户读取以部署应用。
3. 配置Tomcat为系统服务(systemd)
创建systemd单元文件/etc/systemd/system/tomcat.service,指定Tomcat以tomcat用户身份运行:
sudo nano /etc/systemd/system/tomcat.service
写入以下内容(根据Tomcat版本调整CATALINA_HOME路径):
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure # 失败时自动重启
[Install]
WantedBy=multi-user.target
保存后执行以下命令激活服务:
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat # 开机自启
4. 配置Tomcat Web管理界面权限
编辑/opt/tomcat/conf/tomcat-users.xml文件,添加管理用户及对应角色(如manager-gui用于图形化管理、admin-gui用于全局管理):
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="StrongPassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
安全提醒:
server.xml中的<Realm>标签)或集成LDAP认证,避免明文存储密码。5. 优化目录权限(细化控制)
根据Tomcat目录用途进一步细化权限,减少潜在风险:
sudo chown -R tomcat:tomcat /opt/tomcat/work/ # 临时工作目录(仅用户可写)
sudo chown -R tomcat:tomcat /opt/tomcat/temp/ # 临时文件目录(仅用户可写)
sudo chown -R tomcat:tomcat /opt/tomcat/logs/ # 日志目录(仅用户可写)
sudo chmod -R 644 /opt/tomcat/webapps/*.war # WAR文件仅用户可读
说明:work和temp目录需允许用户写入(用于编译JSP等),但需禁止其他用户访问;logs目录仅用户可写,防止日志被篡改。
6. 防火墙设置(可选但推荐)
若需从外部网络访问Tomcat管理界面(默认端口8080),需开放端口并限制访问源:
sudo ufw allow from 192.168.1.0/24 to any port 8080/tcp # 仅允许内网IP访问
sudo ufw enable # 启用防火墙
提示:生产环境中建议使用Nginx/Apache作为反向代理,隐藏Tomcat端口并通过HTTPS加密传输。
7. 定期审计权限
定期检查Tomcat目录权限和用户角色,确保无未授权变更:
ls -ld /opt/tomcat/conf # 查看conf目录权限
ls -l /opt/tomcat/conf/tomcat-users.xml # 查看用户配置文件权限
grep -r "tomcat" /etc/systemd/system/ # 确认systemd服务配置正确
建议:将权限检查纳入日常运维流程,及时修复异常权限。