CentOS Java 权限设置技巧
一 基础权限与属主模型
sudo groupadd java_app_group、sudo useradd -g java_app_group java_app_user。将应用目录属主设为该用户与组:sudo chown -R java_app_user:java_app_group /opt/myapp,目录常用权限 755(所有者 rwx,组 rx,其他 rx),文件常用 644(所有者 rw,组 r,其他 r)。需要执行脚本或二进制时再对具体文件加 +x。这样可隔离权限、降低风险。二 安装与运行的最小权限配置
sudo chmod +x /usr/lib/jvm/jdk/bin/java。export JAVA_HOME=/usr/lib/jvm/jdk、export PATH=$JAVA_HOME/bin:$PATH,执行 source /etc/profile 生效。运行应用建议使用专用用户:sudo -u java_app_user -H java -jar /opt/myapp/app.jar,避免以 root 运行带来的安全风险。三 使用 SELinux 进行强制访问控制
sestatus、sudo setenforce 0|1(仅用于排查,生产不建议长期关闭)。若 SELinux 拦截访问,可调整文件上下文或布尔值,而非直接禁用。示例(按实际类型调整):sudo chcon -R -t usr_t /opt/myapp(示例类型,需依据系统实际类型设置)。四 基于 Java 安全管理器的策略控制
java -Djava.security.manager -Djava.security.policy=/opt/myapp/security.policy -jar app.jar。策略文件示例:仅允许应用目录读取与日志目录写入:
grant codeBase "file:/opt/myapp/-" { permission java.io.FilePermission "/opt/myapp/logs/-", "read,write"; permission java.io.FilePermission "/opt/myapp/config/-", "read"; };permission java.net.SocketPermission "localhost:1024-", "connect,resolve";五 常见故障排查清单
ls -l、chmod 755 <dir>、chmod 644 <file>、chown -R appuser:appgroup <path>),必要时用 sudo -u appuser 复现问题归属。sudo 提升;完成后修正属主与权限,避免长期以 root 拥有应用目录。getenforce/sestatus,临时 setenforce 0 验证;若由此引起,改用正确的文件上下文或策略模块,不要长期关闭 SELinux。echo $JAVA_HOME、echo $PATH),必要时在 ~/.bashrc 或 /etc/profile 中修正并 source 重载。