ошибки суперблока?

x бит для каталога также называется битом поиска. Фактически, он позволяет вам обращаться к inodes файлов, перечисленных внутри папки. Поэтому, если вы хотите получить доступ к /home/user/foo/bar.txt, тогда у вас должен быть доступ к поиску на каждом предке bar.txt

Цитата из страницы

Поскольку каталоги не используются так же, как обычные файлы, разрешения работают немного (но только слегка) по-разному. Попытка перечислить файлы в каталоге требует разрешения на чтение для каталога, но не для файлов внутри. Попытка добавить файл в каталог, удалить файл из каталога или переименовать файл, все требуют разрешения на запись для каталога, но (возможно, удивительно) не для файлов внутри. Разрешение на выполнение не распространяется на каталоги (каталог также не может быть программой). Но этот бит разрешения используется для каталогов для других целей. Выполнить разрешение необходимо в каталоге, чтобы иметь возможность записывать в него (т. Е. Сделать какой-то каталог текущей рабочей директорией). Выполнение необходимо в каталоге для доступа к информации inode файлов внутри. Вам нужно это для поиска в каталоге, чтобы прочитать inodes файлов внутри. По этой причине разрешение на выполнение в каталоге часто называется поисковым разрешением. Разрешение поиска требуется во многих распространенных ситуациях. Рассмотрим команду cat / home / user / foo. Для этой команды явно требуется разрешение на чтение для файла foo. Но если у вас нет разрешения на поиск в каталогах /, / home и / home / user, кошка не может найти inode foo и, следовательно, не может его прочитать! Для доступа к индексному дескриптору любого файла (или каталога) требуется разрешение на поиск в каждом каталоге предков, и вы не можете прочитать файл, если вы не можете получить его inode.

Подробнее читайте в разделе каталога разрешений для файлов.

Обновление: Лео поднял очень хороший вопрос. Если мы знаем индексный дескриптор, то можем ли мы получить доступ к файлу из каталога, в котором его бит не установлен? Я считаю, мы не должны этого делать. Я не тестировал его с помощью программы c, а использовал некоторые полезные команды bash для подтверждения.

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
3
задан 14 April 2012 в 19:40

0 ответов

Другие вопросы по тегам:

Похожие вопросы: