W jaki sposób r- uprawnienia do katalogu powinny działać w systemie Linux?

11

Utworzyłem katalog, który utworzyłem ma te uprawnienia - inny użytkownik ma

drwxr - r-- 5 użytkowników użytkownik 4096 2012-09-15 19:30 witryn

Kiedy zrobić ls -l w katalogu jako inny użytkownik

ls -l / home / user / sites

to jest wyjście katalogu. Myślałem, że bez ustawionego bitu x w tym katalogu nazwy plików w ogóle nie byłyby wyświetlane.

d????????? ? ? ? ?                ? dev.user.com  
-????????? ? ? ? ?                ? user.20120914_082804.sql.gz   
d????????? ? ? ? ?                ? shared  
-????????? ? ? ? ?                ? shared.tar.gz  
-????????? ? ? ? ?                ? www.20120914_083256.tar.gz
d????????? ? ? ? ?                ? www.user.com

Czy jest tu jakaś niespójność?

vfclists
źródło

Odpowiedzi:

16

xdaje ci pozwolenie na faktyczne przebywanie w katalogu i uzyskiwanie dostępu do plików w katalogu, rdaje ci pozwolenie na zobaczenie zawartości katalogu.

Jeśli odwrócisz sytuację, podając katalog xi usuwając go r, użytkownik może otworzyć shared.tar.gz(przyjmując odpowiednie uprawnienia do samego pliku), ale tylko wtedy, gdy znał nazwę pliku, ponieważ lsnie byłby w stanie wyświetlić plików w katalogu .

DerfK
źródło
1
Przetestuję to i skontaktuję się z tobą. Zawsze uważałem ten aspekt udostępniania plików w Linuksie za mylący.
vfclists
Takie zachowanie nie jest unikalne w Linuksie; pochodzi z najwcześniejszych dni UNIX - Linux, ponieważ jest systemem kompatybilnym z UNIX, działa w ten sposób - a wpisy ACL systemu Windows NT mają podobne bity uprawnień.
2

Ta interpretacja uprawnień sięga wczesnych systemów plików Unix. Na początku były tylko pliki. (No cóż, urządzenia i rury i ... ale próbuję tu opowiedzieć historię, nie być w 100% ściśle dokładne; poza tym wszystko to dotyczy urządzeń i rur i wszystkiego innego, ponieważ wszystko jest plikiem, nawet katalogi).

Katalogi to tylko pliki używane przez system plików do przechowywania metadanych opisujących drzewo katalogów i zawarte w nim pliki. Każdy plik w katalogu został opisany prostą strukturą danych, która zawierała miejsce na nazwę pliku (pierwotnie 14 znaków, IIRC) wraz z numerem i-węzła, w którym dane były przechowywane, rozmiarem pliku, znacznikami czasu i słowem uprawnień . Każdy katalog zaczynał się od dwóch wpisów o nazwach .i .., pierwszy wskazujący na i-węzeł tego samego katalogu, a drugi na i-węzeł jego katalogu nadrzędnego.

Słowo zezwoleń zawierało dziewięć bitów, aby opisać sposób traktowania właściciela, innych członków tej samej grupy i świata. Trzy bity dla każdej flagi, czy dany użytkownik może odczytać, zapisać lub wykonać plik. (Możesz zauważyć, że w 16-bitowym słowie uprawnień jest jeszcze pięć bitów, które ignoruję. W końcu przypisano im znaczenie, ale to nie ma znaczenia dla tej części historii.) (Również ta interpretacja dziewięciu bity pozostały prawie takie same we wszystkich potomkach wczesnego Uniksa, w tym Linuksa.)

Tak więc, jeśli katalog jest tak naprawdę szczególnym rodzajem pliku i jest opisany wpisem w jakimś katalogu, to oczywiście ma również bity uprawnień, a te bity prawdopodobnie coś znaczą. Ale pytanie brzmi, co dokładnie. Najłatwiejszym sposobem przypisania znaczenia tym bitom jest nie zmiana ich znaczenia. I to jest zasadniczo to, co zostało zrobione.

Tak więc bit odczytu oznacza, że ​​użytkownik może odczytać sam katalog. To klasycznie daje czytelnikowi dostęp do nazwy pliku, znaczników czasu, rozmiaru i numeru i-węzła danych każdego pliku. W szczególności, dzięki rzestawowi możesz lszobaczyć nazwy wszystkich plików w katalogu, ale to nie wystarczy, aby otworzyć (lub w jakikolwiek sposób wykorzystać) dowolny z wymienionych plików.

Bit wykonania oznacza, że ​​użytkownik może „wykonać” katalog. Ponieważ katalogi są wyjątkowe, wykonanie naprawdę oznacza wyszukanie pozycji według nazwy i użycie jej. Oznacza to, że możesz spróbować otworzyć pliki, jeśli xjest ustawione, ale bez rciebie nie możesz odkryć ich nazw. Oczywiście uprawnienia do żądanego pliku również wpływają na dostęp, więc nawet xw katalogu nie będziesz w stanie odczytać pliku, chyba że on również ci oferuje r.

Bit zapisu oznacza, że ​​użytkownik może pisać do katalogu, ale oczywiście pośredniczy tylko sam system plików. Oznacza to, że za pomocą wzestawu możesz tworzyć nowe pliki w tym katalogu lub edytować wpisy katalogu istniejących plików. Ale bez xzestawu nie można używać żadnych plików i bez rnich też nie można ich zobaczyć.

Ponieważ w Unixie i jego potomkach ewoluowały bardziej skomplikowane modele tożsamości użytkownika, te same podstawowe opisy pozostały niezwykle niezmienione.

Krótko mówiąc, roznacza to, że możesz zobaczyć jego zawartość, xoznacza, że ​​możesz z niej korzystać i woznacza, że ​​możesz ją modyfikować nawet dla katalogów.

RBerteig
źródło
Przypuszczam, że możesz wyjaśnić mode_tcoś nieco więcej (zwłaszcza część, w której uprawnienia i typ pliku są przechowywane w tym samym polu 32
bitowym
1
Aktywnie byłem użytkownikiem i programistą unixa w latach 80-tych. Nie starałem się opowiedzieć pełnej historii o tym, co jest dziś prawdą, tak bardzo, jak umieściłem ją w kontekście historycznym, i ujawniłem rozbawienie, że można zadać dziś tę samą zagadkę, z którą się spotkałem, kiedy po raz pierwszy nauczyłem się Uniksa, i odpowiedzieć to samo wytłumaczenie otrzymałem od lokalnych guru około 1983 roku. Im więcej rzeczy się zmieniają, tym bardziej pozostają one takie same ...
RBerteig