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.
#Creating a new process
unshare -m /bin/bash
#creating a new mount point
secret_dir=`mktemp -d --tmpdir=/tmp`
#creating a new mount point for the above created directory.
mount -n -o size=1m -t tmpfs tmpfs $secret_dir
#checking the available mount points.
grep /tmp /proc/mounts
Perintah terakhir memberi saya output sebagai,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Sekarang, saya melakukan perintah berikut juga.
cd /tmp/tmp.7KtrAsd9lx
touch hello
touch helloagain
ls - lFa
Output dari ls
perintah ini adalah,
ls -lFa
total 4
drwxrwxrwt 2 root root 80 Sep 3 22:23 ./
drwxrwxrwt. 16 root root 4096 Sep 3 22:22 ../
-rw-r--r-- 1 root root 0 Sep 3 22:23 hello
-rw-r--r-- 1 root root 0 Sep 3 22:23 helloagain
Jadi apa masalahnya dalam melakukan semua ini? Mengapa saya harus melakukannya?
Saya membuka terminal lain sekarang ( terminal 2 ) dan melakukan perintah di bawah ini.
cd /tmp/tmp.7KtrAsd9lx
ls - lFa
Outputnya seperti di bawah ini.
ls -lFa
total 8
drwx------ 2 root root 4096 Sep 3 22:22 ./
drwxrwxrwt. 16 root root 4096 Sep 3 22:22 ../
File hello
dan helloagain
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
,
mount namespace Pemasangan dan unmount filesystem tidak akan mempengaruhi sisa sistem (flag CLONE_NEWNS), kecuali untuk filesystem yang secara eksplisit ditandai sebagai shared (dengan mount --make-shared; lihat / proc / self / mountinfo untuk flag bersama).
Disarankan untuk menggunakan mount --make-rprivate atau mount --make-rslave setelah berhenti berbagi --mount untuk memastikan bahwa mountpoints di namespace baru benar-benar tidak dibagi dari namespace parental.
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 .