Sprawdzałem unshare
polecenie i zgodnie z jego instrukcją,
unshare - run program with some namespaces unshared from parent
Widzę też, że istnieje rodzaj przestrzeni nazw wymienionej jako,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
Jaki jest dokładnie cel tej przestrzeni nazw montowania ? Próbuję zrozumieć tę koncepcję za pomocą jakiegoś przykładu.
Odpowiedzi:
Bieganie
unshare -m
daje procesowi wywołującemu prywatną kopię przestrzeni nazw montowania, a także oddziela atrybuty systemu plików, dzięki czemu nie współdzieli już swojego katalogu głównego, katalogu bieżącego ani atrybutów umask z żadnym innym procesem.Co więc mówi powyższy akapit? Spróbujmy zrozumieć na prostym przykładzie.
Terminal 1:
Wykonuję poniższe polecenia w pierwszym terminalu.
Ostatnie polecenie daje mi wynik jako:
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Teraz wykonałem również następujące polecenia.
Dane wyjściowe
ls
polecenia toWięc o co chodzi z tym wszystkim? Dlaczego mam to zrobić?
Teraz otwieram inny terminal ( terminal 2 ) i wykonuję poniższe polecenia.
Dane wyjściowe są jak poniżej.
Pliki
hello
ihelloagain
nie są widoczne, a nawet zalogowałem się jako root, aby sprawdzić te pliki. Tak więc zaletą jest ta funkcja umożliwia nam utworzenie prywatnego tymczasowego systemu plików, którego nawet inne procesy należące do roota nie mogą zobaczyć ani przejrzeć.Ze strony mężczyzny
unshare
,Pamięć używana w przestrzeni nazw to VFS pochodzący z jądra. I - jeśli skonfigurujemy to w pierwszej kolejności - możemy tworzyć całe środowiska wirtualne, w których jesteśmy użytkownikami root bez uprawnień roota.
Referencje:
Przykład jest w ramce z wykorzystaniem szczegółów z tego postu na blogu . Również cytaty tej odpowiedzi pochodzą z tego wspaniałego wyjaśnienia Mike'a . Kolejną wspaniałą lekturę na ten temat można znaleźć w odpowiedzi tutaj .
źródło
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
I w porównaniu dochroot
, zchroot
plikami są widoczne dla innych. To niesamowite, a zdanie to powinno być jak na górze odpowiedzi. + 1ed.nsenter
możesz wprowadzić przestrzeń nazw i przeglądać pliki tymczasowe. Zakładając tylko jedno unshare (ten, który jest właścicielem tempdir), wtedysudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
pozwoli na przeglądanie zawartościJeśli masz w swoim komputerze zainstalowany program Bubblewrap , możesz to zrobić w jednym kroku:
W powyższym przykładzie wewnętrzny bash będzie miał swój własny widok na / tmp.
Rozwiązanie zainspirowane odpowiedzią @ Ramesh-s - dzięki za to!
źródło