在 Debian 下,用 nohup 启动程序时,默认会把输出写到 当前目录的 nohup.out,这个文件的权限通常由 umask 和启动用户决定。下面分几种常见情况说明怎么改日志权限。
最直接的方式:
chmod 644 nohup.out
chown user:group nohup.out
例如:
chmod 664 nohup.out
⚠️ 注意:
如果你用 sudo nohup ... 启动,文件可能属于 root,普通用户无法直接改。
不要直接用 nohup.out,而是自己指定日志:
nohup your_command > /var/log/myapp.log 2>&1 &
然后提前建好文件并设权限:
touch /var/log/myapp.log
chmod 664 /var/log/myapp.log
chown appuser:appuser /var/log/myapp.log
✅ 这样日志权限完全可控
nohup.out 的权限取决于 umask:
umask 022 # 默认,文件 644
umask 002 # 文件 664(组可写)
临时生效:
umask 002
nohup your_command &
永久生效(对当前用户):
echo "umask 002" >> ~/.bashrc
如果你在 Debian 上长期运行程序,不要用 nohup,用 systemd:
[Service]
ExecStart=/path/to/your_command
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.log
User=appuser
日志权限由你创建的 log 文件决定:
touch /var/log/myapp.log
chown appuser:appuser /var/log/myapp.log
chmod 640 /var/log/myapp.log
✅ 更安全、可控、可管理
nohup.out 在 当前工作目录sudo nohup → 文件属于 root664 + 同组用户如果你能贴一下:
ls -l nohup.out我可以给你一条最精确的命令。