在 Debian 上“JS 日志权限”通常指 Node.js 应用写日志文件时的权限问题(比如用 pm2、node 直接跑、或 nginx 反代)。下面按常见场景说明怎么设置。
先搞清楚进程用户,否则权限怎么改都可能不对。
ps aux | grep node
常见情况:
node app.js → 当前登录用户pm2 start → 通常是当前用户User=xxxsudo mkdir -p /var/log/myapp
sudo chown -R myuser:myuser /var/log/myapp
JS 代码里:
const fs = require('fs');
fs.appendFileSync('/var/log/myapp/app.log', 'log\n');
✅ 好处:不碰系统目录,权限清晰
[Unit]
Description=My Node App
[Service]
User=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node app.js
StandardOutput=append:/var/log/myapp/app.log
StandardError=append:/var/log/myapp/error.log
[Install]
WantedBy=multi-user.target
然后:
sudo systemctl daemon-reload
sudo systemctl restart myapp
sudo chmod 640 /var/log/myapp/app.log
sudo chown myuser:myuser /var/log/myapp/app.log
sudo chmod 644
现象:
EACCES: permission denied
解决:
sudo chown -R myuser /var/log/myapp
pm2 默认日志在:
~/.pm2/logs/
改日志路径:
pm2 start app.js --log /var/log/myapp/pm2.log
如果是 前端 JS:
/var/log/nginx/access.log
权限:
sudo chown www-data:adm /var/log/nginx/*.log
sudo chmod 640 /var/log/nginx/*.log
JS 日志权限 = 日志目录属主 = 运行 JS 的用户
如果你愿意,可以告诉我:
/var/log 还是项目目录)?我可以直接给你一套精确配置。