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))
}
2条答案
按热度按时间3zwtqj6y1#
我不认为在go中有
sudo
的构建。但是,有一些外部库允许从Go代码执行shell命令,例如os/exec
和syscall
。另一种选择是首先使用
os.chmod
更改权限,以允许您自己进行写访问,创建文件,然后将权限更改回其原始状态。或者创建一个具有所需权限的用户并使用该用户运行程序。
deikduxw2#
golang可执行文件是从运行该可执行文件的用户的上下文中执行的。如果你执行
go run main.go
,它将以“你”的身份运行。如果你执行sudo go run main.go
,它将以root用户的身份运行。出于这个原因,只需编写应用程序,就像它有sudo一样。并确保运行
sudo go run main.go
。写入文件的示例程序:https://goplay.tools/snippet/_N96gaDGAvD