W moim CMS zauważyłem, że katalogi potrzebują +x
zestawu bitów wykonywalnych ( ), aby użytkownik mógł je otworzyć. Dlaczego do odczytu katalogu wymagane jest uprawnienie do wykonywania i jak działają uprawnienia do katalogu w systemie Linux?
linux
permissions
directory
Nick.h
źródło
źródło
chmod 771 dirOne
), nie możesz wyświetlić zawartości dirOne. ALE jeśli zawiera podkatalog „dirTwo” z prawami ustawionymi jak (chmod 774 dirTwo
), możesz faktycznie wyświetlić jego zawartość!Odpowiedzi:
Podczas stosowania uprawnień do katalogów w systemie Linux bity uprawnień mają inne znaczenie niż w przypadku zwykłych plików.
r
) pozwala użytkownikowi na zaatakowaną listy plików w kataloguw
) pozwala użytkownikowi na tworzenie dotknięte, zmienić nazwę lub usunąć pliki w katalogu i modyfikować atrybuty katalogu użytkownikax
) pozwala użytkownikowi na zaatakowaną wejść do katalogu, a dostęp do plików i katalogów wewnątrzT
lubt
jeśli jest ustawiony bit wykonywania dla innych) stwierdza, że pliki i katalogi w tym katalogu mogą zostać usunięte lub przemianowane przez ich właściciela (lub root) tylkoźródło
+x
w katalogu zapewnia dostęp do plików i-węzłów przez ten konkretny katalog (nic więcej, nic więcej, no cóż… może teżchdir
potrzebuje+x
). Aby odczytać lub zapisać zawartość jednego pliku, użytkownik potrzebuje również+r
/+w
do tego pliku, ale są to odrębne uprawnienia (niczego nie zastępują).+x
w katalogu zapewnia dostęp do plików i-węzłów” - To wydaje się być dobrym nemonikiem, ale może nie mówi całej historii? Bez ustawionego bitu wykonania w katalogu nie można zmienić nazwy pliku w tym katalogu. Zastanawiam się, dlaczego tak jest, ponieważ nazwa pliku jest przechowywana w pozycji katalogu, a nie w i-węźle.Najpierw pomyśl: co to jest katalog? To tylko lista elementów (plików i innych katalogów), które znajdują się w środku. Zatem: katalog = lista nazw.
Read bit = Jeśli ustawiony, możesz przeczytać tę listę. Na przykład, jeśli masz katalog o nazwie
poems
:ls poems
a otrzymasz listę przedmiotów mieszkających w środku (-l
nie ujawni żadnych szczegółów!).touch poems/so <TAB> poems/somefile
.poems
katalogu roboczego (tzn.cd
Do niego).Write bit = Jeśli jest ustawiony, możesz zmodyfikować tę listę, tzn. Możesz {dodać, zmienić nazwę, usunąć} nazwy na niej. Ale! Możesz to zrobić tylko wtedy, gdy bit wykonania jest również ustawiony.
Wykonaj bit = Ustaw ten katalog jako katalog roboczy, tzn
cd
. W nim. Potrzebujesz tego pozwolenia, jeśli chcesz:Interesujący przypadek 1 : Jeśli masz uprawnienia do zapisu i wykonywania w katalogu, możesz {usunąć, zmienić nazwę} przedmiotów żyjących w środku, nawet jeśli nie masz zapisu na tych elementach. (użyj lepkiej końcówki, aby temu zapobiec)
Interesujący przypadek 2 : Jeśli masz uprawnienia do wykonywania katalogu (ale nie do zapisu) ORAZ masz uprawnienia do zapisu pliku znajdującego się w nim, nie możesz go usunąć (ponieważ wiąże się to z usunięciem go z listy). Możesz jednak usunąć jego zawartość, np. Jeśli jest to plik tekstowy, możesz użyć vi, aby go otworzyć i usunąć wszystko. Plik nadal tam będzie, ale będzie pusty.
Podsumowanie:
Read bit = Możesz odczytać nazwy z listy.
Write bit = Możesz {dodać, zmienić nazwę, usunąć} nazwy na liście, JEŚLI bit wykonania również jest ustawiony.
Wykonaj bit = Możesz ustawić ten katalog jako katalog roboczy.
PS: Artykuł wspomniany przez Kusalanandę to dobra lektura.
źródło
x
bitu do dowolnego dostępu do tego pliku:cat a/b/c/d
bo potrzebujęx
bitu na wszystkicha
,b
ac
nawet jeśli nie używam ich jako cwd.x
uprawnienia do katalogu, jeśli nie maszx
uprawnień do pliku , nie możesz tak naprawdę „wykonać” pliku. Możesz to zrobić tylkocat
na przykład, ale nie możesz uruchomić samego pliku.ls -l
pracować dla folderu, potrzebujesz zarówno pozwolenia , jakr
ix
pozwolenia.Przygotowałem tę tabelę ze wszystkimi możliwymi uprawnieniami i ich praktycznymi efektami.
(*) Tylko nazwy plików : inne atrybuty, takie jak rozmiar lub data, są niedostępne. Np. Możesz użyć klawisza Tab do autouzupełniania, ale nie polecenia ls.
Kilka myśli :
źródło
-W-
za funkcjonalnie równoważny---
dla katalogów. Niezbyt intuicyjny. Oczywiście tego rodzaju bity niskiego poziomu często nie są.-W-
, mogłem zmienić nazwę katalogu (w katalogu z lepkim bitem), ale nie za pomocą---
. To wydaje się być różnicąOto dobry artykuł na ten temat.
Podsumowanie:
Katalog z
x
ustawionym bitem pozwala użytkownikowicd
(zmienić katalog) na ten katalog i uzyskiwać dostęp do plików w nim zawartych.Detale:
Czytaj (
r
)Napisz (
w
)Wykonaj (
x
)Oto kilka przykładów, które powinny ułatwić zrozumienie:
Jeszcze więcej informacji znajduje się w artykule Hacking Linux Exposed .
źródło
Z książki Roberta Love'a „Programowanie systemu LINUX” pozwolenie na rozdział 1 sekcja-
źródło
Każda operacja dostępu do pliku lub katalogu musi najpierw rozwiązać ścieżkę do pliku lub katalogu. Rozwiązanie wymaga, aby użytkownik miał uprawnienia do wykonywania wszystkich katalogów na ścieżce, z wyjątkiem końcowego komponentu ścieżki. W przypadku katalogów można pomyśleć, że bit wykonania oznacza „możliwe do rozwiązania”.
/a/b/c.txt
Jako przykład weź ścieżkę , powiedz, że użytkownik ma 1) wykonać uprawnienie na/
i/a
; 2) ma uprawnienia do odczytu/a/b
; 3) uprawnienia do odczytu i zapisu/a/b/c.txt
.Użytkownik nie może odczytać (listy)
/a
, ponieważ nie ma uprawnień do odczytu. Ale rozdzielczość ścieżki nie zawodzi.Użytkownik będzie mógł odczytać (lista)
/a/b
, ponieważ użytkownik ma prawo wykonania/
,/a
a uprawnienia do odczytu na/a/b
. Zauważ, że podczas czytania/a/b
nazwa plikuc.txt
jest widoczna, ale metadane (np. Rozmiar pliku), a treść nie, ponieważ nazwa pliku jest przechowywana w katalogu, a nie w pliku, ale metadane są przechowywane w i-węzle pliku.Użytkownik nie będzie w stanie odczytać
/a/b/c.txt
, ponieważ podczas rozwiązywania ścieżkę od/
do/a
celu/a/b
, nie jest on w/a/b
ponieważ użytkownik nie posiada uprawnienia do wykonywania.Zobacz także, jak nazwa ścieżki jest tłumaczona na plik .
źródło
Przydatną analogią jest myślenie o każdym pliku jak o książce, a każdy katalog o pokoju, w którym przechowywane są książki.
Istnieją reguły, aby móc wymienić wszystkie nazwy w pokoju: bit odczytu dla katalogów. Zasady usuwania książki z pokoju: bit zapisu do katalogów. I zasady, aby wejść do pokoju i eksplorować: wynikowy katalog wykonuje bit.
Te zasady są odrębne i różnią się od zasad dla każdej książki. Istnieją zasady pozwalające komuś otworzyć książkę i odczytać jej zawartość: bity odczytu dla każdego pliku. Istnieją zasady modyfikowania zawartości książki: bit (y) zapisu dla każdego pliku. I aby wykonać plik: bit (y) wykonania dla każdego pliku.
Piszę bity, ponieważ dla każdej akcji są trzy bity. Jest jeden bit odczytu dla właściciela, jeden bit odczytu dla grupy (grup) i bit odczytu dla wszystkich innych (innych). Jeśli któryś z tych trzech bitów jest ustawiony dla określonego użytkownika, ten użytkownik ma aktywny bit odczytu. To nie ma znaczenia, w jaki sposób nieco okazała się być aktywny albo u ser lub g rupy lub o Ther, ma te same rezultaty.
W ten sposób użytkownik może wejść do pokoju i usunąć książki z biblioteki, ale nie może czytać zawartości tej samej książki.
Dlatego wymagany jest bit odczytu dla katalogów: aby kontrolować, kto może wyświetlać zawartość pokoju (tytuły książek).
A bit wykonania służy do kontrolowania, kto może wejść do pokoju książek.
źródło
Znaczenie wykonania dla katalogów jest dość jasne. Ponieważ nie ma uprawnień Traverse, w przeciwieństwie do systemu Windows, musisz coś przeładować. Projektanci wybrali Wykonaj, co powoduje niekończące się zamieszanie. Facet do spraw bezpieczeństwa komputerowego, który przypisuje uprawnienia do wykonania do czegoś, czego faktycznie nie zamierzasz wykonać, wygląda podejrzanie.
źródło
GENERIC_EXECUTE
i tego, czym jest.