Таке тлумачення дозволів датується ранньою файловою системою Unix. На початку були лише файли. (Ну, і пристрої, і труби, і ... але я намагаюся тут розповісти історію, не будьте на 100% суворо точні; до того ж, це все справедливо для пристроїв і труб і всього іншого, тому що все є файлом, навіть довідники).
Каталоги - це лише файли, які використовує файлова система для зберігання метаданих, що описують дерево каталогів, та файли, які вони містять. Кожен файл у каталозі описувався простою структурою даних, яка містила місце для імені файлу (спочатку 14 символів, IIRC) разом із номером inode, де зберігалися дані, розміром файлу, часовими марками та словом дозволів . Кожен каталог починався з двох записів з ім'ям .
і ..
, перший вказує на inode цього самого каталогу, а другий на inode його батьківського каталогу.
Слово дозволу містило дев'ять біт, щоб описати поводження з власником, іншими членами тієї ж групи та світом. Три біти для кожного прапора, чи може відповідний користувач читати, записувати чи виконувати файл. (Ви можете помітити, що в слові дозволів 16 біт, яке я ігнорую, є ще п’ять біт. Зрештою, вони отримали значення, але це не стосується цієї частини історії.) (Також ця інтерпретація дев'яти біти залишилися майже однаковими для всіх нащадків раннього Unix, включаючи Linux.)
Отже, якщо каталог справді є лише спеціальним файлом і описується записом у деякому каталозі, він, очевидно, також має біти дозволу, і ці біти, ймовірно, щось означають. Але питання в тому, що саме. Найпростіший спосіб присвоїти значення цим бітам - це не змінювати в першу чергу те, що вони означають. І це по суті те, що було зроблено.
Отже, біт читання означає, що користувач може сам читати каталог. Це класично надає читачеві доступ до імені файлу, часових позначок, розміру та номера inode даних кожного файлу. Зокрема, з r
набором ви можете використовувати ls
для перегляду імен усіх файлів у каталозі, але цього недостатньо для відкриття (або використання будь-яким способом) будь-якого з перерахованих файлів.
Біт виконання означає, що користувач може "виконати" каталог. Оскільки каталоги особливі, виконувати справді означає, що шукати запис за назвою та використовувати його. Це означає, що ви можете спробувати відкрити файли, якщо x
це встановлено, але без них r
ви не можете виявити їх імена. Звичайно, дозволи до запитуваного файлу також впливають на доступ, тому навіть x
у каталозі ви не зможете прочитати файл, якщо він також не пропонує вам r
.
Біт запису означає, що користувач може записувати в каталог, але, природно, лише опосередковується самою файловою системою. Це означає, що за допомогою w
набору ви можете створювати нові файли в цьому каталозі або редагувати записи в існуючих файлах. Але без x
набору фактично не можна використовувати жодні файли, і без них r
ви також не можете їх побачити.
Оскільки складніші моделі ідентичності користувачів складалися в Unix та його нащадках, ці ж основні описи зуміли залишитись надзвичайно незмінними.
Коротше кажучи, r
означає, що ви можете бачити його вміст, x
означає, що ви можете використовувати його, і w
означає, що ви можете змінювати його навіть для каталогів.