Maison >développement back-end >Golang >Golang implémente chcon
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!