GNU/Linux >> Belajar Linux >  >> Linux

per proses titik pemasangan sistem file pribadi

Menjalankan unshare -m memberi proses pemanggilan salinan pribadi dari mount namespace-nya, dan juga membatalkan pembagian atribut sistem file sehingga tidak lagi berbagi direktori root, direktori saat ini, atau atribut umask dengan proses lainnya.

Jadi apa yang dikatakan 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 juga melakukan perintah berikut.

cd /tmp/tmp.7KtrAsd9lx
touch hello
touch helloagain
ls - lFa

Output dari ls perintahnya 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 pentingnya melakukan semua ini? Mengapa saya harus melakukannya?

Saya membuka terminal lain sekarang (terminal 2 ) dan lakukan 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 masuk sebagai root untuk memeriksa file-file ini. Jadi keuntungannya adalah, fitur ini memungkinkan kita membuat sistem file pribadi sementara yang bahkan tidak dapat dilihat atau dijelajahi oleh proses milik root lainnya.

Dari halaman manual unshare ,

mount namespace Mounting dan unmount sistem file tidak akan memengaruhi sistem lainnya (flag CLONE_NEWNS), kecuali untuk sistem file yang secara eksplisit ditandai sebagai shared (dengan mount--make-shared; lihat /proc/self/mountinfo untuk flag yang dibagikan).

Sebaiknya gunakan mount --make-rprivate atau mount --make-rslaveafter unshare--mount untuk memastikan titik pemasangan di namespace baru benar-benar tidak dibagikan dari namespace induk.

Memori yang digunakan untuk namespace adalah VFS yang berasal dari kernel. Dan - jika kita mengaturnya sejak awal - 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 luar biasa dari Mike ini. Bacaan bagus lainnya tentang ini dapat ditemukan dari jawaban dari sini.


Jika Anda memasang bubblewrap di sistem Anda, Anda dapat melakukannya dengan mudah dalam satu langkah:

bwrap --dev-bind / / --tmpfs /tmp bash

Pada contoh di atas, inner bash akan memiliki tampilannya sendiri di /tmp.

Solusi terinspirasi oleh jawaban @ Ramesh - terima kasih untuk itu!


Linux
  1. Linux – Apa Mount Points yang Ada Pada Sistem Linux Pada Umumnya?

  2. Cara membuat dan memasang sistem file Btrfs (dijelaskan dengan contoh)

  3. Cara membuat dan memasang sistem file di Linux

  1. Sistem file lintas platform

  2. cara yang lebih cepat untuk memasang sistem file jarak jauh daripada sshfs?

  3. Mengapa sistem file saya dipasang sebagai hanya-baca?

  1. Contoh Linux AuFS:Tutorial Sistem File Union Lainnya (Implementasi UnionFS)

  2. Cara mengecilkan sistem file root di CentOS / RHEL 6

  3. Saya tidak dapat menghapus file 'rm:tidak dapat menghapus sistem file X Read-only'