Bit x dla katalogu jest również nazywany bitem wyszukiwania. W rzeczywistości umożliwia dostęp do i-węzłów plików wymienionych w folderze. Więc jeśli chcesz uzyskać dostęp do /home/user/foo/bar.txt, musisz mieć dostęp do wyszukiwania na każdym przodku bar.txt
Cytowanie ze strony
Ponieważ katalogi nie są używane w taki sam sposób jak zwykłe pliki, uprawnienia działają nieco (ale tylko nieznacznie) inaczej. Próba wyświetlenia listy plików w katalogu wymaga uprawnień do odczytu dla katalogu, ale nie dotyczy plików w nim zawartych. Próba dodania pliku do katalogu, usunięcia pliku z katalogu lub zmiany nazwy pliku wymaga uprawnień do zapisu w tym katalogu, ale (co może zaskakujące) nie dotyczy plików w nim zawartych. Uprawnienie do wykonywania nie dotyczy katalogów (katalog nie może być również programem). Ale ten bit zezwolenia jest ponownie wykorzystywany w katalogach do innych celów.
Wymagane jest zezwolenie na wykonanie katalogu, aby móc w nim cd (tzn. Aby jakiś katalog stał się bieżącym katalogiem roboczym).
Wykonanie jest potrzebne w katalogu, aby uzyskać dostęp do informacji i-węzła plików w nim zawartych. Potrzebujesz tego do przeszukiwania katalogu w celu odczytania i-węzłów plików w nim zawartych. Z tego powodu uprawnienie do wykonywania katalogu jest często nazywane zamiast tego uprawnieniem do wyszukiwania.
W wielu typowych sytuacjach wymagane jest zezwolenie na wyszukiwanie. Rozważ polecenie cat / home / user / foo. To polecenie wyraźnie wymaga uprawnień do odczytu pliku foo. Ale dopóki nie masz uprawnień do wyszukiwania w katalogach /, / home i / home / user, cat nie może zlokalizować i-węzła foo, a zatem nie może go odczytać! Aby uzyskać dostęp do i-węzła dowolnego pliku (lub katalogu), musisz mieć uprawnienia do wyszukiwania w każdym katalogu nadrzędnym i nie możesz odczytać pliku, chyba że możesz dostać się do jego i-węzła.
Przeczytaj więcej w sekcji katalogu uprawnień do plików.
Aktualizacja: Lew podniósł bardzo dobre pytanie. Jeśli znamy i-węzeł, to czy możemy uzyskać dostęp do pliku z katalogu, którego x bit jest nieustawiony? Uważam, że nie powinniśmy tego robić. Nie testowałem tego za pomocą programu c, ale raczej użyłem kilku przydatnych poleceń bash, aby to potwierdzić.
user@user-desktop:~/test$ ls -lart
total 12
drwxr-xr-x 49 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 .
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 level1
user@user-desktop:~/test$ ls -lart level1/
total 12
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 .
-rw-r--r-- 1 user user 8 2011-11-30 22:38 file1
user@user-desktop:~/test$ stat level1
File: `level1'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 808h/2056d Inode: 95494 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2011-11-30 22:46:16.576702105 +0530
Modify: 2011-11-30 22:38:12.386701913 +0530
Change: 2011-11-30 22:46:08.876702102 +0530
user@user-desktop:~/test$ stat level1/file1
File: `level1/file1'
Size: 8 Blocks: 8 IO Block: 4096 regular file
Device: 808h/2056d Inode: 60775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2011-11-30 22:38:19.846701917 +0530
Modify: 2011-11-30 22:38:16.366701915 +0530
Change: 2011-11-30 22:38:16.366701915 +0530
user@user-desktop:~/test$ chmod -x level1
user@user-desktop:~/test$ stat level1/file1
stat: cannot stat `level1/file1': Permission denied
user@user-desktop:~/test$ ls -lart level1/
ls: cannot access level1/..: Permission denied
ls: cannot access level1/.: Permission denied
ls: cannot access level1/file1: Permission denied
total 0
-????????? ? ? ? ? ? file1
d????????? ? ? ? ? ? ..
d????????? ? ? ? ? ? .
user@user-desktop:~/test$ cat level1/file1
cat: level1/file1: Permission denied
user@user-desktop:~/test$ find . -inum 95494
./level1
user@user-desktop:~/test$ find . -inum 60775
user@user-desktop:~/test$ find ./level -inum 60775
find: `./level': No such file or directory
user@user-desktop:~/test$ find ./level1 -inum 60775
Ponieważ pytasz o katalogi:
uprawnienia do odczytu i wykonywania mogą być nieco trudne dla katalogów.
Na przykład, jeśli masz uprawnienia do odczytu, ale go nie wykonujesz, możesz wyświetlić zawartość katalogu, ale nie możesz do niego wpaść. Nie można także wyświetlać określonych plików ani katalogów, nawet jeśli znasz ich nazwy.
Jeśli masz uprawnienia do wykonywania, ale nie jesteś w stanie odczytać, możesz do niego wpaść, ale nie możesz bezpośrednio wyświetlić plików. Ale jeśli znasz nazwy plików lub katalogów, możesz je wymienić.
źródło
Zezwolenie na wykonywanie katalogów oznacza:
Jeśli nie masz
x
prawa do swojego katalogu, nie możesz:cd
)Przykład:
Przeczytaj Linux Confission Permission Confusion pt 2, aby uzyskać dobre wprowadzenie do tematu.
Jedyną rzeczą, której
x
wydaje się to nie uniemożliwiać, jest dostęp do nazw plików w tym katalogu.Przykład:
źródło