Пишіть доступ без доступу для читання


16

Чи можливо користувачеві мати доступ до запису до файлу і не в змозі його прочитати? Як це можливо?

Я спробував такі команди:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

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

Відповіді:


18

Це не помилка, це особливість TM (Крім того, лише наслідок універсального підходу unix до дозволів).

Окрім поведінки, що нагадує папку, що стосується каталогів (як описано у BillThor), доступ лише для запису необхідний для деяких спеціальних (псевдо-) файлів під /procта /sys. Такі файли використовуються для встановлення деяких властивостей драйвера або ядра або для запуску системної дії. Ви не можете їх прочитати, оскільки вони використовуються лише для односторонньої сигналізації - ви можете перегукувати лише текст / дані. Щоб знайти такі файли, ви можете використовувати

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

Зверніть увагу, оскільки ці файли використовуються для розширеної конфігурації системи (потенційно небезпечні), вони rootмають доступ до запису (у більшості випадків).


21

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

Надання дозволів на запис без дозволу на читання не має особливого сенсу для звичайних файлів. Це має сенс для різних спеціальних файлів.

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

3

Ні, це не помилка. Однак я не бачу, як це часто застосовується до файлів.

Я найчастіше бачив доступ лише для запису в каталогах Dropbox. Користувачі можуть додавати файли до каталогу, але не бачать, які існують файли.

Для звичайного текстового файлу для доступу типу "dropbox" було б доречним лише доступ для запису.

Налаштування доступу лише для запису для себе не було б дуже корисно, але не допускати цього буде ускладнювати код дозволів.

EDIT: Файли Dropbox, ймовірно, не будуть корисними. Однак це може бути корисно для некореневих журналів, оскільки це ускладнить перезапис записів журналу. Якщо ви можете прочитати файл, набагато простіше визначити, де слід записати запис журналу заміни. Однак я не знаю нікого, хто налаштовує такі свої журнали. Для запобігання локальної модифікації записів журналу звичайно використовувати віддалений журнал.

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


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