Як працюють дозволи на каталоги?


1

Я не розумію, як працюють дозволи на каталоги. Наприклад:

r: Я можу перерахувати всі наявні файли в каталозі (наприклад ls)

w: Я можу змінити файл у каталозі, видалити його та створити новий підкаталог

x: Я можу отримати доступ до каталогу (наприклад cd)

Якщо я маю рацію у такій ситуації:

-w-
  • Чи можна видалити файл, якщо я вже знаю його ім’я?
  • Чи можу я видалити файл, навіть якщо у мене немає дозволу на запис?

Інше питання. У разі липкого біта (наприклад /tmp) я не можу видалити або перейменувати файл, якщо я не є його власником: для цього дозвіл на файл недостатньо?


Якщо ви на хвилину уявите, що каталог - це файл, вміст якого є списком файлів у ньому, це допоможе пояснити дозволи в каталозі: rі ви можете прочитати вміст "файла", який є файлом файли в каталозі, wі ви можете змінювати список файлів у каталозі, тобто видаляти або створювати нові, xі тут метафора трохи порушується ... так що хорошої аналогії немає.
Патрік Мевзек

Відповіді:


2

xДозвіл на каталог dirдозволяє отримати доступ до файлів dir/file. Без цього wдозвіл вам зовсім не допомагає, оскільки для створення або видалення файлів вам потрібно буде мати можливість вказати на них.

Якщо у вас був -wxу каталозі, ви можете видалити файли, якби знали їх імена (і створювали нові файли).

Читання каталогу, тобто перерахування вмісту, не вимагає доступу до будь-якого dir/file, а dirсаме до нього, тому, якщо у вас є r--, ви можете отримати список файлів.

Дозволи на файл не впливають на видалення файлу, навіть у липких каталогах, принаймні в моєму Linux. Сторінка man ( chmod (1) ) говорить, що вам потрібно бути власником файлу або каталогу, щоб видалити або перейменувати файли з липкого каталогу.

/tmp$ ls -l test
-rw-rw-rw- 1 root root 0 Aug 19 16:17 test
/tmp$ rm test
rm: cannot remove 'test': Operation not permitted

Дивіться також: Виконати проти читання біт. Як працюють дозволи довідника в Linux?


wДозвіл (без x) абсолютно марно для каталогу, НЕ так? Ця -wxумова дозволяє мені видалити / перейменувати / додати файл, але я не в змозі змінити файл (наприклад, написати щось у нього), якщо у мене немає дозволу на запис у цей файл: правда? Про клейкий біт: якщо у мене є файл у /tmpподібному rwxrwx--- user1 group1і є user2 group1, чи можна його видалити?
Дрю Бер

@DrewBer, 1) так, wНЕ xмає сенсу, наскільки я знаю. 2) І так, модифікація файлу контролюється дозволами файлу. 3) Я не тестував, але не думаю, що членства в групі достатньо для видалення файлів із липких каталогів. Не рідкість, коли система має лише одну групу (скажімо, users) майже для всіх користувачів, і точка липкості в основному буде переможена, якби члени групи могли видалити файли інших членів групи.
ilkkachu

Я думаю про наступний випадок drwxr-xrwx root root dir -rwxr-xr-x user1 user1 file Файл знаходиться всередині dir. У наведеній вище ситуації user1 може змінювати файл через доступ до запису, але інший користувач, що не має root, може це зробити завдяки запису доступу до каталогу: 1. user2 може видалити файл 2. user2 може написати модифіковану версію файлу. Результат такий же, правда?
Дрю Бер

Враховуючи інший випадок: drwxr-x--- root root dir -rwxr-xr-x user1 user1 file у цьому випадку user1 може виконувати та змінювати файл, але він не може виконувати команди ds або cd на dir: він може це зробити, якщо шлях до файлу вже відомий, правда? Останній випадок: drwxr-xr-- root root dir user1 все ще може виконувати lsкоманду в цій дирекції без доступу до неї, правда?
Дрю Бер

@DrewBer, що перші один хороший момент: якщо у вас є , wщоб dir, але не dir/file, ви можете видалити або перейменувати файл і створити новий з тим же ім'ям. Однак це змінює ідентичність файлу: будь-які жорсткі посилання на нього порушені, він може отримати новий inode, а новий файл належить користувачеві, який його знову створює.
ilkkachu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.