Чому папка повинна бути виконаною?


29

Дозвіл на файли:

chmod 664 myFile // rw-rw-r--

А для папок:

chmod 774 myFolder // rwxrwxr--

Якщо я використовую лише дозвіл "читати і писати", папки не відображатимуть їх вмісту.

У чому причина цього?

Відповіді:


14

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

$ mkdir -p dir/
$ echo 'Hello World!' > dir/file
$ chmod 000 dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
cat: dir/file: Permission denied
$ chmod +x dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
Hello World!

На сторінці сторінки chmod:

Літери rwxXst вибирають біти файлового режиму для постраждалих користувачів: читати (r), писати (w), виконувати (або шукати каталоги) (x) , виконувати / шукати лише в тому випадку, якщо файл є каталогом або вже має дозвіл на виконання для деяких user (X), встановити ідентифікатор користувача або групи для виконання (s), прапор обмеженого видалення або липкий біт (t).


42

Каталоги (вони зазвичай не називаються папками в * nix) мають для дозвольних бітів значення, ніж звичайні файли.

Для каталогів функція write дозволяє створювати нові файли всередині неї.

Прочитане дозволяє перелічити файли всередині нього.

Execute дозволяє вводити його та отримувати доступ до файлів (або інших каталогів) всередині.


2
Простий спосіб запам'ятати - уявити виконання як подвійне клацання по чомусь. Коли ви двічі клацніть каталог (або cd), ви вводите його (виконайте).
Джон Т

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

Чи означає "доступ до файлів (або інших каталогів)", що я бачу файли, тобто перелічую їх, але не можу їх переглядати, або я можу бачити файли, тобто перераховувати їх і читати їх також?
vadasambar


1

Біт "Execute" насправді означає "пошук" при застосуванні до каталогів (з man chmod). Це здається розумним, оскільки Execute не має значення для каталогу.


0

xБіт на папці посилається на пошук індексації / каталог / список; жоден із них не можливий, якщо ви тримаєте це трохи.

Ось приклад його використання: Якщо ви хочете мати користувача з обмеженими правами на читання у кожному каталозі, окрім його будинку, скажімо /home/dummy, тоді вам потрібно зробити /і /homeвстановити xбіт, інакше він навіть не може потрапити до свого домашнього каталогу.

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