Я доповни відповіді rahmu та MV технічним рішенням. Все, що випливає, діє лише для UNIX-подібних систем.
Прокрутіть повз розділ chmod / chown для прикладу, використовуючи ACL - більш потужний інструмент, ніж режими файлів UNIX.
Пошук імені користувача вашого веб-сервера
По-перше, вам потрібно буде знати ім’я користувача, під яким працює ваш веб-сервер. Якщо ви використовуєте Apache, це може бути apacheабо httpd, www-dataі т. Д. У більшості подібних Debian систем Apache є www-data. Для nginx, як правило, це також www-data.
Щоб перевірити це, спробуйте:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Переконайтесь, що ім'я користувача, яке повертається цією командою, є узгодженим (наприклад, я використовую nginx 99% часу, але ця команда повертається tomcat7, веб-сервер Java, який я встановив один раз) .
Надання дозволу веб-серверу: використання chmodтаchown
Виконання chmod666 або 777 (вирішення подібних проблем для поганих документацій / навчальних посібників) може магічно змусити роботу працювати, але не є небезпечною. Надання дозволів 666 або 777 надасть доступ "іншим". Тож не тільки Apache, але також grandmotherі nsa(за умови, що ці облікові записи користувачів існують на вашій машині, але ні, справді, будь ласка, уникайте цього робити, якщо це не лише для тестування / усунення несправностей).
Краще бути більш конкретним і давати дозволи лише вам і Apache. Змініть групу своїх файлів, щоб забезпечити повний контроль над своїми файлами веб-серверу. Для цього потрібно змінити власника рекурсивно:
chown -R www-data:www-data your/folder/
Але, швидше за все, можливо, ви захочете зберегти повний доступ до своїх файлів, змінивши лише групу:
chown -R yourusername:www-data your/folder/
Потім зробіть відповідне, chmodщоб надати групі www-dataтакі ж дозволи, як і ви. Наприклад, якщо поточний режим становить 640 (6 для вас, 4 для www-даних, 0 для інших, що перекладається на -rw-r -----) , встановіть його на 660 (6 для вас, 6 для www- дані, 0 для інших, що перекладається на -rw-rw ----) . Дивіться відповідь rahmu, щоб дізнатися більше про режими файлів, це старий, але елегантний механізм.
Щоб уникнути маніпулювання прихованими числами chmod, ви також можете використовувати цей синтаксис:
chmod -R g+rw your/folder/
Це означає "до групи ( g), додати +( rw) дозволу на читання і запис ( ) в папці your/folder/, рекурсивно ( -R)".
У 90% випадків цього має бути достатньо.
Мій бажаний метод: використання ACL (Список контролю доступу)
Іноді першого рішення недостатньо. Я візьму приклад Symfony Framework, який записує в журнал і кешує багато даних. Тому для запису потрібен доступ до відповідної папки.
І chmod/ chownметоду може бути недостатньо, коли ви паралельно використовуєте консоль Symfony в CLI (під моїм обліковим записом користувача) та Web (користувач веб-сервера). Це спричиняє багато проблем, оскільки Symfony постійно змінює дозволи.
У цьому випадку ми будемо використовувати ACL (Список контролю доступу), що є більш досконалим способом управління дозволами для багатьох систем UNIX.
Тут наведені команди, надані офіційною документацією на Symfony ( будь-ласка, змініть app/cacheі app/logsпід свої потреби ):
У системі, яка підтримує chmod +a(тобто не Debian / Ubuntu)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
У системі, яка не підтримує chmod +a(найчастіше)
Вам знадобиться setfaclінструмент; можливо, він встановлений у вашій системі за замовчуванням, тому спробуйте setfacl -vперевірити, чи доступна команда.
Якщо команда недоступна, а ви використовуєте Ubuntu 14.04+, вам доведеться просто встановити інструмент:
sudo apt install acl
В іншому випадку дотримуйтесь документації на ОС, тому що вам може знадобитися змінити спосіб монтажу вашого розділу ( тут знаходиться документація на Ubuntu ).
І ось ми:
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
Я ніколи не мав жодних проблем із цим методом, задоволений чи повернув гроші.