Czy można zezwolić niektórym określonym użytkownikom (np. Członkom grupy) na montowanie dowolnego systemu plików bez uprawnień administratora w systemie Linux?
Innym pytaniem mogło być: „w jaki sposób użytkownik może uszkodzić system, montując systemy plików?”
linux
mount
not-root-user
Ciro Santilli
źródło
źródło
gvfs-mount
-d /dev/sdX
Odpowiedzi:
Istnieje kilka podejść, niektóre z nich są w większości bezpieczne, inne wcale.
Niebezpieczny sposób
Niech każde użycie będzie działać
mount
, np. Przez sudo. Równie dobrze możesz dać im korzeń; to jest to samo. Użytkownik może zamontować system plików zbash
suidową kopią root- run, która natychmiast daje root (prawdopodobnie bez żadnego logowania, poza faktem, żemount
został uruchomiony).Alternatywnie, użytkownik może zamontować swój własny system plików na nim
/etc
, zawierający własną kopię/etc/shadow
lub/etc/sudoers
, a następnie uzyskać root za pomocąsu
lubsudo
. Lub ewentualnie bind-mount (mount --bind
) na jednym z tych dwóch plików. Lub nowy plik do/etc/sudoers.d
.Podobne ataki można było przeprowadzić w
/etc/pam.d
wielu innych miejscach.Pamiętaj, że systemy plików nie muszą nawet znajdować się na urządzeniu,
-o loop
zamontuje plik, który jest własnością (a zatem może być modyfikowany) przez użytkownika.Najbardziej bezpieczny sposób: udisk lub podobny
Różne środowiska pulpitu mają już wbudowane rozwiązania tego problemu, aby umożliwić użytkownikom montowanie nośników wymiennych. Działają one poprzez montowanie w podkatalogu
/media
only i przez wyłączenie obsługi set-user / group-id poprzez opcje jądra. Opcje tu m.in.udisks
,udisks2
,pmount
,usbmount
,Jeśli musisz, możesz napisać własny skrypt, aby zrobić coś podobnego i wywołać go przez sudo - ale musisz bardzo uważnie pisać ten skrypt, aby nie pozostawić exploitów root. Jeśli nie chcesz, aby użytkownicy pamiętali sudo, możesz zrobić coś takiego w skrypcie:
Pewnego dnia będzie bezpieczny: przestrzenie nazw użytkowników
Przestrzenie nazw systemu Linux są bardzo lekką formą wirtualizacji (ściślej mówiąc, kontenerami). W szczególności dzięki przestrzeniom nazw użytkowników każdy użytkownik w systemie może stworzyć własne środowisko, w którym jest rootem. Umożliwiłoby to im montowanie systemów plików, z wyjątkiem tego, że zostało wyraźnie zablokowane, z wyjątkiem kilku wirtualnych systemów plików. W końcu systemy plików FUSE prawdopodobnie będą dozwolone, ale najnowsze łatki, które mogłem znaleźć , nie obejmują urządzeń blokowych, tylko takie rzeczy jak sshfs.
Ponadto wiele jąder dystrybucji domyślnie (ze względów bezpieczeństwa) nie zezwala nieuprzywilejowanym użytkownikom na używanie przestrzeni nazw użytkowników; na przykład Debian ma wartość
kernel.unprivileged_userns_clone
domyślną 0. Inne dystrybucje mają podobne ustawienia, choć często o nieco innych nazwach.Najlepsza dokumentacja, jaką znam na temat przestrzeni nazw użytkowników, to artykuł LWN Działające przestrzenie nazw, część 5: Przestrzenie nazw użytkowników .
Na razie wybrałbym udisks2.
źródło
mount
montowania systemów plików tak jak root? Przeczytam dokument przestrzeni nazw, który podłączyłeś, i spróbuję zaimplementować tę grupę montowania, przynajmniej jako ćwiczenie.mount
poleceń, będzie to równoznaczne z udzieleniem roota.Możesz to zrobić, ale musisz zmodyfikować wpis w
/etc/fstab
systemie plików, który chcesz zamontować, dodając flagęuser
do tego wpisu. Użytkownicy nieuprzywilejowani mogliby wtedy go zamontować.Zobacz
man mount
po więcej szczegółów.źródło
vfs.usermount
). Chcę czegoś analogicznie do tego. Używam wielu dysków wymiennych z wieloma partycjami na każdej i byłoby kłopotliwe, aby dodać kilkanaście lub dwa wpisy do fstab dla każdej z nich.udev
zarządzanie wpisami, gdy nowe urządzenia pojawiają się i znikają.Oto wiki do konfigurowania reguł polkit dla udisks / udisks2 w celu montowania partycji przez grupę inną niż root (np. Użytkownicy).
Zapisz poniższy kod do /etc/polkit-1/rules.d/50-udisks.rules
Załóżmy, że należysz do grupy „users”, korzystając z następującego polecenia, aby zamontować partycję (nie trzeba sudo).
źródło
1 Zobacz, gdzie to działa
Na Xubuntu działa od razu po zainstalowaniu i wysunięciu pamięci masowej USB, partycji dysku twardego, płyt CD / DVD i prawdopodobnie więcej.
Załóżmy, że rozwiązanie, które wybrał Ubuntu, używając policyKit, jest wystarczająco bezpieczne.
2 Wybierz odpowiednią część
W XFCE na Debianie 8.3 musiałem pozwolić użytkownikowi na montowanie i usuwanie systemów plików z Thunara bez hasła. To, co zadziałało, to wybranie pliku uprawnień z Ubuntu.
Dodanie poniższych wierszy jako katalogu głównego do pliku o nazwie
/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
powinno załatwić sprawę:3 Zysk!
(To, co zrobiłem, to wybrałem trochę więcej z pliku o tej samej nazwie na Ubuntu 16.04 i zadziałało to dla mnie. Jeśli potrzebujesz, wygląda to raczej na zawartość https://gist.github.com/kafene/5b4aa4ebbd9229fa2e73 )
źródło
Można skonfigurować,
sudo
aby zezwolić zestawowi użytkowników na uruchamianiemount
polecenia.Aktualizacja : w jaki sposób możesz uszkodzić system przez montaż? Na przykład możesz utworzyć setuid root shell w systemie plików, który możesz następnie zamontować i wykonać, aby uzyskać uprawnienia roota.
źródło
sudo
? Czyż nie jest to użytkownik root instalujący system plików, tylko za kulisami, za pomocą tej metody?mount
dosudo mount
lub użyć skryptu wrapper.user
do fstab działa tylko dlatego, żemount
jest to root setuid. Jądro sprawdza rootowanie lubCAP_SYS_ADMIN
możliwości, więc tak naprawdę nie można się obejść z udziałem roota.Aby odpowiedzieć na twoje pytanie w nawiasie, ponieważ system plików jest symbolem zastępczym dla plików, użytkownik może potencjalnie wykonać szkodliwe operacje na tym systemie plików, takie jak usuwanie plików.
Podsumowując pozostałe 2 pytania, powiem to:
fstab
doskonale nadaje się do montażu w czasie rozruchu trwałego przechowywania. Nie jest to świetne, gdy chcesz podłączyć dyski USB lub od czasu do czasu zamontować niektóre udziały sieciowe.sudo mount
jest również w porządku, jeśli korzystasz z systemów Ubuntu *. Jednak nadal będziesz musiał wpisać hasło.udev
zajmie się montowaniem takich elementów jak pamięci USB, aparaty i karty flash w systemach Ubuntu * (ale nie w mniej przyjaznych dla użytkownika dystrybucjach, takich jak debian, slackware itp.)Dodam, że historycznie, uniksowy sposób nadawania uprawnień niektórym użytkownikom (lub grupom) do robienia rzeczy odbywa się poprzez
sudoers
plik.Istnieje WIELE poradników, jak go używać, więc nie będę sugerował żadnych szczegółów. Powiem, że skorzystałem z witryny projektu dokumentacji Linuksa, aby się o tym dowiedzieć.
Co więcej
sudoers
, możesz montować urządzenia i udostępniać w przejrzysty sposób - nawet bez podania hasła, jeśli zdecydujesz się to zrobić (bądź bardzo ostrożny).To, co zwykle robię w środowisku kontrolnym, to użycie
sudoers
pliku, aby umożliwić użytkownikom określonej grupy przezroczyste montowanie udziałów sieciowych. Dodałem więc poleceniamount.nfs
imount.cifs
plik sudoers, które zezwalają na takie operacje, jak „zamontowanie folderu domowego użytkownika z sieciowego serwera plików, gdy użytkownik loguje się na terminalu klienta” i tak dalej.źródło
autofs
samemu użyć do zamontowania/home/$USER
serwera plików w lokalizacji/home/$USER/fromFS/
na komputerze klienckim.guestmount
oszustwo libguestfsPolega na:
Dokumenty: http://libguestfs.org/guestmount.1.html
Testowany na Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3.
źródło