В Linux является ли разрешение на «запись» эквивалентным «исполнению» для каталогов?

16

Разрешение на выполнение имеет смысл для файлов (которые включают в себя сценарии и т. Д.), Но когда дело доходит до каталогов, write (w)разрешение работает так же, как execute (x), верно?

Что означает, что если мы даем разрешение на запись в каталог, мы также обычно проверяем «x» (для выполнения) для этого каталога, верно?

это я
источник
2
Ваш вопрос сейчас непонятен. Непонятно, где вы говорите о разрешениях для файла и где вы говорите о разрешениях для каталога, в котором он находится.
Жиль "ТАК ... перестать быть злым"
1
Если у вас есть новый вопрос, можете ли вы опубликовать его отдельно ?
Михаил Мрозек
1
Что вы подразумеваете под "разрешением на чтение - это все, что нам нужно для файла?" Все что тебе нужно для чего? Читать файл? Да. Чтобы изменить файл ... нет, если вы не являетесь владельцем этого файла.
таращиться
В дополнение к пропущенным операциям «может читать, может переименовывать / удалять файлы в каталоге», ваш «000: не может удалить» фактически неверен. Если каталог оказывается уже пустым, вы можете удалить его, если сможете записать в его родительский каталог. Если он не пустой, вы не можете удалить его, пока он не будет пустым (сделать его пустым - это рекурсивная операция, для которой требуются все три разрешения и все непустые подкаталоги)
Random832,
Ваше редактирование этого вопроса сделало действительно запутанным понимание того, о чем спрашивают, и, похоже, не добавило никакой ценности для будущих посетителей. Я вернулся к первоначальной простой форме вопроса, на которую ответил @Gilles. Если у вас есть новая проблема, вы можете задать еще один вопрос . Пожалуйста, постарайтесь сосредоточить каждый вопрос на одной проблеме.
Калеб

Ответы:

49

Разрешение на выполнение для каталогов позволяет получить доступ к файлам внутри каталога. Разрешение на чтение позволяет перечислять записи каталога. Разрешение на запись позволяет создавать и удалять записи в нем.

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

Таким образом, на практике полезные разрешения для каталога:

  • ---: нет доступа
  • --x: может получить доступ к файлам, имя которых известно (иногда полезно)
  • r-x: обычный доступ только для чтения
  • rwx: нормальный доступ для чтения и записи

Смотрите также Справочник с + x разрешением, родители без него. Когда это будет полезно? и Имеют ли значение разрешения родительского каталога при доступе к подкаталогу?

Жиль "ТАК - прекрати быть злым"
источник
@ Жиль прав! Проведение некоторых исследований по этому вопросу для Linux показывает: 1) Когда каталог не имеет разрешения «x» для пользователя, происходит сбой системного вызова stat или lstat. Это приводит к отсутствию получения метаданных записей каталога, даже если получение записей каталога (name, inode) возможно, когда у пользователя есть разрешение 'r' на каталог. 2) Для получения дополнительной информации смотрите man 7 path_resolution в Linux.
Кедар Мхасвад
2
w-xтакже может иметь свое применение. Например, для общедоступных FTP-сайтов было обычной практикой иметь папку uploadили incomingпапку, доступную для общего доступа, но доступную для чтения только администраторам сервера.
jmbpiano
Что бы rw-сделать, что r--не может сделать для каталогов? В этом ответе упоминается возможность изменять время модификации, но в моей системе Linux ZFS это не так, я смог изменить время модификации, даже когда мой каталог был только r--.
CMCDragonkai
@CMCDragonkai Вы правы, изменение метаданных зависит от владельца, оно не связано с разрешениями. Я не думаю, что вы можете сделать что-либо с rw-каталогом, кроме списка записей (и переместить / удалить его, если у вас есть его родитель, что не требует каких-либо разрешений на каталог).
Жиль "ТАК ... перестать быть злым"
@ Жиль: Это верно. с rw-директорией я не могу создавать новые файлы или изменять существующие, даже если у меня есть rw-файл, который я пытаюсь изменить. Я тоже не могу touchфайл. Я на Arch Linux 4.14.13.
Матиас Браун