Czy mogę zamontować obraz systemu plików bez uprawnień roota? Normalnie zrobiłbym:
mount -o loop DISK_IMAGE FOLDER
Czy bez użycia sudo lub włączania suid mount
jest jakiś odpowiedni sposób, aby to zrobić?
Wiem, że mogę używać fusermount
z niektórymi obrazami ISO, ale jest to dość ograniczone, nawet w przypadku obrazów ISO, niektórych moich obrazów nie można zamontować, ale mount
zawsze działa.
mount
plik binarny nie wymaga uprawnień SUID, powinieneś być w stanie używać fakeroot bez problemów.fakeroot
nie pomoże tutaj: udaje, że własność pliku jest inna, ale nie może dać ci uprawnień, których nie masz, takich jak dzwonienie,mount(2)
gdy nie jesteś rootem.Odpowiedzi:
Nie możesz zamontować niczego, czego administrator nie dał ci jakoś pozwolenia. Tylko root może wywoływać wywołanie
mount
systemowe. Powodem tego jest to, że istnieje wiele sposobów na eskalację uprawnień poprzez montowanie, na przykład montowanie czegoś w lokalizacji systemowej, powodowanie, że pliki wydają się należeć do innego użytkownika i wykorzystywanie programu zależnego od własności pliku, tworzenie plików setuid lub wykorzystywanie błędów w sterownikach systemu plików.mount
Komenda jest setuid korzeń. Ale pozwala tylko montować rzeczy wymienione wfstab
.fusermount
Komenda jest setuid korzeń. Pozwala tylko montować elementy za pomocą sterownika FUSE i ogranicza twoje możliwości dostarczania plików z dowolną własnością lub uprawnieniami w ten sposób (w większości konfiguracji wszystkie pliki na FUSE należą do ciebie).Najlepiej jest znaleźć system plików FUSE, który jest w stanie odczytać obraz dysku. W przypadku obrazów ISO 9660 wypróbuj obsługę ISO 9660 zarówno fuseiso, jak i UMfuse (dostępne jako
fuseiso9660
pakiet w Debianie ).źródło
sudo
(chociaż ma ustawiony bit SUID) pozwala tylko na zamontowaniefstab
wpisów. Z tego wynika, że (a) bit SUID ma sens, ponieważ zwykły użytkownik może montowaćfstab
wpisy (i może wykonywaćmount
syscall) oraz (b), żemount
ograniczeniem narzędzia jest zezwalaniefstab
na montowanie wpisów tylko przez osoby inne niż root użytkowników.fstab
dotyczą rootfów i bootowania. Aby zamontować dyski USB, patrzęlsblk
imount
odpowiednio. Nie miałem z tym problemu.Debian Wiki pokazuje kilka sposobów robienia tego. Oto jeden ze sposobów. (To wymaga
udisks2
pakietu.)Pierwszy
/dev/loop0
zostaną wykorzystane do następujących celów.Ale jeśli
udisksctl loop-setup
polecenie wróci/dev/loop1
,/dev/loop1
zostanie użyte do następujących celów.Może być konieczne uruchomienie, jeśli urządzenie sprzężenia zwrotnego (wcześniej utworzone) nie zostanie automatycznie zamontowane:
Możesz przeglądać pliki na dysku
Możesz to odmontować, kiedy skończysz
a jeśli to konieczne:
źródło
sudo
tylko. sidanigans lub powiązane shenanigany ?-r
opcjaudisksctl loop-setup
oznaczająca tylko do odczytu, o którą OP nie prosił, więc upuść ją, aby uzyskać zapisywalny montaż.Za pomocą modułu gościa FUSE można zamontować kilka rodzajów obrazów dysków. Jest to część ekosystemu gości i nie wymaga uprawnień roota.
Zajrzyj na stronę podręcznika, aby uzyskać więcej informacji.
Przykłady
1. Dla typowego gościa Windows, który ma główny system plików na pierwszej partycji:
2. Dla typowego gościa Linux, który ma system plików / boot na pierwszej partycji, a główny system plików na woluminie logicznym:
źródło
Możliwym sposobem byłoby dodanie
/etc/fstab
pozycji ISO z parametrem „użytkownik”, np/test.iso /mnt/iso auto defaults,user 0 1
Ale zwykle i tak potrzebujesz dostępu do roota, aby edytować ten plik, więc nie jest to zbyt pomocne.
źródło
W rzeczywistości bardzo łatwo jest zamontować mniej więcej tyle, ile chcesz jako zwykły użytkownik bez uprawnień roota, pod warunkiem, że utworzono odpowiedni wpis
/etc/fstab
.Oczywiście modyfikacje
/etc/fstab
wymagające uprawnień roota. Ale jednego wpisu można używać z dużą elastycznością do (u) montowania wielu różnych plików w różnych punktach montowania, bez dalszej edycji/etc/fstab
.Oto dwa bardzo krótkie (5 wierszy + komentarze) skrypty Bash, które wykonają zadanie:
do montażu
i do zsiadania
Katalog
/tmp/UFS/
jest tworzony w celu odizolowania łączy i uniknięcia kolizji. Ale dowiązania symboliczne mogą znajdować się w dowolnym miejscu w przestrzeni użytkownika, o ile pozostają w tym samym miejscu (tej samej ścieżce)./etc/fstab
Wpis nigdy się nie zmienia albo.VITAL OSTRZEŻENIE: Montaż jest ograniczony ze względów bezpieczeństwa. Uelastycznienie może otworzyć drzwi przed złośliwym oprogramowaniem. Nie jestem ekspertem od bezpieczeństwa i zaleciłbym, aby otwierać drzwi nie więcej niż absolutnie wymagane ... używając opcji, aby ograniczyć możliwości, jakie można wykonać w systemach plików, które można w ten sposób zamontować. Jeśli kompetentny współpracownik mógłby komentować dalej kwestie bezpieczeństwa, może to być przydatne.
Dostępne są różne opcje ograniczające użycie zamontowanych systemów plików, takie jak
noexec
zapobiegające wykonywaniu plików binarnych lubnosuid
przyczyniające się do bezpieczeństwa. W rzeczywistości te opcje są dodawane jako opcje domyślne, gdy są one używaneuser
lubusers
są używane, co koniecznie ma miejsce w przypadku tego, co robimy poniżej. Pomyśl dwa razy, zanim zastąpisz te wartości domyślne. http://en.wikipedia.org/wiki/FstabW celu dalszej ochrony można dodać inne opcje. Na przykład opcja
owner
we/etc/fstab
wpisie pozwoli użytkownikom zajmować się tylko plikami lub urządzeniami, których są właścicielami. Zobaczman mount
listę opcji: http://linux.die.net/man/8/mount .Użycie tego
/etc/fstab
wpisu może być również ograniczone przez własność grupy .group użytkownika katalogu (lub katalogów) zawierających dowiązania symboliczne.Wyjaśnienie
To wyjaśnienie zostało napisane, zanim zdałem sobie sprawę, że mogę uprościć dwa powyższe skrypty. Nie pomyślałem o nich od razu, częściowo dlatego, że mam pod ręką nieco bardziej złożony problem, którego nie rozwiążą bez dodatkowej maszyny. Dlatego moje wyjaśnienie może być nieco bardziej skomplikowane niż powinno, ale nie mam odwagi, aby przepisać wszystko od nowa.
Podstawową ideą jest utworzenie wpisów,
/etc/fstab
które zawierają opcjęuser
lubusers
aby użytkownik mógł poprosićmount
o wykonanie montażu określonego w tym wpisie, podając jako argument plik do zamontowania lub punkt podłączenia do użycia (ale nie jedno i drugie z mojego doświadczenia) .Potrzebujesz również odpowiedniego wpisu
umount
(co jest nieco innym problemem - patrz poniżej). Ta opcjauser
jest zwykle lepsza niż,users
ponieważ ogranicza uprawnienia doumount
użytkownika, który zamontował system plików, ausers
pozwoli na to wszystkim. Niestety opcjauser
nie zawsze działa i może wymagać kilku innych kroków, które należy podjąć. Jest to omówione w Opcji „user” praca dla montowania, a nie dla umount .Najpierw dodajesz do
/etc/fstab
wpisu, takiego jak:i użyj
/tmp/UFS/drive
jako dowiązania symbolicznego (lub dowiązania symbolicznego) do dowolnego urządzenia lub pliku, który chcesz zamontować, powiedzmy plik zawierający obraz systemu plików ISO/home/johndoe/john-image-file.iso
.Na przykład definiujesz
/tmp/UFS/mountpoint
jako dowiązanie symboliczne do punktu montowania, którego chcesz użyć/mnt/iso
.Następnie możesz zamontować
john-image-file.iso
za pomocą polecenia:Jest to wystarczające w moim systemie Mageia Linux, ponieważ korzystanie z urządzeń pętlowych zostało teraz dorozumiane i nie wymaga już
-o loop
jawnego używania . Nie wiem, jak to jest dzisiaj ogólne. Zobacz Kiedy należy montować, kiedy powinienem używać urządzenia z pętlą?To mocowanie pojawia się w tabelach i poleceniach:
Operacja montowania może działać dla dowolnego pliku lub dysku i wymaga jedynie utworzenia dowiązania symbolicznego
/tmp/UFS/drive
do tego pliku lub urządzenia dla dysku. Oczywiście dla dowiązania symbolicznego można wybrać inną nazwę i lokalizację, o ile nigdy się nie zmieni.Demontaż pliku zależy w ten sam sposób od właściwego użycia dowiązań symbolicznych. W przypadku normalnego urządzenia odpowiadającego niektórym napędom harware wystarczy użyć tych samych łączy.
Jednak pliki zawierające obraz systemu plików są montowane za pomocą specjalnego rodzaju urządzenia zwanego urządzeniem pętli, przydzielanego automatycznie podczas montowania pliku.
Aby zdemontować plik, musisz odwołać się do urządzenia pętli, a nie do pliku. Dlatego potrzebujesz
/etc/fstab
wpisu, który pasuje zarówno do urządzenia pętli używanego/etc/mtab
tutaj/dev/loop0
, jak i do punktu montowania tutaj/mnt/iso
.Nie można wcześniej utworzyć takiego wpisu, ponieważ urządzenie pętli może się różnić, ponieważ są one przydzielane dynamicznie. Należy pamiętać, że można również użyć urządzenia o stałej pętli, ale jest to niewygodne na inne sposoby. Zobacz http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a-regular-user/ ( ten blog faktycznie zainspirował odpowiedź tutaj ).
Możesz jednak tutaj znaleźć nazwę urządzenia pętli,
/dev/loop0
pytając system, tak jak to zrobiliśmy powyżej na kilka różnych sposobów. Następnie/etc/fstab
można wprowadzić nasz standardowy wpis, aby wskazywał na prawą pętlę za pomocą dowiązania symbolicznego/tmp/UFS/drive
i na punkt montowania, jak to wcześniej zrobiono/tmp/UFS/mountpoint
. W tym celu plik można odinstalować za pomocą dowolnego z następujących poleceń (pod warunkiem, że nie ma dwuznaczności/etc/mtab
, co stanowi inny problem):Ponieważ dwa dowiązania symboliczne są potrzebne tylko po wydaniu poleceń, można je zmieniać dynamicznie. Dlatego nasz pojedynczy
/etc/fstab
wpis pozwala na zamontowanie dowolnej liczby plików i podłączenie ich w dowolnej kolejności, bez uprawnień roota.Inne referencje:
Montowanie i modyfikowanie pliku pętli zwrotnej bez sudo / root, czy to możliwe?
http://www.tuxfiles.org/linuxhelp/fstab.html
źródło
mount
polecenia dla każdego normalnego użytkownika ?, a więc związane z tym problemy bezpieczeństwa? Popraw mnie, jeśli się mylę.device
lubmountpoint
odcinek fstab nie wskazuje na prawidłowy wpisu. Użytkownik musi się zalogować za pomocą sesji konsoli i wejść,startx
aby jawnie uruchomić menedżera wyświetlania.Pakiet libguestfs-tools-c ma komendę guestmount
df pokaże zamontowany image.iso
do umountowania mamy:
źródło