Moin!
Wie sieht es konkret bei einer mySQL-Datenbank mit der Datenbankdatei aus; mit welchem User:Group (Linux/Unix) und welchem Moduls wird diese im Dateisystem geschrieben?
User:Group ist die des Datenbankservers. Und was meinst du mit "Moduls"?
Ich meine die Zugriffsrechte (Stichwort umask) der Datenbank-Datei.
Meine MySQL-Installation auf Gentoo sagt: /var/lib/mysql als Datenverzeichnis gehört mysql:mysql mit Mode 0750 - Benutzer, die nicht der Gruppe mysql angehören, kommen in das Verzeichnis also nicht rein. Innerhalb dieses Verzeichnisses ist je Datenbank ein Unterverzeichnis mit mysql:mysql und Mode 0700 - außer dem User mysql kommt da also auch niemand ran (immer abgesehen von root).
Die Dateien in diesen Unterverzeichnissen gehören ebenfalls mysql:mysql mit Mode 0660, sie sind also gegen Schreib- oder Lesezugriffe von fremden Usern und Gruppen geschützt. Dieser Schutz ist nicht umgehbar (außer man schafft es, das System zu hacken).
Insofern ist für sämtliche Prozesse auf dem System, welche Zugriff auf eine MySQL-Datenbank haben, der einzige Weg der Kontakt zum MySQL-Daemon und eine dabei eventuell geforderte Anmeldung mit Benutzername und Passwort.
Bedingt schon: Durch PHP lassen sich auch eigene Prozesse Starten, die im System unter der Annahme, Safe-Mode ist nicht aktiviert, keiner Document-Root unterliegen.
Richtig, aber diese Prozesse starten in der Regel unter der Apache-Userid, wahlweise (sofern mit suexec konfiguriert) auch unter der Userid des Dateibesitzers der PHP-Datei, und eventuell (sofern die Account-Zugangsdaten bekannt sind) auch unter einer anderen Userid, die dem Inhaber/Autor des PHP-Skriptes (oder jedes anderen Programms, welches sich vom Webserver oder über die Shell starten läßt) bekannt ist, niemals jedoch unter der Userid "mysql" oder als Gruppenmitglied von "mysql" (letzteres natürlich nur, wenn der Admin nicht totalen Mist gebaut hat ;) ).
(Ich bin ein erklärter Datenbakmuffel, mich interessieren in diesem Sinne nicht die Zusammenhänge dieses Threads und ihre Auswüchse, sondern mehr die Sicherheit des Dämons "Datenbank" auf einem Linuxsystems.)
Du darfst dessen Sicherheit als gegeben annehmen. An die Datenbank kommt man als normaler User (das schließt den Apache-User mit ein) nur über den vorgesehenen Mechanismus heran. Es wäre eine heftige Sicherheitslücke, die ganz bestimmt schon entdeckt worden wäre, wenn man ohne Passwortabfrage auf die DB-Files zugreifen könnte. Millionen Shared-Hosting-Server hängen davon ab (weshalb die Sicherheit, dass da nichts Lückenhaftes zu entdecken ist, relativ hoch ist).
- Sven Rautenberg