2017-02-15 5 views
0

Es gibt viele verschiedene Varianten dieser Frage zu SO, aber ich habe keine gefunden, die tatsächlich erklären, welche spezifischen Berechtigungen erteilt werden sollten, damit Apache sicher/mit minimalem Aufwand in eine SQLite-DB schreiben kann Risiko. Ich habe diese Frage gestellt, weil es viele Informationen über das allgemeine Konzept des Schreibzugriffs für den Apache-Benutzer gibt, aber keine Einzelheiten darüber, wie dieser Zugriff auf den Apache-Benutzer mit minimal erforderlichen Berechtigungen gewährt wird.Korrekte Schreibrechte für Apache-Benutzer mit SQLite

meines Web-App-Struktur mit der sqlite db außerhalb des Web-Root Gegeben:

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

Als ich einen PHP-Skript aufrufe, die einen Schreibvorgang auf dem DB auszuführen versucht, ich error.log den folgenden Fehler in apache2 's Get :

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: ... 

ich weiß aus various SO questions und von the PDO manual, dass die Lösung für dieses Problem Schreibzugriff für das Verzeichnis der Datenbank zu dem www-data Benutzer zu gewähren ist, aber ich bin relativ neu in p Bestätigungen und wie man sie sicher gewährt. Kann jemand angeben, welche Berechtigungsstufe dem Benutzer www-data gewährt werden soll und wie dies zu erreichen ist?

Antwort

0

Das hängt wirklich von Apache-Server-Konfiguration (vielleicht sind Sie nicht virtuellen Host-Verzeichnis verlassen erlaubt), aber dies könnte den Trick

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

Danke tun, diese Arbeit hat - gibt es irgendwelche Probleme mit der Sicherheit dieser Ansatz? – Marcatectura

+0

Apache sollte keine Schreibberechtigung außerhalb des virtuellen Hostverzeichnisses haben. Seien Sie vorsichtig beim Schreiben Ihres PHP, Sicherheitsverletzungen können dazu führen, dass jemand in Ihr DB-Verzeichnis schreibt. – dsmatilla