在 Debian 上,“JS 日志权限”通常指 Node.js 应用写的日志文件(如 app.log)的 所有者 / 组 / 权限 设置,确保:
下面按常见场景说明。
先看你的 JS 是怎么跑的:
| 运行方式 | 写日志的用户 |
|---|---|
node app.js(手动) |
当前登录用户 |
| systemd 服务 | User= 指定的用户 |
| pm2 | pm2 启动用户 |
| nginx + node | node 用户 |
日志权限必须和“写日志的用户”匹配
sudo mkdir -p /var/log/myapp
sudo chown -R myuser:myuser /var/log/myapp
sudo chmod 750 /var/log/myapp
sudo touch /var/log/myapp/app.log
sudo chown myuser:myuser /var/log/myapp/app.log
sudo chmod 640 /var/log/myapp/app.log
含义:
640:owner 可读写,group 只读,其他无权限750:目录仅 owner 可进[Service]
User=myuser
Group=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node app.js
日志目录:
sudo chown -R myuser:myuser /var/log/myapp
✅ systemd 不会自动建日志文件,需提前建好
pm2 start app.js --user myuser
日志:
~/.pm2/logs/
权限:
chmod 750 ~/.pm2/logs
chmod 640 ~/.pm2/logs/*.log
如果 nginx 或日志收集器要读:
sudo groupadd logread
sudo usermod -aG logread myuser
sudo usermod -aG logread www-data
sudo chgrp logread /var/log/myapp
sudo chmod 750 /var/log/myapp
sudo chmod 640 /var/log/myapp/app.log
不要这样:
chmod 777 app.log ❌
推荐:
chmod 640 app.log ✅
ls -l /var/log/myapp
ps aux | grep node
错误示例:
EACCES: permission denied → 用户不对前端 JS 不能直接写服务器日志文件
只能通过:
console.log如果你能告诉我:
我可以给你 精确命令。