在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
權限。