6

В файловых системах Linux/Unix я понимаю причину, по которой вам нужно разрешение на выполнение для родительской папки для чтения или записи файла: разрешение на выполнение дает вам доступ к inode в файле, и без этого вы никогда не сможете достичь содержание файла.

Однако для переименования файла (фактически, даже удаления) вам просто нужно изменить имя файла в списке, что не требует доступа к индексу. Так почему для выполнения переименования файла требуется бит выполнения, для которого должно быть достаточно разрешений на запись?

Это не кажется симметричным с доступом для чтения: с правами r-- вы можете сделать ls для каталога и получить доступ к списку имен файлов в этом каталоге. Вам не нужно выполнять, потому что вы не обращаетесь к inode. Точно так же с -w- вы сможете изменить список имен файлов (вам также не нужен доступ к inode), но вы не можете, почему?

2 ответа2

3

Смысл разрешения на выполнение для каталога - это возможность искать имена файлов внутри этого каталога. Конечно, успешный поиск имени файла дает ссылку на номер инода, но разрешение на выполнение не имеет ничего общего с инодами как таковыми.

Без разрешения на выполнение для каталога вы не можете создавать, открывать, переименовывать, удалять или спускаться в подкаталоги внутри этого каталога. Единственное, что вы можете сделать, это посмотреть список имен файлов, которые существуют, и только в том случае, если у вас есть разрешение на чтение (и чтение, но не выполнение - это странный набор разрешений для каталога).

Подумайте, есть ли у вас rw- . Вы знаете, что имя файла foo существует внутри этого каталога. Для того, чтобы удалить его, вам нужно найти его, и вам даже нужен доступ к индоду (чтобы уменьшить количество ссылок). В этом отношении вам необходим доступ к inode, чтобы определить, является ли он каталогом (потому что, если это каталог, unlink должен завершиться ошибкой, а rmdir должен быть успешным, и наоборот, если это не каталог). Но вы не можете найти это.

1

Бит выполнения позволяет затронутому пользователю ввести его и получить доступ и изменить атрибуты и каталоги файлов и каталогов внутри. разрешение на выполнение других команд linux файловой системы может потребоваться "выполнить" в подкаталогах, а файлы определяются "битом выполнения". Не следует путать с выполнением исполняемого файла, это означает, что вы предоставили права "принятия решений", чтобы редактировать ссылки на номера файлов inode или метаданные, связанные с именами файлов и символическими ссылками.

Варианты функций включают в себя выполнение с отключенной записью. Это означает, что вы можете переименовать файл, но не редактировать содержимое. Или запись включена, но наоборот отключена.

«Каждый диск содержит некоторое количество файловых систем. Файловая система состоит из нескольких групп цилиндров. Каждая группа цилиндров имеет иноды и данные.

 A file system is described by its super-block, which in turn describes
 the cylinder groups.  The super-block is critical data and is replicated
 in each cylinder group to protect against catastrophic loss.  This is
 done at file system creation time and the critical super-block data does
 not change, so the copies need not be referenced further unless disaster
 strikes.

 Addresses stored in inodes are capable of addressing fragments of
 `blocks'. File system blocks of at most size MAXBSIZE can be optionally
 broken into 2, 4, or 8 pieces, each of which is addressable; these pieces
 may be DEV_BSIZE, or some multiple of a DEV_BSIZE unit."

Другие интересные детали; http://linux.about.com/library/cmd/blcmdl2_stat.htm

«Если у вас есть разрешение на выполнение (но не на запись) в каталоге И у вас есть разрешение на запись в файл, находящийся внутри, вы не можете удалить файл (потому что это предполагает удаление его из списка). Однако вы можете удалить его содержимое, например, если это текстовый файл, вы можете использовать vi, чтобы открыть его и удалить все. Файл все еще будет там, но он будет пуст. "...Baldrick

stat -f "% Sp -> owner =% SHp group =% SMp other =% SLp" для отображения статистики ACL

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .