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ść?
źródło
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
r
zestawowi możeszls
zobaczyć 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
x
jest ustawione, ale bezr
ciebie nie możesz odkryć ich nazw. Oczywiście uprawnienia do żądanego pliku również wpływają na dostęp, więc nawetx
w katalogu nie będziesz w stanie odczytać pliku, chyba że on również ci oferujer
.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ą
w
zestawu możesz tworzyć nowe pliki w tym katalogu lub edytować wpisy katalogu istniejących plików. Ale bezx
zestawu nie można używać żadnych plików i bezr
nich 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,
r
oznacza to, że możesz zobaczyć jego zawartość,x
oznacza, że możesz z niej korzystać iw
oznacza, że możesz ją modyfikować nawet dla katalogów.źródło
mode_t
coś nieco więcej (zwłaszcza część, w której uprawnienia i typ pliku są przechowywane w tym samym polu 32