在 Ubuntu 上,Node.js 日志文件的权限问题通常出现在:
root 启动但又切到普通用户systemd / pm2 / docker 时权限不一致下面按常见场景说明。
sudo mkdir -p /var/log/myapp
sudo chown -R youruser:youruser /var/log/myapp
sudo chmod 755 /var/log/myapp
Node.js 代码:
const fs = require('fs');
fs.writeFileSync('/var/log/myapp/app.log', 'hello');
[Unit]
Description=Node App
[Service]
User=nodeuser
Group=nodeuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node index.js
StandardOutput=append:/var/log/myapp/app.log
StandardError=append:/var/log/myapp/error.log
Restart=always
[Install]
WantedBy=multi-user.target
sudo mkdir -p /var/log/myapp
sudo chown -R nodeuser:nodeuser /var/log/myapp
✅ systemd 会自动管理日志权限
PM2 默认日志在:
~/.pm2/logs/
pm2 start index.js --output /var/log/myapp/out.log --error /var/log/myapp/err.log
然后:
sudo chown -R pm2user:pm2user /var/log/myapp
原因:
解决:
whoami
ps aux | grep node
sudo chown -R 当前用户 /var/log/myapp
不建议:
sudo node index.js
推荐:
sudo setcap cap_net_bind_service=+ep /usr/bin/node
node index.js
chmod 640 app.log
chown appuser:adm app.log
加入 adm 组可查看日志:
sudo usermod -aG adm youruser
RUN mkdir -p /var/log/app && \
chown -R node:node /var/log/app
docker run -u node -v $(pwd)/logs:/var/log/app mynode
如果你能告诉我:
我可以给你精确的一行命令解决方案。