在 Ubuntu 上跑 Node.js 服务时,日志文件的权限设置一般从这几个方面考虑:谁能写、谁能读、是否安全。下面给你一套常用且安全的做法。
不要直接用 root 跑 Node
sudo useradd -r -s /bin/false nodeapp
或已有用户:
sudo usermod -aG nodeapp youruser
sudo mkdir -p /var/log/nodeapp
sudo chown -R nodeapp:nodeapp /var/log/nodeapp
sudo chmod 750 /var/log/nodeapp
含义:
750 → 属主可读写执行,组用户可读执行,其他人无权限Node 创建后一般是:
-rw-r----- nodeapp nodeapp app.log
如果你想更严格:
sudo chmod 640 /var/log/nodeapp/app.log
如果你用 systemd 启动 Node:
[Service]
User=nodeapp
Group=nodeapp
WorkingDirectory=/opt/nodeapp
ExecStart=/usr/bin/node server.js
StandardOutput=append:/var/log/nodeapp/app.log
StandardError=append:/var/log/nodeapp/error.log
systemd 会自动处理权限,只要目录属主对。
Ubuntu 一般用 logrotate
/etc/logrotate.d/nodeapp/var/log/nodeapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 nodeapp nodeapp
sharedscripts
postrotate
systemctl reload nodeapp
endscript
}
/opt/nodeapp/logs
容易被代码泄露、权限乱
✅ 推荐:
/var/log/nodeapp
chmod 777 app.log
非常不安全
PM2 默认用当前用户:
pm2 start app.js --user nodeapp
ls -l /var/log/nodeapp
ps aux | grep node
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。