Zugrifssrechte 777 mit PHP
Thomas
- php
0 Henk Strobel0 Sönke Tesch
Hallo zusammen,
auf einem Webserver sammle ich Informationen, die dann
über ein Script script.php in HTML-dateien auf dem Webserver
abgelegt und dynamisch geändert werden. Diese Infos rufe
ich meinetwegen über www.xyz.de ab.
Das Script liegt im verzeichnis vz1, die HTMl-Dateien
X1.html bis xn.html liegen in vz2 unter xyz.de.
Um beispielsweise die Datei x1.html mit script.php wieder zu
laden, eine Zeile einzufügen und zurückzuschreiben braucht
x1.html die Rechte 777, weniger reicht nicht, hab alles probiert.
Nun sagt mir jeder: zu gefährlich, weil jetzt "Jeder" darauf
Zugriff hat. Aber was heisst das konkret? Kann da jemand
mit einem Script, beispielsweise ausgeführt auf www.123.de
meine HTML-Dateien plattmachen? Oder müsste jemand auf derselben
Domain wie ich ein Script haben um Schaden anzurichten?
Seht Ihr eine einfache Alternative, damit nur script.php
Schreibzugriff auf die HTML-Dateien hat, und sonst keiner?
Bin für jeden Hinweis dankbar, denn irgendwie konnte mir bis
jetzt niemand so richtig weiterhelfen.
Danke
Thomas
Hallo,
Um beispielsweise die Datei x1.html mit script.php wieder zu
laden, eine Zeile einzufügen und zurückzuschreiben braucht
x1.html die Rechte 777, weniger reicht nicht, hab alles probiert.
Das glaube ich kaum, denn lesen und schreiben (dafür stehen die ersten beiden 7en) hat mit ausführen (dafür steht die dritte 7) nicht viel zu tun, der Wert der dritten Zahl sollte in Deinem Fall also keinen Unterschied machen.
Wer ist denn Besitzer der Datei?
Wenn die Datei dem User "gehört", unter dem der PHP-Interpreter bzw. Apache läuft, sollte zum Beispiel auch eine 600 reichen (dann darf nur der Besitzer der Datei diese lesen und schreiben).
Gruß Henk
Hallo Henk,
die Datei gehört vermutlich dem ftp-User, mit dem ich die Datei hochgeladen habe. Dann wäre also, wenn ich Dich richtig verstehe,
das Beste, den Datei-Besitzer auf den User zu ändern, unter dem Apache bzw. der PHP-Interpreter läuft. Aber wie mache ich das denn?
Dank & Gruss
Thomas
Hallo,
Um beispielsweise die Datei x1.html mit script.php wieder zu
laden, eine Zeile einzufügen und zurückzuschreiben braucht
x1.html die Rechte 777, weniger reicht nicht, hab alles probiert.Das glaube ich kaum, denn lesen und schreiben (dafür stehen die ersten beiden 7en) hat mit ausführen (dafür steht die dritte 7) nicht viel zu tun, der Wert der dritten Zahl sollte in Deinem Fall also keinen Unterschied machen.
Wer ist denn Besitzer der Datei?
Wenn die Datei dem User "gehört", unter dem der PHP-Interpreter bzw. Apache läuft, sollte zum Beispiel auch eine 600 reichen (dann darf nur der Besitzer der Datei diese lesen und schreiben).Gruß Henk
Hallo,
Aber wie mache ich das denn?
chown <neuer besitzer> <dateiname>
Dazu brauchst Du eine Kommandozeile auf dem Server, z.B. über Telnet oder SSH, über FTP geht das afaik nicht. Du könntest evtl. aber den Befehl über die PHP-Funktion system() ausführen, falls das erlaubt ist.
Gruß Henk
Hallo nochmal,
chown <neuer besitzer> <dateiname>
Dazu brauchst Du eine Kommandozeile auf dem Server, z.B. über Telnet oder SSH, über FTP geht das afaik nicht. Du könntest evtl. aber den Befehl über die PHP-Funktion system() ausführen, falls das erlaubt ist.
chown ist ein Root-Kommando. "Normale" User drüfen das nicht benutzen.
Ich glaube nicht, dass ein chown() durch das PHP-Runtime erlaubt ist.
Chris (C)
Hallo Henk,
mein Posting sit leider im Nirwana gelandet. Also nochmal:
owner group other
4 2 1 4 2 1 4 2 1
r w x r w x r w x
| | 0 | | 0 0 0 0
----- ----- -----
6 6 0
Die erste 6 steht also für die Ownerrechte
die zweite 6 steht für die Gruppenrechte
die dritte 6 steht für die "Weltrechte" also Gäste
Grüße
Chris (C)
Moin Chris,
hast recht, hatte da wohl was durcheinanderbekommen...
Gruß Henk
Um beispielsweise die Datei x1.html mit script.php wieder zu
laden, eine Zeile einzufügen und zurückzuschreiben braucht
x1.html die Rechte 777, weniger reicht nicht, hab alles probiert.Nun sagt mir jeder: zu gefährlich, weil jetzt "Jeder" darauf
Zugriff hat. Aber was heisst das konkret? Kann da jemand
mit einem Script, beispielsweise ausgeführt auf www.123.de
meine HTML-Dateien plattmachen?
Wenn Du "jedem" schreibenden Zugriff auf eine Datei erlaubst, kann in der Tat jeder Nutzer des Servers (!) diese Datei leeren.
Oder müsste jemand auf derselben
Domain wie ich ein Script haben um Schaden anzurichten?
Mit Domains hat das nichts mehr zu tun, die Dateirechte regeln den Zugriff auf Betriebssystemebene.
Seht Ihr eine einfache Alternative, damit nur script.php
Schreibzugriff auf die HTML-Dateien hat, und sonst keiner?
Nein, nicht mit Deiner derzeitigen Systemkonfiguration.
Dein Problem ist, daß PHP mit der Identität des Webserverprogramms läuft (einfach weil PHP Bestandteil des Webserverprogramms ist).
Dateien haben unter Unix drei verschiedene Rechtegruppen, je einen Satz für den Eigentümer, für eine zu definierende Nutzergruppe und für alle anderen eingetragenen Nutzer des Computers (nachfolgend "Rest" genannt). Die Eigentümerrechte scheiden aus, denn Eigentümer bist Du, nicht der Webserver; bleiben die Gruppe und der Rest. Hätte man auf Deinem Server vorgesorgt, könnte man eine Gruppe anlegen, deren einzige Mitglieder Du und der Webserver sind, die Gruppenrechte nutzen und dem Rest den Zugang verwehren. Das ist bei Dir offenbar nicht geschehen, so daß nichts anderes übrig bleibt, als die Rechtegruppe für den Rest zu nutzen, um dem Webserver den Zugriff auf die Datei zu erlauben - und "Rest" schließt nunmal dummerweise alle Benutzer des Rechners ein.
Die Gefahr, die davon ausgeht, ist allerdings nicht allzu groß. Den meisten Nutzern ist diese Problematik genausowenig bekannt wie den meisten Hostern. Möchtest Du trotzdem nicht Opfer eines gelangweilten Wissenden werden, solltest Du Dir einen Hoster suchen, der keine 08/15-Linux-Distribution benutzt, geschweige denn Wiederverkäufer ist - das könnte allerdings schwierig werden, wenn Du nicht an der richtigen Stelle fragst.. ;)
Gruß,
soenk.e