Нещодавно мені довелося прочісувати інтернет в надії знайти докладну інформацію про те, як правильно виставити права доступу для користувачів і груп в Apache з допомогою chmod. Що мені вдалося знайти:

Основи

Є три групи прав доступу до файлів/директорій, про яких вам варто подбати:

  • Користувач може робити власник файлу;
  • Група – що можуть робити користувачі окремих груп;
  • Інші – що можуть робити інші користувачі.

У користувачів є логіни (унікальні для кожного користувача). Користувачі можуть бути частиною групи.

Примітка: команда chmod приймає цілі числа (0664), і кожна з цифр відповідає за певні права доступу.

Сьогодні я розповім вам про те, як правильно використовувати chmod-налаштування. Chmod використовуються для зміни прав доступу до каталогу або файлу.

Chmod синтаксис:

chmod -flags permissions /path/to/dir/or/file

Прапори

-R

chmod –R дозволить рекурсивно пройтися по всій вказаній директорії і змінити права доступу для файлів і вкладених папок.

Змінюємо права доступу

Ви можете визначати, для кого змінюєте права доступу:

  • u = користувач;
  • g = група;
  • o = інші.

Ви можете додавати або видаляти права доступу за допомогою наступних команд chmod:

  • + додати права доступу;
  • видалити права доступу.

Можна задавати такі права доступу:

  • r = читання;
  • w = запис;
  • x = виконання.

Ці знання можна використовувати для налаштування прав доступу до Apache:

  • Apache запущений як користувач www-data у групі www-data;
  • Кореневий каталог сервера: /var/www.

Для початку

Нам потрібно встановити власника/групу для кореневого каталогу (і будь-яких внутрішніх директорій і файлів):

$ sudo chown -R www-data:www-data /var/www

Потрібно встановити правильні права доступу для користувачів і груп. Запускаємо кілька загальних команд, які закривають доступ, а потім відкриваємо доступ, наскільки нам потрібно.

Спочатку зробіть так, щоб ніхто крім поточного користувача (www-data) не мав доступу до вмісту директорії web-root. Ми використовуємо ‘go‘, тому команда буде направлена до групам і іншим користувачам (‘group‘ і ‘other‘). Також ми використовуємо ‘‘ для відключення прав доступу. Потім використовується параметр ‘rwx‘, щоб заборонити читання, запис і виконання.

$ chmod go-rwx /var/www

Далі потрібно дозволити користувачам з тієї ж групи (і ‘other’) відкривати папку /var/www. Це робиться без рекурсивного підходу. Ми вказуємо ‘group‘ і ‘other‘, але використовуємо параметр ‘+‘, щоб дозволити виконання (chmod ‘x’).

$ chmod go+x /var/www

Далі змінюємо права доступу всіх директорій і файлів в кореневому каталозі для тієї ж групи (www-data). На випадок, якщо в ній є файли:

$ chgrp -R www-data /var/www

Тепер потрібно провести деякі «скидання». C допомогою команди chmod зробіть так, щоб тільки один користувач міг здійснювати доступ до вмісту:

$ chmod -R go-rwx /var/www

Зробіть так, щоб будь-який користувач з тієї ж групи міг читати/записувати і виконувати директорії і файли в кореневому каталозі на сервері:

$ chmod -R g+rx /var/www

Особисто я дав групі право записувати – це потрібно для тих користувачів, які редагують контент. Виглядає це наступним чином:

$ chmod -R g+rwx /var/www

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

Переклад статті «User and Group permissions, with chmod, and Apache» був підготовлений дружною командою проекту Сайтостроение від А до Я.