温馨提示×

Tomcat在CentOS上的权限设置有哪些

小樊
77
2025-09-22 04:49:55
栏目: 智能运维

1. 创建专用Tomcat用户和用户组
为避免以root权限运行Tomcat(降低安全风险),需创建专用用户及用户组。常用命令如下:

sudo groupadd tomcat  # 创建tomcat用户组
sudo useradd -M -s /sbin/nologin -g tomcat -d /opt/tomcat tomcat  # 创建用户(无登录权限,指定家目录)

其中,-M表示不创建家目录,-s /sbin/nologin禁止用户登录系统,-d指定家目录为Tomcat安装路径。

2. 更改Tomcat目录所有权
将Tomcat安装目录(如/opt/tomcat)的所有者和用户组设置为tomcat,确保Tomcat进程有权访问:

sudo chown -R tomcat:tomcat /opt/tomcat  # -R表示递归修改所有子目录和文件

3. 设置目录权限
为目录分配合理权限,兼顾访问需求与安全性:

  • 目录权限:设为755(所有者可读/写/执行,组和其他用户可读/执行),适用于binconfwebapps等目录;
  • 文件权限:设为644(所有者可读/写,组和其他用户可读),适用于*.xml*.properties等配置文件。
    命令示例:
sudo find /opt/tomcat -type d -exec chmod 755 {} \;  # 递归设置目录权限
sudo find /opt/tomcat -type f -exec chmod 644 {} \;  # 递归设置文件权限

此外,需为启动脚本添加执行权限:

sudo chmod +x /opt/tomcat/bin/*.sh  # 允许执行startup.sh、shutdown.sh等脚本

4. 配置Tomcat服务以专用用户运行
通过修改Systemd服务文件,确保Tomcat启动时使用tomcat用户:
编辑/etc/systemd/system/tomcat.service(若未创建,可复制默认模板),在[Service]部分添加:

[Service]
User=tomcat
Group=tomcat
UMask=0007  # 设置文件创建掩码(默认权限为777-0007=770)
RestartSec=10
Restart=always

然后重新加载Systemd并重启Tomcat:

sudo systemctl daemon-reload
sudo systemctl restart tomcat

5. 配置SELinux(若系统启用)
若SELinux处于enforcing模式(sestatus命令验证),需调整策略允许Tomcat访问资源:

  • 设置SELinux上下文:将Tomcat目录标记为httpd_sys_content_t(静态内容),日志目录标记为httpd_sys_rw_content_t(可读写):
    sudo chcon -R -t httpd_sys_content_t /opt/tomcat  # 静态内容上下文
    sudo chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs  # 日志目录可写
    
  • 持久化上下文:修改SELinux配置文件/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive(临时允许),重启系统后再改回enforcing;或使用semanage命令永久添加上下文:
    sudo semanage fcontext -a -t httpd_sys_content_t "/opt/tomcat(/.*)?"  # 添加规则
    sudo restorecon -Rv /opt/tomcat  # 恢复上下文
    
  • 允许Tomcat绑定低端口(如80):若需Tomcat监听80端口(默认需root权限),可赋予CAP_NET_BIND_SERVICE能力:
    sudo setcap 'cap_net_bind_service=+ep' /opt/tomcat/bin/java
    

6. 配置防火墙
允许外部访问Tomcat默认端口(8080),若使用其他端口需相应调整:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp  # 永久添加端口规则
sudo firewall-cmd --reload  # 重新加载防火墙配置

7. 删除默认应用(可选但推荐)
首次安装后,删除webapps目录下的默认应用(如ROOTexamples),防止恶意代码部署:

sudo rm -rf /opt/tomcat/webapps/*

8. 隐藏Tomcat版本信息(可选)
修改server.xml中的Connector标签,添加server属性,隐藏Tomcat版本:

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" 
           server="MyAppServer/1.0" />

9. 关闭自动部署(可选但推荐)
server.xmlContext标签中,设置autoDeploy="false"unpackWARs="false",防止恶意WAR文件自动部署:

<Context docBase="/opt/tomcat/webapps/yourapp" 
         unpackWARs="false" 
         autoDeploy="false" />

0