在 Debian 上“给 Java 权限”通常分几种场景,下面按最常见情况说明,你对照自己的需求看即可。
如果你是自己写的脚本或 jar 包没法运行,一般是没执行权限。
系统装的 Java 通常已经在 PATH 里:
which java
如果 Java 在 /usr/bin/java,默认就有执行权限。
chmod +x yourapp.jar
运行:
java -jar yourapp.jar
不要用 root 跑 Java:
sudo useradd -m appuser
sudo su - appuser
java -jar yourapp.jar
Linux 下 1024 以下端口只有 root 能用
sudo apt install authbind
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown appuser:appuser /etc/authbind/byport/80
authbind --deep java -jar yourapp.jar
sudo setcap CAP_NET_BIND_SERVICE=+eip $(readlink -f $(which java))
⚠️ 有安全风险,不推荐生产环境
[Unit]
Description=Java App
[Service]
User=appuser
ExecStart=/usr/bin/java -jar /opt/app/yourapp.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl start yourapp
Java 读文件没权限:
sudo chown -R appuser:appuser /data
sudo chmod -R 755 /data
| 现象 | 原因 |
|---|---|
| Permission denied | 没 chmod +x |
| 端口绑定失败 | 端口 < 1024 |
| 文件读不了 | 用户没权限 |
| root 能跑,普通用户不行 | 文件属主问题 |
如果你能具体说:
我可以给你精确命令。