CentOS Java权限设置关键注意事项
为Java应用创建专用用户(如java_app_user)和组(如java_app_group),避免使用root运行。通过useradd创建用户并加入组,再使用chown -R java_app_user:java_app_group /path/to/java/app将应用文件所有权转移给该用户组,确保只有授权用户可访问。
755(所有者可读写执行,组和其他用户可读执行),确保应用能访问所需目录;644(所有者可读写,其他用户只读),避免不必要的写权限;application.properties、日志文件)设为640(所有者可读写,组可读),防止未授权修改。SELinux可提供比传统权限更细粒度的管控。通过sestatus检查SELinux状态(Enforcing为启用),使用chcon -R -t java_home_t /path/to/java/app为Java应用设置正确的SELinux上下文。若需永久生效,编辑/etc/selinux/config调整SELINUX参数(如permissive模式用于测试)。
通过Java安全管理器(SecurityManager)限制应用对系统资源的访问。启动时添加参数:java -Djava.security.manager -Djava.security.policy=/path/to/policy.file -jar your-app.jar。在policy.file中明确定义权限(如文件读写、网络连接),例如:
grant { permission java.io.FilePermission "/tmp/-", "read,write"; };
定期审查策略文件,适配应用变化。
chmod u+s)或SGID(chmod g+s),此类权限可能导致提权风险;chmod +t),防止非所有者删除他人文件。JAVA_HOME、PATH等环境变量正确配置(通过echo $JAVA_HOME验证),避免因路径问题导致权限异常;sudo -u java_app_user /path/to/java -jar app.jar),而非root。使用firewalld或iptables限制Java应用的网络端口访问。例如,开放8080端口供外部访问:sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp,然后sudo firewall-cmd --reload。仅开放必要端口,减少暴露风险。
设置日志文件权限(如/var/log/java-app/目录设为750),确保只有授权用户可写入。定期检查日志中的权限相关错误(如Permission denied),及时调整权限设置。