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]部分明确User和Group为tomcat,并设置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-gui、admin-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命令验证设置是否生效。
以上就是关于“CentOS Tomcat权限设置要点”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm