Хто "інші", якщо ми надаємо користувачу всі сервіси на нашому сервері, "інші" не існують? Наприклад, якщо ми поставимо Apache користувачеві, і ми встановимо, що він /var/www
порушений apache
, і ми введемо його , chmod 700
він повинен працювати, правда?
Ось як працюють дозволи, пояснені дуже коротко:
Перша цифра для фактичного власника файлу (перевірте , хто володіння файлу ls -l
і змінити його chown
)
Друга цифра для групи файлу (хоча власник файлу не повинен обов'язково бути в тій же групі , що є власником файлу)
Третя цифра є хто - то інший, тобто НЕ власник файлу , і все не в групі.
Тож якщо ви маєте chmod
файл до 700 і ним належить apache
, навіть ваш "звичайний" користувач не зможе його прочитати, записати чи виконати. Це дуже обмежувально і потрібно лише в рідкісних випадках - наприклад, коли ви хочете захистити приватний ключ SSH, він отримує 600
дозволи. Для Apache це може спричинити навіть інші проблеми, окрім того, що зі звичайним обліковим записом користувача ви більше не зможете редагувати жодні файли /var/www
.
Отже, загалом кажучи, вам не потрібно видаляти дозволи x00
для читання ( ) для інших.
Ви можете дозволити apache
власний /var/www
каталог, але 644
можливо (лише для читання для інших). Інший підхід , який я часто використовую додавання власних користувачів і користувача Apache на нову www-users
групу, а потім chmodding файлів /var/www
з 775
. Таким чином, і ви, і Apache можете записувати у файли. Дивіться тут для отримання додаткової інформації: Групові дозволи для apache
Яка різниця між "виконувати" та "читати"?
Виконані файли можуть працювати безпосередньо користувачем - прямо з оболонки. Щоб продемонструвати це, давайте напишемо короткий файл і назвемо його "тест". Додайте наступний вміст:
echo "I am executable"
Збережіть файл. Тепер у своїй оболонці спробуйте ввести ./test
. Ви отримаєте помилку " -bash: ./test: Дозвіл відхилено ". Це тому, що за замовчуванням новостворені файли не мають дозволу на виконання. Якщо ви додасте дозвіл на виконання, воно працюватиме.
$ chmod +x test
$ ./test
I am executable
Тепер це був лише тестовий скрипт, але, як правило, всі бінарні файли (як, наприклад, компільовані програми) також потребують набору дозволів на виконання, тому ви можете фактично запускати та робити щось із ними, а не тільки читати.
Це, наприклад, системні програми, здебільшого знайдені в /bin
. Запустіть ls -l /bin
перевірити їхні дозволи. Як бачите, вони належать root
, і ви не можете їх змінити, але ви завжди можете їх виконати.
Отже, це дещо захисна функція, оскільки ви можете обмежити виконання певних скриптів та бінарних файлів для деяких користувачів.
Щоб дізнатися більше про дозволи Unix, прочитайте статтю у Вікіпедії . Основні дозволи, які ви знаєте як "читання-запис-виконання", існують вже давно, але є лише частиною того, що ви називаєте "Списки контролю доступу", які пропонують набагато більше функціоналу, ніж цей.
Які дозволи файлів за замовчуванням для всієї системи після чистої установки (наприклад, в Ubuntu)?
Вони залежать від каталогу та власника. Деякі файли та каталоги системно зарезервовані та належать root
. У більшості випадків ви зможете прочитати їх у звичайному обліковому записі користувача.
Інші каталоги, наприклад, ваша домашня папка, очевидно, належать вашому користувачеві. Можливо, має сенс відмовити в дозволі на читання іншим користувачам на машині, якщо вони поділяться між кількома людьми - адже ви не хочете, щоб ваші приватні речі були відкриті.
Нарешті, деякі файли виконуються за замовчуванням (наприклад, в /bin
), а інші - (наприклад, файли конфігурації в /etc
).
Filesystem Hierarchy Standard визначає передбачуване використання для каталогів , знайдених в системах Linux. Ви майже можете «здогадатися», які дозволи повинні базуватися на тому, що ви хочете зробити з каталогом.