温馨提示×

centos golang日志权限怎设置

小樊
39
2026-09-30 06:24:20
栏目: 编程语言

在 CentOS 上用 Golang 写程序时,“日志权限”通常涉及 3 个方面:

  1. 日志文件本身的 Linux 文件权限
  2. 程序以什么用户运行(影响能否写日志)
  3. Golang 代码中如何创建/追加日志文件

下面按常见场景说明。


一、最推荐的做法(标准方式)

1️⃣ 日志放到标准目录

/var/log/yourapp/

2️⃣ 创建日志目录并设置权限

sudo mkdir -p /var/log/yourapp
sudo chown appuser:appuser /var/log/yourapp
sudo chmod 750 /var/log/yourapp

建议:不要用 root 跑 Go 程序


3️⃣ Golang 中写日志(推荐)

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:属主可读写,其他只读
  • 目录权限决定“能不能创建文件”

二、Systemd 服务场景(CentOS 7/8)

service 文件示例

[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 + 目录权限 控制


三、常见错误 & 解决

❌ Permission denied

原因:

  • 目录不可写
  • 用 root 创建日志,普通用户无法写

✅ 解决:

sudo chown -R appuser:appuser /var/log/yourapp

❌ 日志文件权限太开放

不推荐:

chmod 777 /var/log/yourapp

推荐:

chmod 750 /var/log/yourapp

四、使用 logrotate(很重要)

sudo vi /etc/logrotate.d/yourapp
/var/log/yourapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 0644 appuser appuser
}

五、总结建议

✅ 最佳实践:

  • 不用 root 运行 Go 程序
  • 日志目录权限 750
  • 日志文件 0644
  • 用 systemd 管理
  • 配 logrotate

如果你愿意,可以告诉我:

  • CentOS 版本
  • 是否用 systemd
  • 日志库(log / zap / logrus)

我可以给你完全适配的配置示例。

0 踩