在 Linux 上部署 Node.js 服务时,日志文件的权限设置主要关注三点:谁运行 Node 进程、日志写到哪里、其他用户能否读/写。
下面按常见场景说明。
Node 进程用什么用户跑,日志文件就该属于这个用户。
例如:
www 用户运行 Node/var/log/node-app/
属主:
chown -R www:www /var/log/node-app
/var/log/node-app/
# 目录
chmod 750 /var/log/node-app
# 日志文件
chmod 640 /var/log/node-app/*.log
含义:
750:属主可读写执行,属组可读,其他无权限640:属主读写,属组读,其他无如果你用 systemd 启动 Node:
[Service]
User=www
Group=www
然后:
mkdir -p /var/log/node-app
chown -R www:www /var/log/node-app
chmod 750 /var/log/node-app
Node 代码里:
const fs = require('fs');
fs.writeFileSync('/var/log/node-app/app.log', 'log');
CMD ["node", "app.js"]
日志由 Docker 管理:
docker logs container_name
mkdir -p /var/log/node-app
chown 1000:1000 /var/log/node-app
Dockerfile:
USER 1000
使用 logrotate:
/etc/logrotate.d/node-app
示例:
/var/log/node-app/*.log {
daily
rotate 14
compress
missingok
notifempty
create 640 www www
sharedscripts
postrotate
systemctl reload node-app
endscript
}
❌ 日志目录属于 root,Node 用普通用户跑
✅ 改为 Node 用户拥有
❌ 日志权限 777
✅ 最小权限原则
❌ 写在 /home/user 但服务用 systemd
✅ 用 /var/log
ps aux | grep node
ls -l /var/log/node-app
如果你能补充:
我可以给你更精确的权限配置示例。