Кожен файл і каталог у Linux має власника, групу і набір прав: хто може його читати, змінювати і виконувати. Неправильні права — часта причина помилок 403 Forbidden і 500, а занадто широкі — дірка в безпеці.
Як читати права
Команда ls -l показує права в першій колонці:
-rw-r--r-- 1 www-data www-data 4120 Oct 9 12:00 index.php
drwxr-xr-x 5 www-data www-data 4096 Oct 9 12:00 uploads
- Перший символ — тип:
-файл,dкаталог,lпосилання. - Далі три трійки: права власника, групи та всіх інших.
r— читання,w— запис,x— виконання (для каталогу — право в нього заходити).- Далі — власник (
www-data) і група (www-data).
Числовий запис
Кожне право має вагу: r = 4, w = 2, x = 1. Сума дає цифру для кожної з трьох груп:
| Права | Число | Що означає |
|---|---|---|
rwxr-xr-x | 755 | власник усе, інші — читання й вхід. Стандарт для каталогів. |
rw-r--r-- | 644 | власник читає й пише, інші — лише читають. Стандарт для файлів. |
rw------- | 600 | лише власник. Для файлів з паролями, SSH-ключів. |
rwx------ | 700 | лише власник. Для каталогу ~/.ssh. |
rwxrwxrwx | 777 | усі можуть усе. Не використовуйте. |
chmod — змінити права
chmod 644 index.php
chmod 755 uploads
chmod -R 755 site/ # рекурсивно, з усім вмістом
chmod +x deploy.sh # додати право виконання
chmod go-w config.php # забрати запис у групи та інших
Обережно з chmod -R: однакові права для файлів і каталогів зазвичай неправильні. Окремо для кожного типу:
find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;
chown — змінити власника
chown www-data:www-data index.php
chown -R www-data:www-data /var/www/site
Формат — користувач:група. Змінювати власника може лише root, тому зазвичай команду виконують через sudo.
Які права ставити для сайту
- Файли —
644, каталоги —755. - Файли конфігурації з паролями (
wp-config.php,.env) —640або600. - Власник файлів — користувач, від імені якого працює PHP (на Ubuntu з Nginx часто
www-data, у панелях — користувач сайту). - Каталоги, куди сайт записує файли (
uploads,cache,storage), мають належати цьому ж користувачу — тоді вистачає755, а не777.
Права777на каталог сайту дозволяють будь-якому процесу на сервері записати туди шкідливий код. Якщо щось працює лише з777— виправте власника, а не права.
На хостингу з панеллю права змінюються у файловому менеджері: правий клік на файлі → Атрибути або Change Permissions.