Ada cara untuk membuat titik mount tersembunyi jika pengguna root menghapus berbagi namespace saat ini dan me-mount direktori tanpa memperbarui mtab. Apakah ada cara mudah mendaftar ini tanpa harus menyaring melalui sistem file proc?
0
mount
danfindmnt
akan melaporkan semua tunggangan.unshare --mount --propagation=slave
itulah yang digunakan wadah seperti Docker.Jawaban:
Pertama-tama,
/proc
adalah cara utama untuk mengakses informasi pemasangan terkini di Linux.Banyak distribusi Linux modern tidak pernah memperbarui mtab; itu hanya sebuah symlink ke
/proc/self/mounts
. (Baik kemampuan untuk berhenti memasang mount namespaces, maupun menyembunyikan mount dengan "lupa" untuk memperbarui mtab, adalah alasan utama untuk perubahan ini. Dan tentu saja, apa gunanya mengulangi pekerjaan yang sudah dilakukan kernel?)Demikian juga, pengidentifikasi namespace sendiri hanya diekspos melalui
/proc/$PID/ns/mnt
. Tidak ada cara lain untuk memeriksa proses mana yang berada dalam ruang nama yang terpisah dari yang utama.Jadi dengan mengatakan itu, cara tercepat untuk mendaftar semua gunung adalah
cat /proc/*/mounts
. Tetapi jika Anda tidak ingin melakukan itu, util-linux v2.28 memperkenalkan alat lsns yang dapat dengan cepat mendaftar semua ruang nama unik serta proses "pertama" mereka:Dan setelah Anda memiliki ID proses, Anda dapat melihat tabel mount menggunakan:
(Anda harus selalu menggunakan
/proc/$PID/mountinfo
file tersebut, karena mengandung sedikit lebih banyak informasi daripadamounts
atau / etc / mtab. Misalnya, ini menggambarkan hierarki aktual ketika tumpang tindih dengan cara yang tidak terduga, dan lebih akurat melaporkan 'sumber' dari bind mount ketika file atau subdirektori.)Adapun alat tunggal yang hanya akan menunjukkan apa yang "hilang" dari namespace utama - saya tidak tahu. (Seseorang tidak datang dengan coreutils atau util-linux saat ini, walaupun seharusnya tidak sulit untuk menulisnya jika Anda mengizinkannya menggali / proc.)
sumber