Frage zur Verzeichnis-/File-Berechtigung

jemand anders

Erfahrenes Mitglied
Hallo,

folgende Dateistruktur:

Code:
Webserver:

Domain.de
  Verzeichnis 755 drwxr-xr-x

    File1.php     755 -rwxr-xr-x
    File2.html    755 -rwxr-xr-x
    File3.php     700 -rwx------

Warum wird File3.php angezeigt, obwohl die Dateiberechtigungen auf 700 stehen?

Noch etwas: Wie kann man verhindern, dass der Source-Code eines php-Files angezeigt wird?

Grüße
 
Zuletzt bearbeitet:
Ich gebe zu: Auch wenn es nur Bit-Banging ist konnte ich mir die einzelnen Werte für Dateiberechtigungen auch nie wirklich merken.
Ich greife dann (fast immer) auf das hier zurück:
Chmod Calculator

Gruß Technipion
 
Ja gut, aber es bleibt dabei: Es hat nur der Eigentümer Lese-, Schreib- und Ausführungsberechtigung für File3.php, aber wenn ich den File via Browser aufrufe, kann ihn jeder lesen, und ich würde gerne wissen, warum bzw. wie ich das verhindern kann.
 
aber wenn ich den File via Browser aufrufe, kann ihn jeder lesen
Achso, ja dann musst du das natürlich auch so fragen.

Wie du richtig erkannt hast kann die Datei nur vom Eigentümer gelesen, -schrieben und ausgeführt werden. Das heißt entweder, dass du den Server von deinem eigenen Benutzer aus ausführst, oder, dass du den Eigentümer per Hand zu dem Benutzer des Webservers (oft "www") gesetzt hast. Allerdings hat das alles so gut wie gar nichts mit dem zu tun, was der Server am Schluss tatsächlich ausliefert (solange der Server selbst natürlich auf die Daten zugreifen kann).

Die Konfiguration der Zugriffsbeschränkungen der meisten Webserver wird über .htaccess-Dateien geregelt. Ich gehe mal davon aus, dass du einen Apache Webserver benutzt. Hier findest du die Dokumentation dazu.
Wenn du tatsächlich File3.php von der Auslieferung ausschließen möchtest, findest du hier eine passende Konfiguration.
Aber: Das ist ganz schlechter Stil. Wenn du auf dem Webserver Dateien hast, die zwar irgendwie der Logik deiner Seite dienen, aber nicht öffentlich einsehbar sein sollen, dann haben die gar nichts in dem Ordner verloren, den du per Server auslieferst.
In deinem Beispiel heißt der Ordner, der bereitgestellt wird, einfach "Verzeichnis". Neben "Verzeichnis" sollte es noch einen zweiten Ordner geben – nennen wir ihn "Appdata". Solche Dateien wie File3.php sollten gar nicht in "Verzeichnis" liegen, sondern in "Appdata". Dann kannst du die UNIX Dateizugriffsregeln für "Verzeichnis" und "Appdata" separat setzen, ebenso wie die Serverkonfiguration, und es wird niemals etwas aus "Appdata" versehentlich in den Weiten des Internetz landen. In "Verzeichnis" gehört wirklich nur das rein, was auch tatsächlich für alle einsehbar sein soll.

Gruß Technipion
 
Ah, da kommen wir der Sache schon näher.
Dann frage ich mal anders: Wie würdest du es machen,
- dass der Code von keinem php-File gelesen werden kann, dass die also nur ausgeführt werden können,
- dass File3.php nicht direkt aufgerufen werden kann sondern nur von den anderen beiden Files ausgeführt werden kann (d. h. das Ergebnis liefert),
- und dass nur File1.php und File2.html beiden Files via Internet aufgerufen werden können sollen.
 
Zurück