GNU/Linux >> Belajar Linux >  >> Linux

Mengapa bind mount saya terlihat di luar mount namespace-nya?

Jika Anda menggunakan distribusi berbasis systemd dengan util-linux versi kurang dari 2.27, Anda akan melihat perilaku tidak intuitif ini. Ini karena CLONE_NEWNS menyebarkan flag seperti shared tergantung pada pengaturan di kernel. Pengaturan ini biasanya private , tetapi systemd mengubahnya menjadi shared . Mulai util-linux 2.27, patch dibuat yang mengubah perilaku default dari unshare perintah untuk menggunakan private sebagai perilaku propagasi default agar lebih intuitif.

Solusi

Jika Anda menggunakan sistem systemd dengan util-linux sebelum versi 2.27, Anda harus me-remount sistem file root setelah menjalankan unshare perintah:

# unshare --mount -- /bin/bash
# mount --make-private -o remount /

Jika Anda menggunakan sistem systemd dengan util-linux versi 2.27 atau lebih baru, ini akan berfungsi seperti yang diharapkan dalam contoh yang Anda berikan dalam pertanyaan Anda, kata demi kata, tanpa perlu melakukan remount. Jika tidak, berikan --propagation private ke unshare perintah untuk memaksa propagasi mount namespace menjadi privat.


Linux
  1. Mengapa Variabel Terlihat Dalam Subkulit?

  2. Mengapa kita mentransmisikan sockaddr_in ke sockaddr saat memanggil bind()?

  3. Mengapa stdbuf tidak berpengaruh pada Python?

  1. Cara memasang partisi dengan spasi di jalur

  2. Dua titik pemasangan berbeda dengan satu perangkat

  3. Memaksa ext4lazyinit untuk menyelesaikan tugasnya?

  1. Untuk menampilkan jalur sumber mount pengikat untuk mount setelah v2.25.2

  2. Daftar hanya mengikat tunggangan

  3. Mengapa mount tidak menghargai opsi read only untuk bind mount?