Czy uprawnienia katalogu nadrzędnego mają znaczenie podczas uzyskiwania dostępu do podkatalogu?

159

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?

Ken Li
źródło
12
Zauważ, że chmodding katalogu do 600 sprawia, że ​​nie jest on dostępny nawet dla właściciela, ponieważ musisz wykonać pozwolenie na chdir w nim ...
Shadur

Odpowiedzi:

183

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 diri dir/subdir, plus uprawnienia do filedla 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/barale nie włączone /foo, ale bieżący katalog to /foo/bar, możesz uzyskać dostęp do plików /foo/barpoprzez ścieżkę względną, ale nie ścieżkę bezwzględną. W /foo/bartym scenariuszu nie możesz się zmienić ; proces uprzywilejowany prawdopodobnie został przeprowadzony, cd /foo/barzanim 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 symjest dowiązaniem symbolicznym do katalogu dir, musisz uzyskać uprawnienia dirdostę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 /homesą ograniczone do joe( setfacl -m user:joe:0 / /home) i /home/joejest joekatalogiem domowym, to joenie będzie mógł uzyskać dostępu do reszty systemu (w tym do uruchamiania skryptów powłoki z /bin/shdynamicznie 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.

Gilles
źródło
32

Nie. Zezwolenie na folder główny ogranicza uprawnienia do plików podrzędnych. Możesz tego spróbować.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

Rozumiem:

$ cat: ./rootfolder/childfile: permission denied
goovim
źródło
4

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.

Kemin Zhou
źródło
1

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
Kamal
źródło