Змінити права на один файл легко за допомогою chmod. Робити це для цілого дерева каталогів — сотень файлів і папок — ось де найчастіше помиляються. Команда chmod -R 755 працює, але робить виконуваними всі файли, що неправильно для звичайних веб-файлів. У цьому посібнику розібрані рекурсивні команди і, що важливіше, правильний спосіб задавати різні права для файлів і каталогів.
Основи: chmod -R
Прапорець -R (рекурсивно) застосовує chmod до каталогу і до всього, що всередині нього:
chmod -R 755 /path/directory
Це встановлює 755 для всіх файлів і папок. Для каталогів це нормально, але файли зазвичай не повинні бути виконуваними — тому застосовувати 755 до всього для сайту не варто.
Правильний спосіб: файли 644, каталоги 755
Стандартні безпечні права — 644 для файлів (читання/запис власнику, читання іншим) і 755 для каталогів (їм потрібен біт execute, щоб у них можна було зайти). Використовуйте find, щоб застосувати кожне правильно:
# встановити 755 для всіх каталогів: find /path/directory -type d -exec chmod 755 {} \; # встановити 644 для всіх файлів: find /path/directory -type f -exec chmod 644 {} \;
Саме так роблять досвідчені адміністратори. -type d вибирає каталоги, -type f — файли, тому кожен отримує потрібні права за один прохід.
Рекурсивна зміна власника (chown)
Права і власник — це різні речі. Щоб рекурсивно змінити власника і групу, наприклад, на користувача веб-сервера:
sudo chown -R www-data:www-data /path/directory
Замініть www-data на потрібного користувача для вашої системи (наприклад, nginx, apache або ваше ім’я користувача).
⚠
Ніколи не використовуйте chmod -R 777. Це дає кожному користувачеві повний доступ на читання, запис і виконання, що є серйозною загрозою безпеці і частою причиною зламу сайтів. Якщо щось працює лише з 777, проблема не в правах, а у власнику — виправляйте через chown.