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)) }
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!