Правильные права на запись для пользователя apache с SQLite

Существует множество различных вариантов этого вопроса для SO, но я не нашел ни одного, который бы на самом деле объяснял, какие конкретные разрешения должны быть предоставлены, чтобы позволить apache безопасно / с минимальным риском писать в БД SQLite. Я задал этот вопрос, потому что есть много информации об общей концепции разрешения доступа на запись для пользователя apache, но нет подробностей о том, как предоставить этот доступ пользователю apache с минимально необходимыми разрешениями.

Учитывая структуру моего веб-приложения с базой данных sqlite вне корневого веб-каталога:

/var/
├── databases/
│   └── myapp/
│       └── db.sqlite3 (PERMISSIONS)
│
├── www/html/ (web root)
│   ├── index.php
│   └── includes/
│       ├── include1.php
│       └── ...

Когда я вызываю PHP-скрипт, который пытается выполнить операцию записи в БД, я получаю следующую ошибку в apache2 error.log:

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /var/www/html/includes/include1.php:xx\nStack trace:\n#0 /var/www/html/includes/include1.php(xx): PDOStatement->execute()\n#1 {main}\n  thrown in /var/www/html/includes/include1.php on line xx, referer: ...

Я знаю из различные вопросы SO и из руководство по PDO что решение этой проблемы заключается в предоставлении доступа на запись для каталога базы данных в www-data пользователь, но я относительно новичок в разрешениях и способах их безопасного предоставления. Может кто-то указать, какой уровень разрешений должен быть предоставлен www-data пользователь, а как это сделать?

0

Решение

Это действительно зависит от конфигурации сервера Apache (возможно, вам не разрешено выходить из каталога виртуального хоста), но это может помочь

chown -R www-data:www-data /var/databases/myapp/
chmod -R u+w /var/databases/myapp/
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]