Jeśli mam folder główny z ograniczonymi uprawnieniami, powiedzmy 600, a jeśli foldery / pliki podrzędne mają uprawnienia 777, czy wszyscy będą mogli odczytać / zapisać / wykonać plik podrzędny, nawet jeśli folder główny ma 600?
Jeśli mam folder główny z ograniczonymi uprawnieniami, powiedzmy 600, a jeśli foldery / pliki podrzędne mają uprawnienia 777, czy wszyscy będą mogli odczytać / zapisać / wykonać plik podrzędny, nawet jeśli folder główny ma 600?
Odpowiedzi:
Dokładna zasada brzmi: możesz przechodzić przez katalog tylko wtedy, gdy masz do niego uprawnienia.
Na przykład, aby uzyskać dostęp dir/subdir/file
, musisz wykonać uprawnienie do dir
i dir/subdir
, plus uprawnienia do file
dla typu dostępu, który chcesz. Wchodząc w przypadki narożne, nie jestem pewien, czy to uniwersalne, że potrzebujesz uprawnień do wykonania w bieżącym katalogu, aby uzyskać dostęp do pliku poprzez ścieżkę względną (tak jak w Linuksie).
Sposób dostępu do pliku ma znaczenie. Na przykład, jeśli masz uprawnienia do wykonywania włączone, /foo/bar
ale nie włączone /foo
, ale bieżący katalog to /foo/bar
, możesz uzyskać dostęp do plików /foo/bar
poprzez ścieżkę względną, ale nie ścieżkę bezwzględną. W /foo/bar
tym scenariuszu nie możesz się zmienić ; proces uprzywilejowany prawdopodobnie został przeprowadzony, cd /foo/bar
zanim stał się nieuprzywilejowany. Jeśli plik ma wiele twardych łączy, ścieżka dostępu do niego określa ograniczenia dostępu.
Linki symboliczne niczego nie zmieniają. Jądro korzysta z praw dostępu procesu wywołującego, aby je przechodzić. Na przykład, jeśli sym
jest dowiązaniem symbolicznym do katalogu dir
, musisz uzyskać uprawnienia dir
dostępu, aby uzyskać dostęp sym/foo
. Uprawnienia do samego dowiązania symbolicznego mogą, ale nie muszą mieć znaczenia, w zależności od systemu operacyjnego i systemu plików (niektórzy je szanują, inni ignorują).
Usunięcie uprawnień do wykonywania z katalogu głównego skutecznie ogranicza użytkownika do części drzewa katalogów (w którą musi przejść proces bardziej uprzywilejowany). Wymaga to jakiegokolwiek użycia list kontroli dostępu. Na przykład, jeśli /
i /home
są ograniczone do joe
( setfacl -m user:joe:0 / /home
) i /home/joe
jest joe
katalogiem domowym, to joe
nie będzie mógł uzyskać dostępu do reszty systemu (w tym do uruchamiania skryptów powłoki z /bin/sh
dynamicznie połączonymi plikami binarnymi, które wymagają dostępu /lib
, więc ' d trzeba zejść głębiej do praktycznego zastosowania, np setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib
.).
Uprawnienie do odczytu katalogu daje prawo do wyliczenia wpisów. Czasami przydatne jest udzielenie zgody na wykonanie bez zgody na odczyt: nazwy wpisów służą jako hasła dostępu do nich. Nie mogę wymyślić żadnego zastosowania w udzielaniu uprawnień do odczytu lub zapisu do katalogu bez pozwolenia.
Możesz uczynić katalog potomny zapisywalnym, nawet katalog macierzysty nie. Robię to dla grup.
Na przykład: katalog nadrzędny jest własnością programisty grupy
drwxr-sr-x
katalog potomny
drwxrwsr-x
Ty (dowolny członek grupy koderów) możesz nadal zapisywać w katalogu potomnym, ale nie w katalogu macierzystym.
Możesz utworzyć twardy link, aby uzyskać dostęp do pliku, nawet jeśli nie masz uprawnień do wykonywania w katalogu nadrzędnym. Ale tutaj jest haczyk: musisz utworzyć twarde dowiązanie, zanim stracisz uprawnienia do wykonywania w katalogu nadrzędnym
$ ln foo/bar/test_privs privs_test_checking