В Linux, чи дозвіл на "запис" еквівалентний "виконувати" для каталогів?


17

Дозвіл на виконання має сенс для файлів (до яких належать сценарії тощо), але якщо мова йде про каталоги, write (w)дозвіл працює так само, як execute (x), правда?

Що означає, якщо ми даємо дозвіл на запис в каталог, ми також зазвичай перевіряємо "x" (для виконання) і для цього каталогу, правда?


2
Зараз ваше питання незрозуміле. Незрозуміло, де ви говорите про дозволи на файл і де ви говорите про дозволи в каталозі, який його містить.
Жил 'SO- перестань бути злим'

1
Якщо у вас є нове запитання, можете просто опублікувати його окремо ?
Майкл Мрозек

1
Що ви маєте на увазі під "дозволом на читання - все, що нам потрібно для файлу?" Все, що вам потрібно для чого? Щоб прочитати файл? Так. Щоб змінити файл ... ні, якщо ви не є власником цього файлу.
габе.

Окрім того, що операції "можуть читати, перейменовувати / видаляти файли в каталозі", ваш "000: не може видалити" фактично невірний. Якщо каталог вже порожній, ви можете його видалити, якщо зможете записати його в батьківський каталог. Якщо він не порожній, ви не можете видалити його до тих пір, поки він не буде порожнім (зробити його порожнім - це рекурсивна операція, яка вимагає всіх трьох дозволів на неї та всіх непорожніх підкаталогів)
Random832,

Ваша редакція цього запитання зробила насправді незрозумілим зрозуміти, що про нього ставлять, і, здається, не додасть ніякої цінності для майбутніх відвідувачів. Я повернувся до оригінальної простої форми запитань, на яку відповів @Gilles. Якщо у вас є новий випуск, ви можете задати інше питання . Постарайтеся, щоб кожне питання було зосереджене на одному питанні.
Калеб

Відповіді:


50

Дозвіл на виконання в каталогах дозволяє отримати доступ до файлів всередині каталогу. Дозвіл на читання дозволяє перерахувати записи каталогів. Дозвіл на запис дозволяє створювати та видаляти записи в ньому.

Читання або запис дозволу в каталог без дозволу на виконання не є корисним. Виконання дозволу на виконання, але не читання, іноді корисне: воно дозволяє отримувати доступ до файлів лише у тому випадку, якщо ви знаєте їх точне ім'я, свого роду примітивний захист паролем.

Тож на практиці корисні дозволи для каталогу є:

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

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


@Gilles має рацію! Проведення деяких досліджень з цього приводу для Linux виявляє: 1) Коли каталог не має дозволу 'x' для користувача, невдалий виклик системи stat або lstat. Це призводить до отримання метаданих записів каталогів, навіть якщо отримання записів каталогів (ім'я, inode) можливо, коли користувач має дозвол 'r' на каталог. 2) Перегляньте man 7 path_resolution в Linux для отримання додаткової інформації.
Кедар Массваде

2
w-xможе також мати своє використання. Наприклад, раніше для загальнодоступних FTP-сайтів була звичайна практика мати папку uploadабо incomingпапку, яку можна було публічно читати, але читати лише адміністратори сервера.
jmbpiano

Що б rw-це r--не могло зробити для каталогів? У цій відповіді згадується можливість зміни часу модифікації, але в моїй системі Linux ZFS це неправда, я зміг змінити час модифікації, навіть коли мій каталог був тільки r--.
CMCDragonkai

@CMCDragonkai Ви праві, зміна метаданих базується на власності, вона не пов’язана з дозволами. Я не думаю, що ви можете зробити що-небудь із rw-каталогу, крім списку записів (і перемістити / видалити його, якщо ви є його батьківським, для цього не потрібен жодний дозвіл на каталог).
Жил "ТАК - перестань бути злим"

@Gilles: Правильно. з rw-dir, я не можу створювати в ньому нові файли або змінювати існуючі, навіть якщо у мене є rw-файл, який я намагаюся змінити. Я touchтакож не можу файл. Я на Arch Linux 4.14.13.
Маттіас Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.