Dlaczego Linux wymaga, aby użytkownik był rootowany / korzystał z sudo / specjalnie autoryzowany dla każdego montowania, aby coś zamontować? Wydaje się, że decyzja, czy zezwolić użytkownikowi na zamontowanie czegoś, powinna opierać się na jego prawach dostępu do źródłowego wolumenu / udziału sieciowego i punktu podłączenia. Kilka zastosowań montowania użytkownika innego niż root to montowanie obrazów systemu plików w kierunku należącym do użytkownika i montowanie udziału sieciowego w katalogu należącym do użytkownika. Wygląda na to, że jeśli użytkownik ma kontrolę nad obiema stronami równania montowania, wszystko powinno być fajne.
Wyjaśnienie ograniczenia dostępu:
Wydaje mi się, że powinienem być w stanie zamontować wszystko, co w przeciwnym razie użytkownik miałby dostęp do punktu podłączenia, którego właścicielem jest użytkownik.
Na przykład na moim komputerze / dev / sda1 jest własnością użytkownika root i dysku grupy z uprawnieniami brw-rw----
. Dlatego użytkownicy inni niż root nie mogą zadzierać z / dev / sda1 i najwyraźniej mount nie powinien zezwalać na ich montowanie. Jeśli jednak użytkownik jest właścicielem /home/my_user/my_imagefile.img i mount point / home / my_user / my_image / dlaczego nie powinien mieć możliwości zamontowania tego pliku obrazu w tym punkcie montowania za pomocą:
mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop
Jak zauważył Kormac, istnieje problem suid. Trzeba więc dodać pewne ograniczenia, aby zapobiec sytuacji, w której suid byłby problemem, a także potencjalnie innych problemów. Być może jednym ze sposobów na to byłoby sprawienie, aby system operacyjny traktował wszystkie pliki jako należące do użytkownika, który dokonał montowania. Jednak w przypadku prostego odczytu / zapisu / wykonania nie rozumiem, dlaczego byłby to problem.
Przypadek użycia:
Mam konto w laboratorium, w którym moja przestrzeń domowa jest ograniczona do 8 GB. To jest małe i bardzo irytujące. Chciałbym zamontować wolumin nfs z mojego osobistego serwera, aby zasadniczo zwiększyć ilość dostępnego miejsca. Ponieważ jednak Linux nie pozwala na takie rzeczy, utknąłem w plikach scp'ing tam iz powrotem, aby pozostać poniżej limitu 8 GB.
źródło
sshfs
? Zamontuje katalog zdalnyssh
, tak jak ty, bez potrzeby dostępu do konta root. Wystarczy zainstalować FUSE (system plików w UserSpacE).sftp
jest trochę przyjemniejszy w użyciu niżscp
.Odpowiedzi:
Jest to zarówno ograniczenie historyczne, jak i bezpieczeństwa.
Historycznie większość dysków nie była wymienna. Dlatego sensowne było ograniczenie montowania do osób, które miały legalny fizyczny dostęp i prawdopodobnie miałyby dostęp do konta root. Wpisy fstab pozwalają administratorom delegować montaż innym użytkownikom na dyski wymienne.
Z punktu widzenia bezpieczeństwa istnieją trzy główne problemy zezwalaniem arbitralnym użytkownikom na montowanie dowolnych urządzeń blokowych lub obrazów systemu plików w dowolnych lokalizacjach.
/etc
przy użyciu/etc/shadow
znanego hasła root. Jest to naprawione przez umożliwienie użytkownikowi zamontowania systemu plików tylko w katalogu, którego jest właścicielem.nosuid
inodev
opcji, które są regulowane mającyuser
w/etc/fstab
.Dotychczasowe egzekwowanie
user
kiedymount
nie jest wywoływany przez root wystarczy. Ale bardziej ogólnie możliwość tworzenia pliku należącego do innego użytkownika jest problematyczna: zawartość tego pliku może zostać przypisana przez rzekomego właściciela zamiast montera. Zwykła, zachowująca atrybuty kopia z katalogu głównego do innego systemu plików wygenerowałaby plik będący własnością zadeklarowanego, ale niezaangażowanego właściciela. Niektóre programy sprawdzają, czy żądanie użycia pliku jest uzasadnione, sprawdzając, czy plik należy do określonego użytkownika, i nie byłoby to już bezpieczne (program musi również sprawdzić, czy katalogi na ścieżce dostępu są własnością tego użytkownika; jeśli zezwolono na dowolne montowanie, musieliby również sprawdzić, czy żaden z tych katalogów nie jest punktem montowania, w którym montowanie nie zostało utworzone ani przez root, ani przez żądanego użytkownika).Ze względów praktycznych można obecnie montować system plików bez rootowania za pomocą FUSE . Sterowniki FUSE działają jako użytkownik instalujący, więc nie ma ryzyka eskalacji uprawnień poprzez wykorzystanie błędu w kodzie jądra. Systemy plików FUSE mogą ujawniać tylko te pliki, które użytkownik ma uprawnienia do tworzenia, co rozwiązuje ostatni problem powyżej.
źródło
Jeśli użytkownik ma bezpośredni dostęp do zapisu do urządzenia blokowego i może zamontować to urządzenie blokowe, może napisać plik wykonywalny suid na urządzeniu blokowym, zamontować go i wykonać ten plik, a tym samym uzyskać dostęp do systemu root. To dlatego montaż zwykle ogranicza się do rootowania.
Teraz root może zezwolić zwykłym użytkownikom na montowanie z określonymi ograniczeniami, ale musi się upewnić, że jeśli użytkownik ma dostęp do zapisu do urządzenia blokowego, że mount nie zezwala na suid, a także devnodes, które mają podobny problem (użytkownik może tworzyć devnode, który daje im dostęp do zapisu do ważnego urządzenia, do którego nie powinni mieć dostępu do zapisu).
źródło
Nie zawsze wymaga to superużytkowników. Od
man mount
źródło
mount()
wywołanie systemowe zawsze wymaga roota. narzędzia suid mogą stać się rootami i zezwalać użytkownikom innym niż root na montowanie, a jeślimount
polecenie zostanie zainstalowane suid, zrobi to na podstawie flagi użytkownika w fstab. Inne pliki wykonywalne suid zostały napisane, aby umożliwić użytkownikom montowanie, takie jakpmount
, co pozwala użytkownikom montować nośniki zewnętrzne i wymusza odpowiednie ograniczenia, takie jak nosuid, nodev.Kormac i inni wskazali, że nie jest to dylemat, który przedstawiasz; wydaje mi się, że sprowadza się to do filozofii jawnego nadawania użytkownikom uprawnień w stosunku do systemu, w którym wszyscy użytkownicy mieliby niezmienne prawo do montowania systemu plików.
Gilles rozwiązuje niektóre problemy bezpieczeństwa związane z montowaniem systemów plików. Z mocą wsteczną uniknę prologicznej i stycznej dyskusji na temat potencjalnych problemów technicznych z tym związanych (patrz komentarze), ale uważam, że to uczciwe, że niezaufani użytkownicy nie mają niezmiennego prawa do montowania dysków twardych.
Problem w odniesieniu do wirtualnych i zdalnych systemów plików (lub zdalnych systemów plików za pośrednictwem wirtualnych systemów plików, a la FUSE) jest mniej znaczący, ale to nie rozwiązuje pytania bezpieczeństwa (chociaż FUSE może i na pewno rozwiązałoby twój problem). Ważne jest również, aby wziąć pod uwagę, że dostęp do danych w takich systemach plików można prawie zawsze uzyskać bez potrzeby instalowania urządzenia, albo poprzez przesyłanie plików, albo narzędzia, które wyodrębniają obrazy bez montażu, więc system, który nie pozwala na zamontowanie czegoś, robi nie stanowią problemu nie do pokonania w związku z dostępem do danych, które dziwnie umieściłeś w pliku obrazu, lub (co zrozumiałe) chcesz uzyskać z systemu zdalnego. Jeśli masz sytuację, w której tak nie jest, warto zapytać:
Co dokładnie staram się zrobić?
Gdzie próbuję to zrobić?
Jeśli administracja systemem jest sprawiedliwa, to # 2 wyjaśnia, dlaczego # 1 jest dla ciebie niemożliwy. Jeśli administracja systemem jest niesprawiedliwa, to jest to polityka . Rozwiązaniem problemu „Mój administrator sys jest niesprawiedliwy” nie jest przeprojektowanie systemu operacyjnego, aby administratorzy sys wszędzie nie mogli ograniczać użytkowników.
System pozwala superużytkownikowi ograniczyć Twoje działania, jawnie lub przez pominięcie („Nie zapewniamy BEZPIECZNIKA” itp.). Uprawnienia są jednym z mechanizmów, dzięki którym można to osiągnąć. Być może nie jest miło powiedzieć „nie musisz tego robić”, ale jeśli to prawda… que sera… nie musisz tego robić. Użyj ftp itp. Jeśli to nie jest prawda, powinieneś znęcać się nad osobami odpowiedzialnymi.
źródło
FYI: Najnowsze jądra mają obsługę „przestrzeni nazw”. Zwykli użytkownicy mogą tworzyć przestrzeń nazw, aw obrębie tej przestrzeni nazw, stać się
root
i robić fajne rzeczy, takie jak montowanie systemów plików.Nie daje ci jednak „prawdziwych” uprawnień superużytkownika - możesz robić tylko to, co już możesz (tzn. Możesz montować tylko urządzenia, które już potrafisz czytać).
http://lwn.net/Articles/531114/ Patrz sekcja 4.
źródło
root
w przestrzeni nazw użytkownika, ale nie pozwala na zamontowanie normalnych typów systemów plików, nawet jeśli możesz odczytać i zapisać urządzenie blokowe. Zobacz eksperyment 2 tutaj: unix.stackexchange.com/questions/517317/…Ponieważ dane w systemie plików, które zamierzają zamontować, mogą zagrozić bezpieczeństwu serwera, a nawet go zawiesić (jeśli został on celowo skonstruowany).
źródło
owner
iuser(s)
ustawianenosuid
. Nie chciałbyś, aby ktoś mógł to łatwo ominąć, umożliwiając ręczne usunięcienosuid
W GNOME, gvfs nie wymaga roota do montowania zdalnego systemu plików (ftp lub ssh), a gnome-mount również nie potrzebuje roota do montowania pamięci zewnętrznej (napęd USB, CD / DVD itp.).
Większość systemów prawdopodobnie nie chciałby mieć całego GNOME tylko do jakiegoś zdalnego montażu, wtedy możesz użyć lufs , sshfs lub ftpfs .
gvfs, lufs, sshfs i ftpfs używają FUSE, aby umożliwić użytkownikom innym niż root montowanie wirtualnego systemu plików; i w przeciwieństwie
-o user
do mountów, FUSE nie wymaga od sysadmin ustawiania określonych mountów. Tak długo, jak masz uprawnienia do katalogu montowania i do wszelkich zasobów potrzebnych do zbudowania systemu plików, możesz utworzyć FUSE.Ponieważ
mount
jest głównie / pierwotnie przeznaczony dla lokalnego systemu plików, który prawie zawsze wymaga sprzętu.źródło