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用戶可讀寫。