gpt4 book ai didi

go - 在另一个用户下通过 os/exec 运行外部命令

转载 作者:IT老高 更新时间:2023-10-28 13:04:45 35 4
gpt4 key购买 nike

使用 os/exec 包,我想代表另一个用户在 *nix 操作系统上运行一个外部命令(当然 go 进程在另一个具有 su 权限的用户的 root 用户下运行)

我想避免使用“su”或“bash”命令,并完全使用 go。

我使用 syscall.Setuid 做了一个方法,但这会将用户更改为主项目,我只需要将用户更改为外部子进程:

func (self *Command) LoseTo(username string) {
u, err := user.Lookup(username)
if err != nil {
fmt.Printf("%v", err)
}

uid, err := strconv.Atoi(u.Uid)
if err := syscall.Setuid(uid); err != nil {
fmt.Printf("%v", err)
}
}

最佳答案

您可以将 syscall.Credential 结构添加到 Cmd.SysProcAttr

cmd := exec.Command(command, args...)
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid}

关于go - 在另一个用户下通过 os/exec 运行外部命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705950/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com