在 Linux 下,JS 日志(无论是 Node.js 应用日志,还是前端构建/服务端日志文件)本质上就是普通文件,权限设置主要遵循 Linux 文件权限规则。下面按「常见场景 + 实操命令」说明。
Linux 文件权限:
r = 读(4)
w = 写(2)
x = 执行(1)
示例:
-rw-r--r-- 1 app app 1234 Jun 10 10:00 app.log
表示:
假设日志目录:
/var/log/myapp/
推荐做法:
# 创建日志目录
sudo mkdir -p /var/log/myapp
# 设为运行 Node 的用户(如 app)
sudo chown -R app:app /var/log/myapp
# 目录权限
sudo chmod 755 /var/log/myapp
# 日志文件权限
sudo chmod 644 /var/log/myapp/*.log
✅ 说明:
PM2 默认日志在:
~/.pm2/logs/
如果你用 pm2 启动:
pm2 start app.js
日志权限通常是启动用户所有,一般不需要手动改。
如要统一:
chmod 644 ~/.pm2/logs/*.log
Docker 容器内:
/app/logsdocker run -v /data/logs:/app/logs node:18
宿主机设置:
chown -R 1000:1000 /data/logs
chmod 755 /data/logs
(1000 通常是 node 用户 UID)
如果你用 systemd:
[Service]
User=app
ExecStart=/usr/bin/node /opt/app/index.js
日志可写到:
/var/log/app/
sudo chown -R app:app /var/log/app
sudo chmod 750 /var/log/app
避免日志无限变大:
sudo vim /etc/logrotate.d/myapp
示例:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 644 app app
}
✅ 不要给 777
❌ 错误示例:
chmod 777 app.log
✅ 推荐:
750 或 755640 或 644# 看是谁在跑 Node
ps aux | grep node
# 看日志权限
ls -l /var/log/myapp
# 测试是否能写
sudo -u app touch /var/log/myapp/test.log
如果你能告诉我:
我可以直接给你一套精准权限方案。