温馨提示×

CentOS Tomcat权限设置要点

小樊
48
2025-10-30 06:54:11
栏目: 智能运维

1. 创建专用Tomcat用户与用户组
为避免以root权限运行Tomcat带来的安全风险,需创建专用用户及用户组。推荐使用-M(不创建家目录)、-s /sbin/nologin(禁止登录)参数限制用户权限:

sudo groupadd tomcat
sudo useradd -M -s /sbin/nologin -g tomcat tomcat

2. 调整Tomcat目录所有权与权限
将Tomcat安装目录(如/opt/tomcat)的所有者设为tomcat用户及用户组,权限设为755(所有者可读/写/执行,其他用户仅可读/执行),防止未授权修改:

sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 755 /opt/tomcat

3. 配置Systemd服务以指定运行用户
编辑Tomcat的Systemd服务文件(通常位于/etc/systemd/system/tomcat.service),在[Service]部分明确UserGrouptomcat,并设置UMask=0007(限制新创建文件权限为770,防止其他用户访问):

[Service]
User=tomcat
Group=tomcat
UMask=0007
Restart=always
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

修改后需重载Systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart tomcat

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

  • 允许Tomcat执行内存操作(如JSP编译):
    sudo setsebool -P tomcat_execmem 1
    
  • 设置Tomcat目录的SELinux上下文:
    sudo chcon -R -t httpd_sys_content_t /opt/tomcat  # 允许读取静态内容
    sudo chcon -R -t httpd_sys_rw_content_t /opt/tomcat/logs  # 允许写入日志
    

5. 管理Tomcat用户与角色
编辑conf/tomcat-users.xml文件,添加角色(如manager-guiadmin-gui)及对应用户,控制对管理界面的访问:

<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="admin" password="strong_password" roles="manager-gui,admin-gui"/>
</tomcat-users>

修改后需重启Tomcat使配置生效。

6. 限制网络访问
使用firewalld限制Tomcat端口(默认8080)的访问,仅允许可信IP或网络段访问:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload

若需更严格的访问控制,可通过context.xml添加IP过滤(如仅允许本地访问管理界面):

<Context>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|10\.0\.0\.0/8"/>
</Context>

7. 解决资源限制问题
编辑/etc/security/limits.d/90-nproc.conf文件,增加Tomcat用户的进程数和文件描述符限制,避免因资源不足导致服务崩溃:

tomcat soft nproc 4096
tomcat hard nproc 8192
tomcat soft nofile 4096
tomcat hard nofile 16384

修改后可通过ulimit -a命令验证设置是否生效。

0