Jak mogę uniemożliwić użytkownikom dostęp do czegokolwiek poza własnym katalogiem domowym?

22

Jak mogę uniemożliwić użytkownikom dostęp do czegokolwiek poza własnym katalogiem domowym?

Na przykład mam zamontowaną partycję NTFS /media/ntfs, więc jeśli użytkownik zaloguje się przez ssh, może uzyskać dostęp do tej partycji. Jak mogę wyłączyć użytkowników, aby mogli cdwyjść z katalogu domowego?

O LA LA
źródło

Odpowiedzi:

22

Najpierw ponownie sprawdź swoje wymagania. Jaki problem próbujesz rozwiązać? Dlaczego chcesz uniemożliwić użytkownikom opuszczanie katalogu domowego? Nie jest to raczej, że nie chcesz ich do grzebania w określonych innych katalogów - jak katalogów domowych innych użytkowników?

Bardzo trudno jest uniemożliwić użytkownikom opuszczenie katalogu domowego. W rzeczywistości jest to również trochę głupie (wyjaśnienie poniżej). O wiele prostsze jest uniemożliwienie użytkownikom wchodzenia do katalogów, do których nie chcą, aby wchodzili.

Po pierwsze, tak, możesz dać użytkownikom tak zwaną ograniczoną powłokę , patrz man rbash. Zapobiegnie to skierowaniu ich w cdinne miejsce, ale tylko wewnątrz tej powłoki. Jeśli użytkownik uruchomi się vilub nano(lub inny program zdolny do otwarcia pliku), może ponownie otworzyć pliki w dowolnym miejscu w systemie. W rzeczywistości ograniczona powłoka nie zapobiega np cat /etc/passwd.

Następnym krokiem jest więzienie na root. Więcej informacji na wiki społeczności i w tym pytaniu . Chociaż więzienie root zablokuje użytkowników wewnątrz ogrodzonego ogrodu, w którym mają dostęp tylko do plików i poleceń, które celowo tam umieszczasz, więzienia root są naprawdę przeznaczone do izolowania niezaufanego oprogramowania niż użytkowników. W szczególności są przeznaczone dla oprogramowania, które musi działać z podwyższonymi uprawnieniami - stąd więzienie root .

Z drugiej strony użytkownicy są zaufani : musieli się uwierzytelniać i uruchamiać bez podwyższonych uprawnień. Dlatego uprawnienia do plików wystarczają, aby uniemożliwić im zmianę plików, których nie są właścicielami, i zobaczenie rzeczy, których nie mogą zobaczyć. Aby uniemożliwić użytkownikom odczytanie zawartości pliku, usuń jego czytelność na całym świecie za pomocą chmod o-r FILE. Aby uniemożliwić użytkownikom dostęp do katalogu, uczyń go niedostępnym na całym świecie chmod o-rwx DIR.

Nie bez powodu światowa czytelność jest domyślna: użytkownicy faktycznie potrzebują większości rzeczy, które znajdują się w systemie plików. Nie zamykaj użytkowników w ich domach tylko dlatego, że na zewnątrz istnieją tajemnice.

Dlaczego blokowanie użytkowników w ich katalogu domowym jest trochę głupie

Aby zrobić coś pożytecznego, użytkownicy potrzebują dostępu do poleceń i aplikacji. Znajdują się one w katalogach takich jak /bini /usr/bin, więc jeśli nie skopiujesz wszystkich niezbędnych poleceń stamtąd do ich katalogów domowych, użytkownicy będą potrzebować dostępu do /bini /usr/bin. Ale to dopiero początek. Aplikacje wymagają od bibliotek /usr/libi /lib, co z kolei wymaga dostępu do zasobów systemowych, które są /dev, a do konfiguracji pliki /etci /usr/share.

To była tylko część tylko do odczytu. Aplikacje również będą chciały /tmpi często /varpisać. Tak więc, jeśli chcesz ograniczyć użytkownika w jego katalogu domowym, będziesz musiał dużo do niego skopiować. W rzeczywistości prawie cały podstawowy system plików - który już masz, znajduje się na /.

zwets
źródło
2
To nie ma dla mnie sensu, może istnieć tak wiele powodów, dla których użytkownik chciałby mieć dostęp tylko do 1 folderu. Jednym z przykładów może być udzielenie dostępu w celu przesyłania plików z jednego serwera na inny. Raczej myślę, że to głupie, że każdy użytkownik może przeglądać cały system.
Richard
W moim przypadku konfiguruję użytkownika, aby umożliwić urządzeniom odwrócenie ssh do maszyny w celu zdalnego zarządzania urządzeniami. Chcę więc ograniczyć to konto użytkownika tak bardzo, jak to możliwe, na wypadek, gdyby zostało naruszone - potrzebuję tylko udanego połączenia. Nie powiedziałbym, że to głupie, to zależy tylko od tego, co próbujesz osiągnąć.
John
7

I potrzebne, aby zapewnić dostęp do użytkownika samna /var/xyztylko i blokowych wymieniając zawartość innych folderów wewnątrz/var/

Użyłem następującej sekwencji poleceń:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Użytkownik może więc zobaczyć katalogi wymienione poniżej, /var/ale nie może zobaczyć zawartości podkatalogów oprócz /var/xyz.

Sam
źródło
2
Witamy w askubuntu! Nie widzę w tym odpowiedzi na pytanie dotyczące katalogów domowych.
Starszy Geek
3
@ElderGeek Czy OP nie może używać tych samych poleceń, ale w przypadku katalogu domowego?
Seth
@Seth Tak, ale czy byłoby to jasne dla przeciętnego użytkownika?
Starszy Geek
3
@ Starsze Tak, wierzę, że tak. Nie idealnie, ale wciąż odpowiedź
Seth
1

Oprócz ograniczania dostępu do innych katalogów, zwłaszcza katalogów domowych innych użytkowników, nie chciałem też, aby użytkownik ll /homewidział i widział nazwy innych użytkowników w systemie.

Aby temu zapobiec, uruchom jako root chmod 701 /home. To sprawia, że /homesam katalog „odczytuje / zapisuje / wykonuje” do rootowania, ale tylko „wykonuje” dla wszystkich innych. /homejest nadal dostępny cd, ale użytkownicy nie mogą odczytać jego zawartości - folderów domowych innych użytkowników, a zatem nazw użytkowników.

Willman
źródło
To, choć nie jest ściśle odpowiedzią na pytanie, jest nadal bardzo interesujące ... W sytuacji, gdy używasz zdalnego serwera, na którym klienci mogą ssh, jest to świetne. Nadal mogą się poruszać zgodnie z oczekiwaniami, zachowując prywatność nazw użytkowników innych klientów.
Jack_Hu