在Ubuntu系统中管理Node.js日志权限,需关注目录与文件的权限设置、用户隔离及工具配置,核心操作如下:
创建专用日志目录
sudo mkdir -p /var/log/my-node-app # 推荐存放在/var/log下
sudo chown nodeapp:nodeapp /var/log/my-node-app # 以专用用户/组创建(如nodeapp)
sudo chmod 750 /var/log/my-node-app # 目录权限:所有者可读写执行,组可读执行,其他无权限
配置日志文件权限
const fs = require('fs');
const logStream = fs.createWriteStream('/var/log/my-node-app/app.log', {
flags: 'a',
mode: 0o640 // 文件权限:所有者可读写,组可读,其他无权限
});
用户与权限隔离
root
运行Node.js应用,通过--uid
/--gid
参数指定专用用户(如PM2管理时):pm2 start app.js --uid nodeapp --gid nodeapp # 确保PM2日志目录权限正确
日志轮转与清理
logrotate
工具配置日志轮转,避免文件过大:sudo nano /etc/logrotate.d/my-node-app
# 添加内容:
/var/log/my-node-app/*.log {
daily
rotate 7
compress
create 640 nodeapp nodeapp
}
特殊场景处理
setfacl
:sudo setfacl -m u:alice:r /var/log/my-node-app/app.log # 仅允许alice读取
systemd
管理服务,确保服务文件中指定用户权限:[Service]
User=nodeapp
WorkingDirectory=/var/log/my-node-app
关键原则:遵循最小权限原则,避免过度开放权限;定期审查日志目录权限,敏感日志建议设置为600
权限。