Каталог з дозволом + x, батьки без нього. Коли це було б корисно?


11

Скажіть, у мене є папка, яка викликається folderу такий спосіб:

my_path = /a/b/c/d/e/folder

і файл, викликаний fileу цій папці.

Потім скажіть, що я запускаю цю команду для видалення групових дозволів під / a /

> chmod g-rwx -R /a/

Тепер, скажіть, я даю +rxдозволи folder:

> chmod g+rx /a/b/c/d/e/folder

Потім, якщо другий користувач у моїй групі працює:

> ls /a/b/c/d/e/folder

або

> cat /a/b/c/d/e/folder/file 

вона отримує помилки дозволу, і наскільки я це розумію, тому що мені потрібно надати g+xдоступ усім батькам folder. Моє запитання полягає в тому, коли або навіщо було б коли-небудь корисно надати +xдозвіл директорії, у батьків якої немає ?

Спасибі


1
Ви впевнені, що біжите chmod +grx -R /a/b/c/d/e/folder? Це неправильно, правильний спосіб його виконати:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
Не відповідає безпосередньо на це запитання, але рекомендується ознайомитись із фоновим описом: пояснення дозволів каталогів
Gilles 'SO- перестань бути злим'

Відповіді:


6

Здебільшого, якщо ви хочете заблокувати доступ та використання цілого каталогу (включаючи його підкаталог), ви можете це зробити, видаливши його (не рекурсивно) -x. Тому, можливо, ви залишили підкаталоги +x, не завдаючи шкоди.

Збереження дозволів у підкаталогах може бути корисним з ряду причин (особливо коли -xце стосується не всіх, але принаймні один користувач все-таки може щось зробити).

Наприклад, ви можете тимчасово заблокувати використання каталогу контейнерів, роблячи інші зміни дозволів у цій структурі каталогу, а потім повторно ввімкнути доступ до всього дерева за одну операцію (надаючи +xдо каталогу верхнього рівня).

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


7

Для отримання CD-файлу або доступу до файлу в каталозі вам потрібно + x дозволів для будь-яких батьківських каталогів.

Щоб перелічити файли, потрібно мати дозволи + r у каталогах. Ось ось приклад:

ви можете видати ці команди, щоб налаштувати деякі речі:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Без прав:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Тільки з виконанням

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Тепер із читанням:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Ця частина може бути дещо заплутаною, але, лише читаючи і не виконуючи, ви можете фактично перелічити файли в каталозі, але не читати метадані inodes, тому вам буде надано дозвіл відмовлено, але все-таки зможете переглянути список файлів в каталозі, як показано нижче ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Спасибі @skrewler Ви сказали: "Вам потрібно + x дозволів для будь-яких батьківських каталогів, щоб CD чи доступ до файлу в каталозі", це те, що я думав. Потім моє запитання: чому б ви коли - небудь дати + х дозвіл на каталог , чиї батьки нічого НЕ мають + х дозвіл?
Амеліо Васкес-Рейна

Єдине, про що я можу придумати, - це якщо ви хочете встановити прив'язку безпосередньо там, минаючи батьківські каталоги без дозволів на виконання. Якщо це не мало сенсу, я покажу приклад.
гусениця

Сказане повинно було бути більш зрозумілим. Користувач root з дозволами для всіх батьківських каталогів може зробити це прив'язування, щоб дозволити іншим користувачам дістатися до каталогу. Оскільки вони могли дістатись / a / b / c / d / e там, де тільки d або e мали глобальне виконання, ви можете зробити прив'язку з / mnt / d -> / a / b / c / d / e, і користувач може досягти це, перейшовши до точки кріплення. Це та сама ідея, як зробити міцне посилання десь глибоко у дереві каталогів, що в іншому випадку було б недосяжним. Символічні посилання не працюють так, хоча потрібне кріплення прив’язки.
гусениця

2

Ви хочете використовувати нерекурсивні +xдозволи в ситуації, яку ви надали:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Це передбачає, що користувач є членом групи кожної директорії. Якщо ні, вам доведеться це робити chmod o+xдля будь-яких таких каталогів.)

Для того, щоб користувач ls /a/b/c/d/e/folderуспішно працював, він повинен мати дозвіл на виконання кожного каталогу на шляху та читати дозвіл на folder.

Якби ти

chmod g+x -R /a

він буде працювати, але ви дасте дозвіл на виконання групи для кожного файлу та каталогу під / a. Це непотрібно, а у випадку з файлами, ймовірно, неправильно.


1

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

Якщо ви виконуєте:

chmod g-rwx -R /a/

тоді aі всі її діти матимуть цей дозвіл.

Коли ви виконуєте:

chmod g+rx -R /a/b/c/d/e/folder

тоді folderі всі його діти також матимуть цей дозвіл. Але, з цієї останньої командою, папки a/, a/bі так далі , поки a/b/c/d/eне змінюватиме їх дозволу.


0

Поширений випадок видалення біта x у каталогах - це блокування користувачів у домашніх каталогах. Обмежені оболонки мають можливість заборонити cdпосилання на абсолютні імена шляхів і не дозволяти виконанню програм з використанням абсолютних шляхів. Вони також не можуть cd ..перейти до батьківського каталогу свого домашнього каталогу і, таким чином, ефективно заблоковані та не можуть запустити жодну програму, яка не є в $ PATH.

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