Heim > Backend-Entwicklung > Golang > Wie führe ich externe Befehle als anderer Benutzer in Go aus?

Wie führe ich externe Befehle als anderer Benutzer in Go aus?

Mary-Kate Olsen
Freigeben: 2024-12-31 10:38:08
Original
516 Leute haben es durchsucht

How to Run External Commands as a Different User in Go?

Externe Befehle mit os/exec unter einem anderen Benutzer ausführen

In Go ist es mit dem os/exec-Paket möglich, externe Befehle im Namen eines anderen Benutzers auszuführen . Dies ist besonders nützlich, wenn Ihre Anwendung als Root ausgeführt wird und Befehle mit den Berechtigungen eines anderen Benutzers ausführen muss.

Eine Methode, dies zu erreichen, ist die Verwendung der syscall.Credential-Struktur. Durch Hinzufügen dieser Struktur zum SysProcAttr-Feld des Cmd-Objekts können Sie die Benutzer-ID (Uid) und Gruppen-ID (Gid) für den externen Prozess angeben. Dadurch wird sichergestellt, dass der Befehl unter den Berechtigungen des angegebenen Benutzers ausgeführt wird.

Hier ein Beispiel:

import (
    "os/exec"
    "syscall"
)

func main() {
    // Get the user ID and group ID for the desired user.
    u, err := user.Lookup("username")
    if err != nil {
        fmt.Printf("%v", err)
        return
    }

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

    gid, err := strconv.Atoi(u.Gid)
    if err != nil {
        fmt.Printf("%v", err)
        return
    }

    // Create the command object.
    cmd := exec.Command("command", "args...")

    // Set the SysProcAttr field to specify the user credentials.
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Credential: &syscall.Credential{
            Uid: uint32(uid),
            Gid: uint32(gid),
        },
    }

    // Execute the command.
    if err := cmd.Run(); err != nil {
        fmt.Printf("%v", err)
        return
    }
}
Nach dem Login kopieren

Mit diesem Ansatz können Sie externe Befehle unter den Berechtigungen eines anderen Benutzers ausführen, ohne auf externe Befehle angewiesen zu sein Befehle wie „su“ oder „bash“. Beachten Sie, dass die Berechtigungen des laufenden Go-Prozesses die Möglichkeit umfassen müssen, sich als der gewünschte Benutzer auszugeben.

Das obige ist der detaillierte Inhalt vonWie führe ich externe Befehle als anderer Benutzer in Go aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage