Папка з ТІЛЬКИМИ дозволом на запит марно ... правда?


10

Попрацювавши з Linux протягом багатьох років і опинившись з деяким вільним часом, я вирішив переглянути деякі основи. Тож я перечитав інформацію про дозволи (не перевіряючи вихідний код) та її особливі випадки для папок, і придумав новий (мені щонайменше ...) спосіб думати про дозволи на папки (для конкретного користувача / група / інші): Я уявляю папку як таблицю з двома стовпцями.

filename | inode    
foo      | 111  
bar      | 222 

У прочитаних кошти дозволу ви можете прочитати (і список) лівий стовпчик таблиці, запис дозволу відповідає додаванню і видалення записів в таблицю, і виконання дозволу відповідає можливості переводити з ім'ям файлу в індексний дескриптор; тобто ви можете отримати доступ до вмісту папки.

Я робив кілька експериментів, і всі результати відповідають цьому моєму "світогляду", але один висновок видається неминучим: папка з дозволами d-w-------абсолютно марна. Розвиваючи: ви не можете перелічити його вміст, ви не можете прочитати файли, які ви знаєте, що існують всередині (тому що ви не можете перекласти імена в inode), ви не можете видалити або перейменувати або додати файли, тому що знову це означатиме переклад , і ви навіть не можете додати жорсткі посилання (тому що, я вважаю, це означатиме додавання імені, а також номера inode, а це означає, що ви знаєте обидва, що, в свою чергу, знову ж таки вважаючи, порушує мету встановлення дозволу на виконання) . І звичайно, якщо в одній такій папці є файли, ви також не можете видалити цю папку, оскільки ви не можете видалити її вміст.

Отже ... я хотів би задати два питання:

  1. Це моя аналогія правильна, чи це велика помилка?
  2. Незалежно від попереднього відповіді, чи є якісь - або ситуації , коли наявність папки з дозволами , як описано у відповідних випадках?

3
Можливо, не кожна комбінація корисна. Наприклад, в англійській мові у нас є слова, ці слова складаються з літер, не всі комбінації складають дійсні слова. наприклад, aoeuidhtns
ctrl-alt-delor

Таким чином, ви не могли б створити файл? Ви запитуєте у файлову систему простір та inode та після того, як ви введете ім’я та inode у таблицю каталогу. У вас повинна бути лише проблема - у тому самому каталозі два файли з тим самим іменем, але різними inode ...
Hastur

@Hastur: Я теж думав, але після того, як mkdir foo ; chmod 200 foo ; touch foo/barя дістався touch: cannot touch ‘foo/bar’: Permission denied. Це трапляється, навіть якщо foo / bar вже існує. Я тестую в bash (Arch Linux).
wmnorth

З моєї вини я думав, що ви переписуєте з вихідного коду систему ... у нас не може бути двох файлів з однаковим іменем в одному каталозі, тому логічно забороняється давати можливість його створювати.
Гастур

Так, марно. Роздільна здатність inode вимагає також "x" та "r", тому в каталогах навіть один "rw" марний.
peterh

Відповіді:


3

Ваше розуміння майже коректно. Кращий спосіб подумати про дозвіл на виконання - це те, що він дозволяє робити речі з іменем файлу або каталогу в каталозі (крім простого читання самого імені). Більшість таких речей стосується перекладу імені до inode, але це також включає створення нових імен та видалення існуючих імен.

Таким чином, дозвіл на запис у каталог без виконання є дуже марним, оскільки насправді нічого не можна написати, якщо ви не можете отримати доступ до файлів у ньому.


1
  1. Це моя аналогія правильна, чи це велика помилка?

Я думаю, що це правильно, вам потрібен дозвіл wx, щоб мати можливість писати в папку.

  1. Незалежно від попередньої відповіді, чи є ситуація, коли потрібна папка з описаними дозволами?

Можливо, у вас є процес, який записує інформацію в папку, а інша споживає її, але вам потрібно не дати письменнику читати іншу інформацію, що зберігається в цьому місці.

Описана раніше ситуація корисна в системах автоматичного забезпечення швидкості. Ці підрозділи повинні пройти процес перевірки, коли державний службовець повинен звести до мінімуму можливості підробок. Деякі пристрої автоматичного контролю швидкості мають зовнішню карту пам'яті sd, на якій система зберігає регістри порушень. Але він також може зберігати "чарівний" конфігураційний файл, який незаконно змінює поведінку перевіреного блоку. Тож процес, який записує реєстр порушень, не повинен мати змогу прочитати нічого з карти пам'яті sd.

Ось приклад, спочатку лише з записом, а потім як змусити його працювати з wx:

Змонтуйте пристрій

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

тоді з користувачем-виконавцем спробуйте написати новий файл

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

відключити та перезавантажити за допомогою wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

спробуйте ще раз

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

З цією конфігурацією тепер ви можете писати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.