Dalam sistem Linux, label keselamatan untuk fail atau direktori adalah sebahagian daripada mekanisme SELinux. Untuk mengubah suai label keselamatan, anda boleh menggunakan alat baris arahan chcon. Walau bagaimanapun, bagaimana untuk melaksanakan arahan chcon dalam golang?
Dalam golang, adalah amalan biasa untuk menggunakan pakej exec untuk melaksanakan arahan luaran. Oleh itu, arahan chcon boleh dipanggil menggunakan pakej exec. Gunakan coretan kod berikut untuk melaksanakan arahan chcon:
cmd := exec.Command("chcon", "context", "file") output, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Println(string(output))
Dalam kod di atas, fungsi Perintah menerima arahan yang akan dilaksanakan dan parameternya dan mengembalikan penunjuk jenis Cmd. Gunakan kaedah CombinedOutput untuk menjalankan arahan dan mengembalikan hasil gabungan output standard dan output ralat standard.
Lihat contoh lengkap Kod berikut melaksanakan alat baris arahan yang boleh menukar label keselamatan SELinux fail atau direktori dengan laluan tertentu ke label yang ditentukan:
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)) }
Dalam ini contoh Dalam, pakej bendera digunakan untuk menghuraikan parameter baris arahan. Dengan menentukan sama ada parameter yang diperlukan ditentukan, ralat dalam melakukan perubahan fail yang tidak dijangka dapat dielakkan. Gunakan fungsi fmt.Fprintf untuk mengeluarkan maklumat ralat kepada output ralat standard untuk memberitahu pengguna tentang kegagalan operasi sebelum program ditamatkan.
Simpan kod di atas sebagai chcon.go, gunakan go build untuk menjana fail boleh laku dan letakkan fail binari yang dijana dalam pembolehubah persekitaran PATH untuk mencapai panggilan global.
Ringkasnya, menggunakan pakej exec untuk melaksanakan arahan luaran dengan mudah boleh melaksanakan arahan chcon dalam golang. Menggunakan parameter baris arahan untuk menghuraikan bendera pakej boleh memastikan bahawa ralat yang tidak dijangka tidak akan berlaku semasa pelaksanaan program.
Atas ialah kandungan terperinci golang implements chcon. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!