2017-02-15 14 views
0

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

Учитывая структуру моего веб-приложения с БД 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: ... 

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

ответ

0

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

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

Спасибо, этого работа - есть какие-либо вопросы безопасности с этим подход? – Marcatectura

+0

У Apache не должно быть разрешения на запись за пределами каталога виртуального хоста. Будьте осторожны при написании вашего PHP, любое нарушение безопасности здесь может привести к тому, что кто-то напишет в вашем каталоге DB. – dsmatilla