温馨提示×

ubuntu nodejs日志如何权限

小樊
38
2026-09-21 18:23:00
栏目: 编程语言

在 Ubuntu 上,Node.js 日志文件的权限问题通常出现在:

  • 日志目录没有写权限
  • 用 root 启动但又切到普通用户
  • 使用 systemd / pm2 / docker 时权限不一致

下面按常见场景说明。


一、最基础的日志权限设置

1. 创建日志目录并设置权限

sudo mkdir -p /var/log/myapp
sudo chown -R youruser:youruser /var/log/myapp
sudo chmod 755 /var/log/myapp

Node.js 代码:

const fs = require('fs');
fs.writeFileSync('/var/log/myapp/app.log', 'hello');

二、使用 systemd 运行 Node.js(推荐)

1. 服务文件示例

[Unit]
Description=Node App

[Service]
User=nodeuser
Group=nodeuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node index.js
StandardOutput=append:/var/log/myapp/app.log
StandardError=append:/var/log/myapp/error.log
Restart=always

[Install]
WantedBy=multi-user.target

2. 日志目录权限

sudo mkdir -p /var/log/myapp
sudo chown -R nodeuser:nodeuser /var/log/myapp

✅ systemd 会自动管理日志权限


三、使用 PM2 的日志权限

PM2 默认日志在:

~/.pm2/logs/

修改日志路径

pm2 start index.js --output /var/log/myapp/out.log --error /var/log/myapp/err.log

然后:

sudo chown -R pm2user:pm2user /var/log/myapp

四、常见错误与解决

❌ EACCES: permission denied

原因:

  • 日志目录不属于运行 Node 的用户

解决:

whoami
ps aux | grep node
sudo chown -R 当前用户 /var/log/myapp

❌ 用 root 启动但有安全问题

不建议:

sudo node index.js

推荐:

sudo setcap cap_net_bind_service=+ep /usr/bin/node
node index.js

五、日志文件权限建议(生产环境)

chmod 640 app.log
chown appuser:adm app.log

加入 adm 组可查看日志:

sudo usermod -aG adm youruser

六、Docker 场景(补充)

RUN mkdir -p /var/log/app && \
    chown -R node:node /var/log/app
docker run -u node -v $(pwd)/logs:/var/log/app mynode

如果你能告诉我:

  • 用什么方式运行(systemd / pm2 / docker / 直接 node)
  • 日志写在哪里
  • 报错信息

我可以给你精确的一行命令解决方案。

0 踩