在 CentOS 上使用 nohup 运行程序时,日志文件(通常是 nohup.out 或你指定的日志文件)的权限来自于创建该文件的用户和 umask 设置。下面从几个常见场景说明如何设置/控制权限。
nohup command > nohup.out 2>&1 &
umask 影响(通常是 0644 或 0640)例如:
umask
# 0022 → 文件权限 644
# 0027 → 文件权限 640
touch /var/log/myapp.log
chmod 640 /var/log/myapp.log
chown appuser:appgroup /var/log/myapp.log
nohup command >> /var/log/myapp.log 2>&1 &
✅ 好处:权限不会变,适合生产环境
umask 027
nohup command > nohup.out 2>&1 &
027 → 文件权限 640022 → 文件权限 644⚠ 只对新创建的文件有效
sudo -u appuser bash -c 'nohup command > /home/appuser/log.out 2>&1 &'
日志归 appuser 所有,其他人无权访问
如果你用 logrotate:
/var/log/myapp.log {
rotate 7
daily
compress
missingok
notifempty
create 640 appuser appgroup
}
✅ create 可指定轮转后日志权限和属主
chmod 644 nohup.out
chmod 644 nohup.out
# 或加入组
chgrp logreaders nohup.out
chmod 640 nohup.out
| 场景 | 建议 |
|---|---|
| 生产环境 | 提前建日志 + chown/chmod |
| 多用户 | 用组权限(640) |
| 安全 | 避免 666 / 777 |
| 自动化 | 配合 logrotate |
如果你能提供:
我可以给你一条可直接用的命令。