首页 > 解决方案 > 当前用户为root时如何以普通用户身份执行shell命令

问题描述

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

# 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

解决方案


尝试执行这样的命令:

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

推荐阅读