温馨提示×

centos nohup日志为何权限拒

小樊
38
2026-09-03 03:54:28
栏目: 智能运维

在 CentOS 上用 nohup 启动程序时,出现**“日志权限拒绝 / Permission denied”,通常不是 nohup 本身的问题,而是日志文件或目录的写权限**问题。下面按常见原因逐一说明:


一、最常见原因

1️⃣ 当前用户对日志文件/目录没有写权限

例如:

nohup java -jar app.jar > /var/log/app.log 2>&1 &

如果 /var/log/app.log 属于 root,而你是普通用户,就会报:

bash: /var/log/app.log: Permission denied

✅ 解决:

sudo touch /var/log/app.log
sudo chown $USER:$USER /var/log/app.log

或改到自己有权限的目录:

nohup java -jar app.jar > ~/app.log 2>&1 &

2️⃣ 日志目录不存在

nohup app > /data/logs/app.log 2>&1 &

如果 /data/logs 不存在,也会报权限或找不到文件错误。

✅ 解决:

mkdir -p /data/logs
chown -R $USER:$USER /data/logs

3️⃣ 用 sudo 启动但日志路径属于普通用户

sudo nohup app > /home/user/app.log 2>&1 &

sudo 后以 root 身份写,可能没问题;但有时 SELinux 或家目录权限会拦。

✅ 建议:

  • 日志放在统一目录(如 /var/log/app/
  • 或明确指定属主

二、SELinux 引起的“权限拒绝”(CentOS 特有)

CentOS 默认开启 SELinux,即使 ls -l 显示有权限,也可能被拦截。

检查:

getenforce

如果是 Enforcing,可看审计日志:

sudo ausearch -m avc -ts recent

临时解决(不推荐长期使用):

sudo setenforce 0

正确做法:

sudo chcon -t var_log_t /var/log/app.log

或关闭 SELinux(生产不推荐)


三、nohup.out 本身权限问题

如果不指定重定向:

nohup app &

会在当前目录生成 nohup.out

如果:

  • 当前目录不可写
  • nohup.out 已存在但属主不是你

都会失败。

✅ 解决:

rm nohup.out
# 或
nohup app > my.log 2>&1 &

四、磁盘或 inode 问题(少见)

df -h
df -i

磁盘满或 inode 满也会表现成“写不进去”。


五、推荐的安全写法 ✅

mkdir -p /var/log/myapp
chown $USER:$USER /var/log/myapp

nohup /path/to/app \
  > /var/log/myapp/app.log 2>&1 &

总结一句话

CentOS 上 nohup 日志权限拒绝,99% 是“日志文件/目录写权限”或“SELinux”问题,不是 nohup 的锅。

如果你愿意,可以把完整报错命令 + 报错信息贴出来,我可以精确帮你定位。

0