Golang Dropping Privileges (v1.7)
Dalam usaha untuk mencipta pelayan web tersuai, anda telah menghadapi cabaran untuk menggugurkan keistimewaan sambil mengikat ke port 80, yang memerlukan akses root. Walaupun penyelesaian alternatif mungkin melibatkan penghalaan semula port 80, ini menimbulkan risiko keselamatan. Bagaimanakah anda boleh menavigasi isu ini dengan berkesan?
Menurut respons yang diberikan, Go menawarkan penyelesaian menyeluruh dengan membenarkan anda membuka port, mengesan UID dan jika 0, cari pengguna yang dikehendaki dan dapatkan semula UID. Selepas itu, anda boleh menggunakan panggilan glibc untuk menetapkan UID dan GID proses.
Adalah penting untuk menekankan kepentingan memanggil kod setuid serta-merta selepas mengikat port. Tidak seperti http.ListenAndServe(TLS)? fungsi helper, anda perlu menubuhkan net.Listener anda secara bebas dan menggunakan setuid post port binding tetapi sebelum memulakan http.Serve.
Coretan kod yang disediakan menunjukkan pendekatan ini dengan berkesan. Ia termasuk pelaksanaan SSL dan membolehkan anda berjalan dalam mod "pembangunan" dengan UID bukan akar pada port tinggi tanpa menghadapi komplikasi. Ingat untuk memperibadikan fail konfigurasi dengan menetapkan alamat, port, pengguna, kumpulan dan nama fail TLS.
Atas ialah kandungan terperinci Bagaimanakah Aplikasi Go Boleh Menggugurkan Keistimewaan Dengan Selamat Selepas Diikat ke Port 80?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!