Saya sedang memeriksa unshare
perintah dan menurut halaman manualnya,
unshare - run program with some namespaces unshared from parent
Saya juga melihat ada jenis namespace terdaftar sebagai,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
Apa sebenarnya tujuan dari mount namespace ini ? Saya mencoba memahami konsep ini dengan bantuan beberapa contoh.
Jawaban:
Menjalankan
unshare -m
memberi proses panggilan salinan pribadi dari mount namespace-nya, dan juga unshares atribut sistem file sehingga tidak lagi berbagi direktori root, direktori saat ini, atau atribut umask dengan proses lainnya.Jadi apa kata paragraf di atas? Mari kita coba dan pahami menggunakan contoh sederhana.
Terminal 1:
Saya melakukan perintah di bawah ini di terminal pertama.
Perintah terakhir memberi saya output sebagai,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Sekarang, saya melakukan perintah berikut juga.
Output dari
ls
perintah ini adalah,Jadi apa masalahnya dalam melakukan semua ini? Mengapa saya harus melakukannya?
Saya membuka terminal lain sekarang ( terminal 2 ) dan melakukan perintah di bawah ini.
Outputnya seperti di bawah ini.
File
hello
danhelloagain
tidak terlihat dan saya bahkan login sebagai root untuk memeriksa file-file ini. Jadi keuntungannya adalah, fitur ini memungkinkan kita untuk membuat sistem file sementara pribadi yang bahkan proses yang dimiliki oleh root lainnya tidak dapat melihat atau menelusuri.Dari halaman manual
unshare
,Memori yang digunakan untuk namespace adalah VFS yang berasal dari kernel. Dan - jika kita mengaturnya di tempat pertama - kita dapat membuat seluruh lingkungan virtual di mana kita adalah pengguna root tanpa izin root.
Referensi:
Contohnya dibingkai menggunakan detail dari posting blog ini . Juga, kutipan dari jawaban ini berasal dari penjelasan yang luar biasa dari Mike . Bacaan lain yang indah tentang ini dapat ditemukan dari jawaban dari sini .
sumber
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
Dan dibandingkan denganchroot
, denganchroot
file terlihat oleh orang lain. Ini luar biasa, dan kalimat itu mungkin harus seperti di bagian atas jawabannya. Diberi +1nsenter
Anda dapat memasuki namespace dan melihat file-file sementara. Dengan asumsi hanya satu unshare (yang memiliki tempdir), makasudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
akan memungkinkan konten untuk dilihatJika Anda memiliki bubblewrap diinstal pada sistem Anda, Anda dapat melakukannya dengan mudah dalam satu langkah:
Pada contoh di atas, inner bash akan memiliki tampilan sendiri di / tmp.
Solusi yang terinspirasi oleh jawaban @ Ramesh-s - terima kasih untuk itu!
sumber