Katalog z uprawnieniami + x, rodzice bez niego. Kiedy to byłoby przydatne?

11

Powiedzmy, że mam folder o nazwie folderw następującej ścieżce:

my_path = /a/b/c/d/e/folder

i plik wywołany filew tym folderze.

Następnie powiedz, że uruchamiam to polecenie, aby usunąć uprawnienia grupy w / a /

> chmod g-rwx -R /a/

Powiedzmy, że daję +rxuprawnienia folder:

> chmod g+rx /a/b/c/d/e/folder

Następnie, jeśli uruchomiony zostanie drugi użytkownik w mojej grupie:

> ls /a/b/c/d/e/folder

lub

> cat /a/b/c/d/e/folder/file 

dostaje błędy uprawnień i, o ile rozumiem, to dlatego, że muszę zapewnić g+xdostęp do wszystkich rodziców folder. Moje pytanie brzmi zatem, kiedy i dlaczego użyteczne byłoby +xzezwolenie na katalog, którego rodzic go nie ma?

Dzięki

Amelio Vazquez-Reina
źródło
1
Jesteś pewien, że biegniesz chmod +grx -R /a/b/c/d/e/folder? To źle, właściwym sposobem na wykonanie tego jest:chmod g+rx -R /a/b/c/d/e/folder
nozimica
3
Nie odpowiada bezpośrednio na to pytanie, ale zaleca lekturę w tle: wyjaśnienie uprawnień do katalogu
Gilles „SO - przestań być zły”

Odpowiedzi:

6

W większości przypadków, jeśli chcesz zablokować dostęp do całego katalogu (w tym jego podkatalogu) i korzystanie z niego, możesz to zrobić, usuwając go (nie rekurencyjnie) -x. Dlatego możesz zostawić podkatalogi +xbez szkody.

Zachowanie uprawnień do podkatalogów może być przydatne z wielu powodów (zwłaszcza gdy -xnie dotyczy to wszystkich, ale przynajmniej jeden użytkownik może nadal coś zrobić).

Na przykład można tymczasowo zablokować korzystanie z katalogu kontenera, jednocześnie wprowadzając inne zmiany w uprawnieniach w tej strukturze katalogów, a następnie ponownie włączyć dostęp do całego drzewa w jednej operacji (dając +xkatalog najwyższego poziomu).

Może również wystąpić sytuacja, w której skrypt (niekoniecznie uruchamiany przez właściciela) tworzy kopię zapasową drzewa katalogów w tymczasowej lokalizacji (która nie powinna być czytana przez innych) i umieszcza wszystko w pliku tar, zachowując ustawienia uprawnień zawartość katalogu.

Bruno
źródło
7

Aby uzyskać dostęp do pliku w katalogu lub uzyskać dostęp do pliku w katalogu, potrzebujesz uprawnień + x w dowolnym katalogu macierzystym.

Potrzebujesz uprawnień + r w katalogach, aby wyświetlić listę plików. Oto przykład:

możesz wydać następujące polecenia, aby uzyskać pewne ustawienia:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Bez praw:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Tylko z wykonaniem

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Teraz z przeczytaniem:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Ta część może być nieco myląca, ale tylko do odczytu i bez wykonywania, możesz faktycznie wyświetlić listę plików w katalogu, ale nie odczytać metadanych i-węzłów, więc otrzymasz odmowę dostępu, ale nadal będziesz mógł zobaczyć listę plików w katalogu jak poniżej ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied
skrewler
źródło
2
Dzięki @skrewler. Powiedziałeś: „Potrzebujesz uprawnień + x we wszystkich katalogach nadrzędnych, aby cd lub uzyskać dostęp do pliku w katalogu”, tak myślałem. Moje pytanie jest więc: dlaczego byś kiedykolwiek dać + x uprawnień do katalogu, którego rodzice mają nie mieć + x pozwolenie?
Amelio Vazquez-Reina
Jedyną rzeczą, o której mogę myśleć, jest to, aby utworzyć bezpośrednio tam powiązanie, omijając katalogi nadrzędne bez uprawnień do wykonywania. Jeśli to nie miało sensu, pokażę przykład.
skrewler
Powyższe powinno być bardziej jasne. Użytkownik root z uprawnieniami do wszystkich katalogów nadrzędnych może sprawić, że to powiązanie zostanie zamontowane, aby umożliwić innym użytkownikom dostęp do katalogu. Ponieważ mogą osiągnąć / a / b / c / d / e, gdzie tylko d lub e miały globalne wykonanie, możesz wykonać bindowanie z / mnt / d -> / a / b / c / d / e, a użytkownik może osiągnąć przechodząc do punktu montowania. Jest to ten sam pomysł, co utworzenie twardego linku do miejsca głęboko w drzewie katalogów, które w innym przypadku byłoby nieosiągalne. Dowiązania symboliczne nie działają jednak w ten sposób, konieczne jest podłączenie wiązania.
skrewler
2

Chcesz użyć +xuprawnień nierekurencyjnych w podanej przez Ciebie sytuacji:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Zakłada się, że użytkownik jest członkiem grupy w każdym katalogu. Jeśli nie, musisz zrobić chmod o+xdla takich katalogów).

Aby użytkownik mógł ls /a/b/c/d/e/folderpomyślnie wykonać zadanie , musi mieć uprawnienia do wykonywania każdego katalogu na ścieżce i uprawnienia do odczytu folder.

Jeśli tak

chmod g+x -R /a

działałoby, ale pozwoliłbyś grupie na wykonywanie każdego pliku i katalogu w / a. Jest to niepotrzebne, aw przypadku plików prawdopodobnie błędne.

cjm
źródło
1

W konkretnej sytuacji, z którą masz do czynienia, problem polega na tym, że nawet jeśli folderma odpowiednie uprawnienia dostępu dla niektórych użytkowników z własnej grupy, jeśli którykolwiek z folderów nadrzędnych foldernie jest dostępny dla tego użytkownika, nie będzie on w stanie uzyskaj dostęp do wewnętrznego (tego, co nazywasz folderw twoim przykładzie).

Jeśli wykonasz:

chmod g-rwx -R /a/

wtedy ai wszystkie jego dzieci będą miały to pozwolenie.

Kiedy wykonasz yhou:

chmod g+rx -R /a/b/c/d/e/folder

wtedy folderi wszystkie jego dzieci również będą miały to pozwolenie. Ale z tym ostatnim poleceniu, foldery a/, a/bi tak dalej, dopóki a/b/c/d/enie zmienią swoje uprawnienia.

nozimica
źródło
0

Częstym przypadkiem usuwania bitu x z katalogów jest blokowanie użytkowników w ich katalogach domowych. Ograniczone powłoki mają opcję, aby nie zezwalać cdna odwoływanie się do bezwzględnych nazw ścieżek i nie zezwalać na wykonywanie programów przy użyciu ścieżek bezwzględnych. Nie mogą również cd ..przejść do katalogu nadrzędnego swojego katalogu domowego, a zatem są skutecznie zablokowane i nie mogą uruchamiać programów, które nie znajdują się w $ PATH.

Mel
źródło