Maison  >  Article  >  développement back-end  >  Golang implémente chcon

Golang implémente chcon

WBOY
WBOYoriginal
2023-05-16 15:55:39437parcourir

Dans les systèmes Linux, l'étiquette de sécurité d'un fichier ou d'un répertoire fait partie du mécanisme SELinux. Pour modifier les étiquettes de sécurité, vous pouvez utiliser l'outil de ligne de commande chcon. Cependant, comment implémenter la commande chcon dans golang ?

Dans Golang, il est courant d'utiliser le package exec pour exécuter des commandes externes. Par conséquent, la commande chcon peut être appelée à l’aide du package exec. Utilisez l'extrait de code suivant pour exécuter la commande chcon :

cmd := exec.Command("chcon", "context", "file")
output, err := cmd.CombinedOutput()
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(output))

Dans le code ci-dessus, la fonction Command accepte la commande à exécuter et ses paramètres, et renvoie un pointeur de type Cmd. Utilisez la méthode CombinedOutput pour exécuter une commande et renvoyer les résultats combinés de la sortie standard et de la sortie d’erreur standard.

Regardons un exemple complet Le code suivant implémente un outil de ligne de commande qui peut changer l'étiquette de sécurité SELinux d'un fichier ou d'un répertoire avec un chemin spécifié vers une étiquette spécifiée :

package main

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

func main() {
    var context string
    var path string
    flag.StringVar(&context, "c", "", "set SELinux context to `context`")
    flag.StringVar(&path, "p", "", "set SELinux context for `path`")
    flag.Parse()

    if context == "" {
        log.Fatal("missing required option -c")
    }
    if path == "" {
        log.Fatal("missing required option -p")
    }

    cmd := exec.Command("chcon", context, path)
    output, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Fprintf(os.Stderr, "chcon failed: %v
", err)
        os.Exit(1)
    }
    fmt.Println(string(output))
}
#. 🎜🎜 #Dans cet exemple, le package flag est utilisé pour analyser les paramètres de ligne de commande. En déterminant si les paramètres requis sont spécifiés, les erreurs lors de l'exécution de modifications inattendues de fichiers sont évitées. Utilisez la fonction fmt.Fprintf pour générer des informations d'erreur vers la sortie d'erreur standard afin d'informer l'utilisateur de l'échec de l'opération avant la fin du programme.

Enregistrez le code ci-dessus sous chcon.go, utilisez go build pour générer le fichier exécutable et placez le fichier binaire généré dans la variable d'environnement PATH pour réaliser un appel global.

En bref, l'utilisation du package exec pour exécuter des commandes externes peut facilement implémenter la commande chcon dans golang. L'utilisation de paramètres de ligne de commande pour analyser les indicateurs de package peut garantir qu'aucune erreur inattendue ne se produit lors de l'exécution du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn