在 CentOS 上配置 Java 相关权限,通常分几种常见场景。下面我按最常见情况给你讲,基本就够了。
# 查看是否安装
java -version
# 用 yum 安装 OpenJDK
sudo yum install java-1.8.0-openjdk-devel
Java 一般装在:
/usr/lib/jvm/
正确权限一般是:
sudo chown -R root:root /usr/lib/jvm
sudo chmod -R 755 /usr/lib/jvm
⚠️ 不要给 777,不安全。
java -jar xxx.jar
只要:
chmod +r xxx.jar
Linux 下 非 root 不能绑定 1024 以下端口
❌ 错误做法:
sudo java -jar xxx.jar
✅ 推荐做法(3 种):
location / {
proxy_pass http://127.0.0.1:8080;
}
sudo setcap cap_net_bind_service=+ep /usr/bin/java
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo mkdir /data/javaapp
sudo chown -R appuser:appuser /data/javaapp
运行:
sudo -u appuser java -jar app.jar
java.service[Unit]
Description=Java App
After=network.target
[Service]
User=appuser
Group=appuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start java
如果报权限错误但权限看起来正常:
# 查看
getenforce
# 临时关闭测试
sudo setenforce 0
✅ 正确做法(不关 SELinux):
sudo semanage fcontext -a -t bin_t "/opt/app(/.*)?"
sudo restorecon -Rv /opt/app
java -version
echo $JAVA_HOME
ls -l /usr/lib/jvm
ps -ef | grep java
getenforce
如果你能说清楚 具体场景(例如:jar 起不来 / 没权限写日志 / 端口绑定失败 / systemd 报错),我可以直接给你精确命令。