centos

CentOS下Tomcat的权限设置技巧

小樊
40
2025-10-19 18:34:23
栏目: 智能运维

1. 创建专用Tomcat用户与用户组
为避免以root身份运行Tomcat带来的安全风险,需创建专用非特权用户及用户组。执行以下命令:

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

2. 调整Tomcat目录所有权与权限
将Tomcat安装目录(如/opt/tomcat)的所有权赋予tomcat用户及用户组,并设置合理权限:

sudo chown -R tomcat:tomcat /opt/tomcat  # 递归修改所有权
sudo find /opt/tomcat -type f -exec chmod 644 {} \;  # 文件设为644(所有者可读写,组及其他只读)
sudo find /opt/tomcat -type d -exec chmod 755 {} \;  # 目录设为755(所有者可读写执行,组及其他可读执行)
# 特殊目录权限调整(如logs需写入权限)
sudo chmod -R 775 /opt/tomcat/logs  # 允许tomcat用户及组写入日志

3. 配置Systemd服务以非root身份运行
编辑Tomcat的Systemd服务文件(/etc/systemd/system/tomcat.service),确保UserGroup指令指向tomcat,并添加UMask增强安全性:

[Service]
User=tomcat
Group=tomcat
UMask=0007  # 设置文件创建掩码(所有者全权限,组可读,其他无权限)
RestartSec=10
Restart=always

加载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart tomcat
sudo systemctl enable tomcat  # 开机自启

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

# 设置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上下文(避免重启丢失)
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/opt/tomcat/logs(/.*)?"
sudo restorecon -Rv /opt/tomcat
# 临时允许Tomcat网络连接(若需远程访问)
sudo setsebool -P tomcat_can_network_connect 1

5. 通过防火墙限制网络访问
使用firewalld仅允许可信IP访问Tomcat默认端口(8080),提升安全性:

# 允许特定IP访问8080端口(如192.168.1.100)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept'
# 禁止其他IP访问8080端口
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="!" source address="192.168.1.100" port protocol="tcp" port="8080" reject'
sudo firewall-cmd --reload  # 重新加载防火墙规则

6. 管理Tomcat用户角色与权限
编辑tomcat-users.xml(位于/opt/tomcat/conf/),配置不同角色的用户,限制对管理界面的访问:

<tomcat-users>
    <!-- 管理员角色(可访问管理界面) -->
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <!-- 只读用户(仅查看应用) -->
    <user username="readonly" password="securepassword" roles="manager-gui"/>
    <!-- 管理员用户(可管理应用) -->
    <user username="admin" password="strongpassword" roles="manager-gui,admin-gui"/>
</tomcat-users>

重启Tomcat使配置生效:

sudo systemctl restart tomcat

7. 优化Tomcat启动脚本权限
确保Tomcat启动脚本(/opt/tomcat/bin/*.sh)具有可执行权限:

sudo chmod +x /opt/tomcat/bin/*.sh

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

# 编辑限制文件
sudo vi /etc/security/limits.d/90-nproc.conf
# 添加以下内容(软限制4096,硬限制8192)
tomcat_user soft nproc 4096
tomcat_user hard nproc 8192
tomcat_user soft nofile 4096
tomcat_user hard nofile 16384

验证设置是否生效:

su - tomcat
ulimit -a  # 查看当前用户资源限制

0
看了该问题的人还看了