温馨提示×

nodejs ubuntu日志权限咋设

小樊
41
2026-10-18 05:34:18
栏目: 编程语言

在 Ubuntu 上跑 Node.js 服务时,日志文件的权限设置一般从这几个方面考虑:谁能写、谁能读、是否安全。下面给你一套常用且安全的做法。


一、推荐做法(最常用)

1️⃣ 用专门用户运行 Node.js

不要直接用 root 跑 Node

sudo useradd -r -s /bin/false nodeapp

或已有用户:

sudo usermod -aG nodeapp youruser

2️⃣ 日志目录权限(推荐)

sudo mkdir -p /var/log/nodeapp
sudo chown -R nodeapp:nodeapp /var/log/nodeapp
sudo chmod 750 /var/log/nodeapp

含义:

  • 750 → 属主可读写执行,组用户可读执行,其他人无权限
  • 日志文件默认由 Node 创建

3️⃣ 日志文件权限

Node 创建后一般是:

-rw-r----- nodeapp nodeapp app.log

如果你想更严格:

sudo chmod 640 /var/log/nodeapp/app.log

二、用 systemd 的情况(非常常见)

如果你用 systemd 启动 Node:

service 文件示例

[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

❌ 日志权限 777

chmod 777 app.log

非常不安全


✅ PM2 用户注意

PM2 默认用当前用户:

pm2 start app.js --user nodeapp

五、快速检查命令

ls -l /var/log/nodeapp
ps aux | grep node

如果你愿意,可以告诉我:

  • 你是 裸 node / pm2 / docker / systemd
  • 日志是 console / winston / pino

我可以直接给你一套可复制的配置。

0 踩