【问题标题】:How to exec shell command as normal user while current user is root [duplicate]当前用户为root时如何以普通用户身份执行shell命令[重复]
【发布时间】:2021-08-25 11:32:56
【问题描述】:

我以 root 身份运行 go run main.go,但我想以普通用户身份在 main.go 中执行 top

# main.go
package main

import (
    "context"
    "fmt"
    "os"
    "os/exec"
)

func run() {
    cmd := exec.CommandContext(context.TODO(), "bash", "-c", "top")
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    err := cmd.Run()
    if err != nil {
        fmt.Println(
            cmd.ProcessState.Success())
        return
    }
    fmt.Println(
        cmd.ProcessState.Success())
}

func main() {
    run()
}

我该怎么做?

【问题讨论】:

  • 注意:切勿使用go run main.go。 Go 代码由包管理,而不是文件。例如,请改用go run .

标签: go


【解决方案1】:

尝试像这样执行命令:

su fakeuser -c 'top -u `whoami`'

【讨论】:

【解决方案2】:

试试这个:

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {

    out, err := exec.Command("sudo", "-u", "YOURUSERNAME", "top", "-n", "1", "-b").Output()

    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(string(out))
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
相关资源
最近更新 更多