在 Linux 上部署 Node.js 服务时,日志文件的权限设置主要涉及:
谁运行 Node 进程、日志写到哪、其他用户是否能读/写/看。下面按常见场景说明。
✅ 日志文件属主 = 运行 Node 进程的用户
✅ 目录权限要先设对,再设文件权限
❌ 不要随便 chmod 777
/var/log/myapp/
适合生产环境
/home/user/app/logs/
sudo mkdir -p /var/log/myapp
sudo chown -R nodeuser:nodeuser /var/log/myapp
chmod 750 /var/log/myapp
含义:
Node 自动创建日志文件时:
-rw-r----- nodeuser nodeuser app.log
如果手动建:
touch /var/log/myapp/app.log
chown nodeuser:nodeuser /var/log/myapp/app.log
chmod 640 /var/log/myapp/app.log
PM2 默认用当前用户运行:
pm2 start app.js
日志一般在:
~/.pm2/logs/
权限没问题,只要用户目录安全即可。
[Service]
User=nodeuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node app.js
日志建议:
StandardOutput=append:/var/log/myapp/app.logStandardOutput=append:/var/log/myapp/out.log
StandardError=append:/var/log/myapp/err.log
然后:
chown nodeuser:nodeuser /var/log/myapp/*.log
❌ 不要在容器里 chmod 777
✅ 挂载卷 + 宿主机控制权限
docker run -v /var/log/myapp:/app/logs mynode
宿主机:
chown -R 1000:1000 /var/log/myapp
(1000 通常是 node 用户 UID)
原因:
解决:
ls -ld /var/log/myapp
ps aux | grep node
解决:
chmod 640 app.log
chmod 750 /var/log/myapp
Node 日志权限 = 运行用户能写,其他人尽量不能看
如果你愿意,可以告诉我:
我可以直接给你可复制的命令。