1. 创建专用Tomcat用户和组
为避免以root用户运行Tomcat带来的安全风险,需创建专用系统用户和组。执行以下命令:
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
tomcat组用于管理Tomcat相关文件的访问权限;tomcat用户设置为不可登录(-s /bin/false),仅用于运行Tomcat进程;-d /opt/tomcat指定用户主目录为Tomcat安装路径(后续需调整至实际安装目录)。2. 下载并解压Tomcat到专用目录
从Apache官网下载Tomcat(如9.0.x版本),解压至/opt目录(系统级应用推荐路径):
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.zip
unzip apache-tomcat-9.0.76.zip
sudo mv apache-tomcat-9.0.76 /opt/tomcat
/opt/tomcat为Tomcat的唯一安装目录,便于后续权限管理。3. 设置Tomcat目录所有权与权限
将Tomcat目录及其子目录的所有权转移至tomcat用户和组,并配置合理权限:
sudo chown -R tomcat:tomcat /opt/tomcat # 所有权转移
sudo chmod -R 755 /opt/tomcat/bin/*.sh # 脚本文件可执行权限
sudo chmod -R 750 /opt/tomcat/webapps # webapps目录限制为组可读
sudo chmod g+s /opt/tomcat # 设置SGID,确保新建文件继承组权限
755权限:所有者(tomcat)可读、写、执行;组和其他用户可读、执行;750权限:限制webapps目录仅tomcat用户和组可访问,防止未授权修改;g+s:确保Tomcat在webapps目录下创建的文件自动继承tomcat组。4. 配置systemd服务以tomcat用户运行
修改Tomcat的systemd服务文件,强制其以tomcat用户身份启动:
sudo nano /etc/systemd/system/tomcat.service
添加以下内容(若使用Debian自带Tomcat包,需修改/etc/systemd/system/tomcat9.service):
[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"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.security.egd=file:/dev/./urandom"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
User=tomcat、Group=tomcat确保进程以专用用户运行;Restart=always:进程意外终止时自动重启。5. 重新加载systemd并启动Tomcat
应用服务配置并启动Tomcat:
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl start tomcat # 启动Tomcat服务
sudo systemctl enable tomcat # 设置开机自启
sudo systemctl status tomcat,确认进程以tomcat用户运行(ps -ef | grep tomcat)。6. 配置Tomcat Web管理界面权限
编辑tomcat-users.xml文件,添加管理用户及角色(如manager-gui、admin-gui):
sudo nano /opt/tomcat/conf/tomcat-users.xml
添加以下内容(替换username和password为强密码):
<tomcat-users>
<role rolename="manager-gui"/> <!-- 允许通过Web界面管理 -->
<role rolename="admin-gui"/> <!-- 允许访问管理控制台 -->
<user username="admin" password="SecurePassword123!" roles="manager-gui,admin-gui"/>
</tomcat-users>
sudo systemctl restart tomcat,使配置生效。7. 可选:配置防火墙允许访问
若需从外部网络访问Tomcat(默认端口8080),开放防火墙端口:
sudo ufw allow 8080/tcp # 允许TCP流量通过8080端口
sudo ufw enable # 启用防火墙(若未启用)
sudo ufw allow from 192.168.1.0/24 to any port 8080)。注意事项
tomcat用户加入sudo组(除非必要),减少权限滥用风险;server.xml、web.xml)需设置600权限,仅tomcat用户可读写。