Ich habe ein PHP-Skript, das eine Verbindung zu einer Datenbank herstellen muss. Die Anmeldeinformationen für die Datenbank werden in einem anderen PHP-Skript gespeichert.Unix-Berechtigungen, lesen und ausführen (PHP-Kontext)
Wenn ich die Berechtigungen für die Credentials-Datei auf 661 setze, so dass Public Ausführungsberechtigung, aber keine Leseberechtigung hat, erlaubt dies dem Hauptskript, auf die Anmeldeinformationen zuzugreifen und eine Verbindung zur Datenbank herzustellen, während jemand mit einem Benutzerkonto verhindert wird Server den Inhalt der Anmeldeinformationsdatei anzeigen?
Ich denke, ich bin verwirrt über die Unterscheidung zwischen Lesen und Ausführen. Benötigt ein PHP-Skript (das als www oder ähnliches läuft) eine Leseberechtigung, um ein anderes PHP-Skript einzubinden und alle darin enthaltenen Inhalte zu verwenden? Oder muss es nur ausgeführt werden? Erlaubt die Leseberechtigung implizit die Ausführungsberechtigung?
Sub-Frage: Wenn ich alle meine Skripte nur ausführende Erlaubnis habe und nicht lesen, gibt es irgendwelche Fallstricke, die ich erwarten sollte? Dies setzt voraus, dass ich alle Dateien, die ich explizit lesen muss (Datendateien), auf Lesen setzen muss.
Hinweis: Wenn andere Benutzer Zugriff auf ihren eigenen PHP-Code über den Webserver haben, wird dies sie nicht stoppen. In diesem Fall sollten Sie sich open_basedir ansehen oder eine Lösung, die es Ihnen ermöglicht, verschiedene vhosts/apps als unterschiedliche Benutzer zu verwenden. – oops
Ja, bei näherer Betrachtung stellte ich fest, dass www ein Mitglied der Gruppe für das Verzeichnis war, auf das ich meine Verwirrung stützte. Ich habe nicht versucht, es zu hacken, ich wollte nur emulieren, was sie getan hatten, aber ohne es nur zu spiegeln. – Anthony