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?
Danke tun, diese Arbeit hat - gibt es irgendwelche Probleme mit der Sicherheit dieser Ansatz? – Marcatectura
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