Saya ingin menjalankan program tanpa akses internet, mis.
unshare -n ping 127.0.0.1
.
Sebagai pengguna yang tidak memiliki hak istimewa, ia mengembalikan Operation not permitted
, sebagai pengguna istimewa, ia mengembalikan Network is unreachable
yang diinginkan .
Apakah ada cara untuk membuatnya bekerja untuk pengguna yang tidak memiliki hak juga?
Jawaban yang Diterima:
Di versi util-linux yang lebih baru, unshare
memperoleh --map-root-user
pilihan. Mengutip dari unshare(1)
versi 2.26.2:
-r, –map-root-user
Jalankan program hanya setelah ID pengguna dan grup yang efektif saat ini telah dipetakan ke UID dan GID pengguna super di ruang nama pengguna yang baru dibuat. Hal ini memungkinkan untuk dengan mudah memperoleh kemampuan yang diperlukan untuk mengelola berbagai aspek ruang nama yang baru dibuat (seperti mengonfigurasi antarmuka di ruang nama jaringan atau memasang sistem file di ruang nama pemasangan) bahkan ketika dijalankan tanpa hak istimewa. Sebagai fitur kenyamanan belaka, itu tidak mendukung kasus penggunaan yang lebih canggih, seperti pemetaan beberapa rentang UID dan GID. Opsi ini menyiratkan –setgroups=deny.
Jadi, pada sistem yang lebih baru, Anda dapat menjalankan:
unshare -n -r ping 127.0.0.1
Dan ini akan menghasilkan Network is unreachable
yang diharapkan .
Pada sistem Debian Anda mungkin masih mendapatkan Operation not permitted
kesalahan, maka Anda harus mengaktifkan ruang nama pengguna yang tidak memiliki hak terlebih dahulu dengan menjalankan:
sudo sysctl -w kernel.unprivileged_userns_clone=1
Catatan:untuk cakupan kasus penggunaan yang lebih luas, bwrap --unshare-net
yang lebih canggih dapat dipertimbangkan, seperti yang dijelaskan secara singkat dalam jawaban yang berbeda.