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 cd
inne miejsce, ale tylko wewnątrz tej powłoki. Jeśli użytkownik uruchomi się vi
lub 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 /bin
i /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 /bin
i /usr/bin
. Ale to dopiero początek. Aplikacje wymagają od bibliotek /usr/lib
i /lib
, co z kolei wymaga dostępu do zasobów systemowych, które są /dev
, a do konfiguracji pliki /etc
i /usr/share
.
To była tylko część tylko do odczytu. Aplikacje również będą chciały /tmp
i często /var
pisać. 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 /
.
I potrzebne, aby zapewnić dostęp do użytkownika
sam
na/var/xyz
tylko i blokowych wymieniając zawartość innych folderów wewnątrz/var/
Użyłem następującej sekwencji poleceń:
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
.źródło
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 /home
widział i widział nazwy innych użytkowników w systemie.Aby temu zapobiec, uruchom jako root
chmod 701 /home
. To sprawia, że/home
sam katalog „odczytuje / zapisuje / wykonuje” do rootowania, ale tylko „wykonuje” dla wszystkich innych./home
jest nadal dostępnycd
, ale użytkownicy nie mogą odczytać jego zawartości - folderów domowych innych użytkowników, a zatem nazw użytkowników.źródło