在 CentOS 上 Java 报“权限错误(Permission denied)”,通常不是 Java 本身的问题,而是Linux 权限/安全机制导致的。下面按常见原因 + 解决办法给你梳理:
报错示例
java.io.FileNotFoundException: /xxx/xxx (Permission denied)
原因
解决
ls -l 文件或目录
chmod 755 目录
chown -R 用户:用户组 目录
例如:
root 启动 Tomcat解决
whoami
ps -ef | grep java
确保运行用户一致。
报错
Permission denied
但权限看起来是对的
检查
getenforce
如果是 Enforcing:
✅ 临时关闭测试:
setenforce 0
✅ 永久解决(不推荐直接关):
ausearch -m avc -ts recent
setsebool -P httpd_can_network_connect 1
或给文件加 SELinux 标签:
chcon -R -t httpd_sys_content_t /path
Java 经常用 /tmp
检查
ls -ld /tmp
正确应为:
drwxrwxrwt
修复:
chmod 1777 /tmp
报错
java.net.BindException: Permission denied
原因 普通用户不能绑定 80 / 443
解决
authbind./app.jar
-bash: ./app.jar: Permission denied
解决
chmod +x app.jar
mount | grep "on / "
如果是 ro,需要重新挂载为 rw。
ls -l 看权限whoami 看用户getenforce 看 SELinux/tmp 权限你可以把 完整报错信息 贴出来(哪怕是部分),我可以精准告诉你哪一条原因。
例如:
我可以一步一步帮你定位。