温馨提示×

nodejs日志linux权限怎设

小樊
50
2026-10-08 11:08:38
栏目: 编程语言

在 Linux 上部署 Node.js 服务时,日志文件的权限设置主要关注三点:谁运行 Node 进程、日志写到哪里、其他用户能否读/写。

下面按常见场景说明。


一、基本原则

1. 日志文件归属 = 运行 Node 的用户

Node 进程用什么用户跑,日志文件就该属于这个用户。

例如:

  • 用 www 用户运行 Node
  • 日志目录应为:
/var/log/node-app/

属主:

chown -R www:www /var/log/node-app

二、推荐目录与权限

标准日志目录

/var/log/node-app/

推荐权限

# 目录
chmod 750 /var/log/node-app

# 日志文件
chmod 640 /var/log/node-app/*.log

含义:

  • 750:属主可读写执行,属组可读,其他无权限
  • 640:属主读写,属组读,其他无

三、systemd 场景(最常见)

如果你用 systemd 启动 Node:

[Service]
User=www
Group=www

然后:

mkdir -p /var/log/node-app
chown -R www:www /var/log/node-app
chmod 750 /var/log/node-app

Node 代码里:

const fs = require('fs');
fs.writeFileSync('/var/log/node-app/app.log', 'log');

四、Docker 场景

方式 1:写 stdout(推荐)

CMD ["node", "app.js"]

日志由 Docker 管理:

docker logs container_name

方式 2:写文件

mkdir -p /var/log/node-app
chown 1000:1000 /var/log/node-app

Dockerfile:

USER 1000

五、日志轮转(很重要)

使用 logrotate:

/etc/logrotate.d/node-app

示例:

/var/log/node-app/*.log {
    daily
    rotate 14
    compress
    missingok
    notifempty
    create 640 www www
    sharedscripts
    postrotate
        systemctl reload node-app
    endscript
}

六、常见错误

❌ 日志目录属于 root,Node 用普通用户跑
✅ 改为 Node 用户拥有

❌ 日志权限 777
✅ 最小权限原则

❌ 写在 /home/user 但服务用 systemd
✅ 用 /var/log


七、快速检查命令

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

如果你能补充:

  • Node 启动方式(systemd / pm2 / docker)
  • 日志库(winston / pino / 原生 fs)
  • Linux 发行版

我可以给你更精确的权限配置示例。

0 踩