在 CentOS 上用 Golang 写程序时,“日志权限”通常涉及 3 个方面:
下面按常见场景说明。
/var/log/yourapp/
sudo mkdir -p /var/log/yourapp
sudo chown appuser:appuser /var/log/yourapp
sudo chmod 750 /var/log/yourapp
建议:不要用 root 跑 Go 程序
package main
import (
"log"
"os"
)
func main() {
logFile, err := os.OpenFile(
"/var/log/yourapp/app.log",
os.O_CREATE|os.O_WRONLY|os.O_APPEND,
0644, // 文件权限
)
if err != nil {
log.Fatal(err)
}
defer logFile.Close()
log.SetOutput(logFile)
log.Println("hello log")
}
权限说明
0644:属主可读写,其他只读[Unit]
Description=My Go App
[Service]
User=appuser
Group=appuser
WorkingDirectory=/opt/yourapp
ExecStart=/opt/yourapp/app
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start yourapp
✅ 日志权限由 User/Group + 目录权限 控制
原因:
✅ 解决:
sudo chown -R appuser:appuser /var/log/yourapp
不推荐:
chmod 777 /var/log/yourapp
推荐:
chmod 750 /var/log/yourapp
sudo vi /etc/logrotate.d/yourapp
/var/log/yourapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 appuser appuser
}
✅ 最佳实践:
7500644如果你愿意,可以告诉我:
我可以给你完全适配的配置示例。