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


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.


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

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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.