Ubuntu下Tomcat用户权限管理的核心步骤
为避免以root权限运行Tomcat带来的安全风险,需创建专用系统用户及组。执行以下命令:
sudo groupadd tomcat # 创建tomcat组
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat # 创建tomcat用户(归属tomcat组,主目录为/opt/tomcat,无登录shell)
注:
-s /bin/false
确保用户无法登录系统,提升安全性。
将Tomcat安装目录的所有权赋予tomcat
用户及组,并调整关键目录权限:
sudo chown -R tomcat:tomcat /opt/tomcat # 递归设置所有权
sudo chmod -R 755 /opt/tomcat # 赋予组及其他用户读/执行权限
sudo chmod -R g+w /opt/tomcat/work/ /opt/tomcat/temp/ /opt/tomcat/logs/ /opt/tomcat/webapps/ # 赋予组写权限(用于部署应用、存储日志)
sudo chmod g+r /opt/tomcat/conf/* # 赋予组读权限(用于读取配置文件)
注:
work
(编译缓存)、temp
(临时文件)、logs
(日志)需写权限;conf
(配置文件)需读权限;webapps
(应用部署目录)需写权限。
编辑tomcat-users.xml
文件(位于/opt/tomcat/conf/
),添加具备不同角色的用户:
<tomcat-users>
<!-- 管理员角色:可访问管理界面 -->
<user username="admin" password="StrongPassword123!" roles="manager-gui,admin-gui"/>
<!-- 部署角色:可上传/部署应用(需配合RemoteAddrValve限制IP) -->
<user username="deployer" password="DevPassword456!" roles="manager-script"/>
</tomcat-users>
注:
manager-gui
:允许通过Web界面访问管理页面(如/manager/html
);admin-gui
:允许管理Tomcat服务器(如配置、查看状态);manager-script
:允许通过脚本(如curl)部署应用(需在manager
应用的context.xml
中配置IP限制)。
默认情况下,Tomcat的manager
和host-manager
应用会限制访问IP(仅本地)。若需远程访问,需修改对应context.xml
文件:
# 编辑manager应用的context.xml
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
# 编辑host-manager应用的context.xml
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
注释或修改RemoteAddrValve
规则,允许特定IP或所有IP访问(生产环境建议限制为可信IP):
<!-- 注释以下内容以允许所有IP(不安全) -->
<!-- Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1\.\d+\.\d+\.\d+"/ -->
<!-- 或添加可信IP(如192.168.1.100) -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.1\.100|127\.\d+\.\d+\.\d+"/>
修改后重启Tomcat生效:sudo systemctl restart tomcat
。
检查目录权限:
ls -ld /opt/tomcat /opt/tomcat/conf /opt/tomcat/webapps
输出应显示所有者为tomcat
,组为tomcat
,且权限符合上述设置(如drwxr-xr-x
)。
测试管理登录:
访问http://服务器IP:8080/manager/html
,使用配置的admin
用户登录,确认能否正常访问管理界面。
测试部署权限:
使用deployer
用户登录manager
应用,尝试上传WAR文件部署应用,确认是否成功。
/opt/tomcat/logs/catalina.out
等日志文件,监控异常访问或权限问题。