在 CentOS 上使用 nohup 运行程序时,日志文件(通常是 nohup.out 或你自定义的重定向文件)的权限,取决于创建该文件的用户、umask 设置以及你是否手动指定权限。下面从几个常见场景说明。
nohup 日志是怎么产生的常见写法:
nohup your_command > app.log 2>&1 &
或默认:
nohup your_command &
# 默认生成 nohup.out
日志文件由执行命令的用户创建。
CentOS 默认 umask 通常是:
0022 → 文件权限 6440002 → 文件权限 664示例:
umask
touch app.log
chmod 644 app.log
chown appuser:appuser app.log
nohup your_command >> app.log 2>&1 &
优点:
nohup your_command > app.log 2>&1 &
chmod 640 app.log
⚠ 注意:
sudo 控制属主(服务场景)sudo -u appuser bash -c 'nohup your_command > /var/log/app.log 2>&1 &'
然后:
sudo chmod 640 /var/log/app.log
sudo chown appuser:appgroup /var/log/app.log
| 场景 | 推荐权限 | 说明 |
|---|---|---|
| 个人使用 | 644 | 默认即可 |
| 多用户服务器 | 640 | 防其他用户读 |
| 服务日志 | 660 + 专用组 | 应用+运维可读写 |
| root 服务 | 600 | 仅 root 可读 |
如果日志在 /var/log 下无法写:
ls -Z app.log
修复上下文:
semanage fcontext -a -t var_log_t "/var/log/app.log"
restorecon -v /var/log/app.log
sudo useradd -r appuser
sudo mkdir /var/log/myapp
sudo chown appuser:appuser /var/log/myapp
sudo -u appuser bash -c '
nohup /opt/myapp/start.sh > /var/log/myapp/app.log 2>&1 &
'
sudo chmod 640 /var/log/myapp/app.log
如果你能说明:
我可以给你更精确的权限方案。