Я знаю, що це дуже старе питання, але я хотів додати гарне рішення з деякими глибинними поясненнями. Вам доведеться виконати два оператори на системах, подібних до Ubuntu, і тоді це працює як шарм.
Дозволи в Linux можуть бути представлені трьома цифрами. Перша цифра визначає дозвіл власника файлів. Друга цифра дозволів певної групи користувачів. Третя цифра визначає дозволи для всіх користувачів, які не є власником і не членом групи.
Передбачається, що веб-сервер виконує ідентифікатор, який є членом групи. Веб-сервер ніколи не повинен працювати з тим самим ідентифікатором, що і власник файлів та каталогів. В Ubuntu запускається апач під id www-data. Цей ідентифікатор повинен бути членом групи, для якої вказані дозволи.
Щоб надати директорії, в якій потрібно змінити вміст файлів, належних прав, виконайте оператор:
find %DIR% -type d -exec chmod 770 {} \;
. Це означає, що у запитанні про ОП слід мати відповідні зміни дозволів для каталогу% ROOT% / бази даних. Для цього важливо не мати файлів у цьому каталозі, які ніколи не слід змінювати чи видаляти. Для цього є найкращою практикою створити окремий каталог для файлів, вміст яких потрібно змінити.
Дозвіл на читання (4) для каталогу означає можливість збирати всі файли та каталоги з їх метаданими в каталозі. Дозвіл на запис (2) дає дозвіл на зміну вмісту каталогу. Передбачення додавання та видалення файлів, зміна дозволів тощо. Дозвіл на виконання (1) означає, що ви маєте право зайти в цей каталог. Без останнього неможливо заглибитись у каталог. Веб-сервер повинен читати, записувати та виконувати дозволи, коли зміст файлу має бути змінено. Для цього групі потрібна цифра 7.
Друге твердження - у питанні про ОП:
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
Вміти читати та писати документ потрібно, але виконувати файл не потрібно. 7 надається власнику файлів, 6 - групі. Веб-серверу не потрібно мати дозвіл на виконання файлу, щоб змінити його вміст. Ці дозволи на запис мають бути надані лише файлам у цьому каталозі.
Усі інші користувачі не повинні отримувати жодного дозволу.
Для каталогів, які не потребують зміни його файлів, достатньо групових прав на 5. Документація про дозволи та деякі приклади:
https://wiki.debian.org/Персидії
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
php.ini
файл щось, що може заборонити доступ до файлу?