在 Ubuntu 上设置 Node.js 日志文件的权限,通常要从日志文件本身、运行 Node 的用户、目录权限、以及日志轮转几个方面来考虑。下面按常见场景说明。
确定 Node.js 以哪个用户运行
node、www-data、ubuntu 或你自己ps aux | grep node
日志文件 & 目录归属要匹配
x)和写(w)权限sudo mkdir -p /var/log/myapp
sudo chown -R node:node /var/log/myapp
sudo chmod 755 /var/log/myapp
日志文件:
sudo touch /var/log/myapp/app.log
sudo chown node:node /var/log/myapp/app.log
sudo chmod 644 /var/log/myapp/app.log
644:属主可写,其他用户只读
755:目录可被进入
❌ 不推荐:
sudo node app.js
✅ 推荐:
node app.js
# 或
sudo -u node node app.js
如果你用 PM2:
pm2 start app.js --name myapp
PM2 默认日志在:
~/.pm2/logs/
设置权限:
sudo chown -R youruser:youruser ~/.pm2/logs
或统一日志目录:
pm2 start app.js --log /var/log/myapp/app.log
创建:
sudo nano /etc/logrotate.d/myapp
示例:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 644 node node
}
测试:
sudo logrotate -d /etc/logrotate.d/myapp
如果是 Docker:
RUN mkdir -p /var/log/myapp && \
chown -R node:node /var/log/myapp
USER node
❌ Permission denied
→ 日志目录 Node 用户无写权限
❌ 用 root 跑 Node
→ 安全风险 + 日志权限混乱
❌ 日志文件 600 但 Nginx 要读
→ 改 644 或加用户组
如果你愿意,可以告诉我:
我可以给你完全对应你环境的配置。