Go语言 使用sudo创建文件

hgqdbh6s  于 2023-04-03  发布在  Go
关注(0)|答案(2)|浏览(186)

我想用Go的os.Create(filename)方法创建一个文件(相当于'mkdir filename')。但是我没有文件夹的写权限。是否有'sudo mkdir filename'的Go方法?我在官方文档或其他地方找不到任何参考。

3zwtqj6y

3zwtqj6y1#

我不认为在go中有sudo的构建。但是,有一些外部库允许从Go代码执行shell命令,例如os/execsyscall
另一种选择是首先使用os.chmod更改权限,以允许您自己进行写访问,创建文件,然后将权限更改回其原始状态。
或者创建一个具有所需权限的用户并使用该用户运行程序。

deikduxw

deikduxw2#

golang可执行文件是从运行该可执行文件的用户的上下文中执行的。如果你执行go run main.go,它将以“你”的身份运行。如果你执行sudo go run main.go,它将以root用户的身份运行。
出于这个原因,只需编写应用程序,就像它有sudo一样。并确保运行sudo go run main.go
写入文件的示例程序:https://goplay.tools/snippet/_N96gaDGAvD

package main

import (
    "fmt"
    "os"
)

func main() {
    // Choose your own perms here
    file, err := os.OpenFile("myfile.txt", os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        panic(err)
    }

    _, err = file.WriteString("Hello World!")
    if err != nil {
        panic(err)
    }
    file.Close()

    data, err := os.ReadFile("myfile.txt")
    if err != nil {
        panic(err)
    }

    fmt.Println(string(data))
}

相关问题