温馨提示×

ubuntu java权限不足怎么破

小樊
33
2026-10-10 01:35:49
栏目: 编程语言

在 Ubuntu 上遇到 Java 权限不足,通常不是 Java 本身的问题,而是文件/目录权限、执行权限或用户身份导致的。下面按常见场景给你“破法”。


一、执行 .jar 报 Permission denied

现象

java -jar app.jar
bash: ./app.jar: Permission denied

解决

  1. 确认有执行权限
chmod +x app.jar
  1. 确认 java 可执行
which java
java -version

如果 java 不在 PATH:

sudo apt install default-jre

二、没有权限访问文件/目录(读/写失败)

现象

java.io.FilePermission denied
java.nio.file.AccessDeniedException

解决

  1. 查看文件权限
ls -l /path/to/file
  1. 修改权限(示例)
chmod 644 file.txt
chmod 755 dir/
  1. 修改属主(推荐)
sudo chown -R $USER:$USER /your/project

三、绑定端口失败(如 80 / 443)

现象

java.net.BindException: Permission denied

原因

1024 以下端口只有 root 能用

解决方式(任选)

✅ 用 sudo(不推荐长期)

sudo java -jar app.jar

✅ 改用高位端口(推荐)

server.port=8080

✅ 端口转发(生产推荐)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

✅ 赋予 java 绑定权限(高级)

sudo setcap CAP_NET_BIND_SERVICE=+eip $(readlink -f $(which java))

四、systemd 服务运行 Java 权限不足

现象

Permission denied (something)

解决

编辑服务文件:

sudo nano /etc/systemd/system/myapp.service

确保:

User=youruser
WorkingDirectory=/opt/myapp

然后:

sudo chown -R youruser:youruser /opt/myapp
sudo systemctl restart myapp

五、SELinux / AppArmor(少见但坑)

Ubuntu 默认是 AppArmor

查看:

sudo aa-status

临时测试:

sudo systemctl stop apparmor

六、快速自检清单 ✅

  • [ ] java -version 正常
  • [ ] 文件有读/写/执行权限
  • [ ] 不用 root 跑 Java(除非必须)
  • [ ] 端口 > 1024 或用转发
  • [ ] 日志中明确是哪种 Permission denied

如果你能贴出具体报错信息(命令行或日志),我可以直接帮你精准定位是哪一类权限问题。

0 踩