Dateirechte nach FTP-Übertragung
heinetz
- php
Hallo Forum,
mir begegnet immer wieder eine Unschönheit, die ich nun
gerne mal angehen würde:
In meiner PHP-Website werden serverseitig hier um da
Dateien angelegt bzw. geändert. Beispielsweise wird
die Datei /content/temp.js von PHP verändert. Wenn
ich nun diese Datei aus meiner lokalen Entwicklungs-
umgebung (wo sie auch von php modifiziert wird) auf
den Webserver hochlade, funktioniert das nicht mehr,
weil php kein Schreibrecht hat.
Wie löst man das elegant?
danke für Tipps und
beste gruesse,
heinetz
Moin
Wie löst man das elegant?
Lies dir das Manuel zum Befehl chmod() durch.
Gruß Bobby
Moin
Bin heut ne richtig da. Das heißt natürlich Manual und es ist kein Befehl sondern eine Funktion. Ordnung muss sein. :D
Gruß Bobby
Hi,
wenn php eine vorhandene Datei aufgrund fehlender Rechte an
dieser nicht überschreiben darf, darf php die Rechte an
dieser ändern? Was funktioniert hat war mit php die Datei
zu löschen. Ist mir nicht ganz klar warum die Rechte dafür
reichten aber ich vermute, das lag daran, dass dafür die
Rechte an dem übergeordneten Verzeichnis ausschlaggebend
sind.
Ganz klar ist mir das mit den Brechtigungen nicht:
beste gruesse,
heinetz
Hello,
wenn php eine vorhandene Datei aufgrund fehlender Rechte an
dieser nicht überschreiben darf, darf php die Rechte an
dieser ändern? Was funktioniert hat war mit php die Datei
zu löschen. Ist mir nicht ganz klar warum die Rechte dafür
reichten aber ich vermute, das lag daran, dass dafür die
Rechte an dem übergeordneten Verzeichnis ausschlaggebend
sind.Ganz klar ist mir das mit den Brechtigungen nicht:
Dazu müsstest Du das Betriebssystem + Filesystem nennen, denn da gibt es gravierende Unterschiede.
Bei Linux gilt:
Wenn neben den klassischen Dateirechten keine weiteren Rechtesysteme, wie ACL, Attribute, usw. verwendet werden, gilt:
Hat der Prozess die Rechte rwx auf ein Verzeichnis, darf er darin Dateien anlegen, löschen, umbenennen, also _im_ Verzeichnis tätug werden. Hat er an den Dateien ebenfalls die Rechte rw-, darf er _in_ den Dateien etwas ändern. Hat er zusätzlich das x-Recht an der Datei, darf er sie ausführen lassen.
Hat er an den Dateien jedoch nur das r-Recht (x lassen wir jetzt mal unbetrachtet), darf er die Datei nur lesen, also keine Veränderungen _in_ der Datei vornehmen.
Deshalb hatte ich vorgeschlagen, die Group-Rechte dafür zu verwenden, dass PHP tätig werden darf, auch wenn dem PHP-User die Datei nicht gehört. Dafür muss aber die Gruppe des PHP-Users auch gesetzt werden dürfen von den betroffenen Prozessen. Sie müssen dafür selber Mitglied der Gruppe sein. Um dann beim FTP-Upload immer die Gruppe des PHP-Users automatisch einzutragen, setzt man im darüberliegenden Verzeichnis das GID-Flag
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Dazu müsstest Du das Betriebssystem + Filesystem nennen, denn da gibt es gravierende Unterschiede.
das ist ein meines Erachtens ein Debian Linux. Da ich lokal mit
OS X arbeite, gehe ich davon aus, dass es dort das grundsätzlich
genauso funktioniert.
Bei Linux gilt:
Wenn neben den klassischen Dateirechten keine weiteren Rechtesysteme, wie ACL, Attribute, usw. verwendet werden, gilt:
Hat der Prozess die Rechte rwx auf ein Verzeichnis, darf er darin Dateien anlegen, löschen, umbenennen, also _im_ Verzeichnis tätug werden. Hat er an den Dateien ebenfalls die Rechte rw-, darf er _in_ den Dateien etwas ändern. Hat er zusätzlich das x-Recht an der Datei, darf er sie ausführen lassen.
Hat er an den Dateien jedoch nur das r-Recht (x lassen wir jetzt mal unbetrachtet), darf er die Datei nur lesen, also keine Veränderungen _in_ der Datei vornehmen.
Das deckt sich mit meiner Beobachtung:
In dem Verzeichnis habe ich alle Rechte, die Datei ist allerdings
vo PHP angelegt worden und ich habe insofert nur Leserechte an
dieser Datei. Ich durfte also die Datei löschen, nicht aber
Veränderungen an ihr vornehmen.
danke fuer Tipps und
beste gruesse,
heinetz
Hello,
Wie löst man das elegant?
Ich gehe mal von Linux-Server aus:
Wenn Du keinen Konsolenzugang hast zum Server und keine Rechte, an der Konfiguration etwas zu ändern, dann sieht das schlecht aus.
Die möglichen Workarounds wären
Anderenfalls könnte der Server so konfiguriert werden, dass im übergeorneten Verzeichnis, das als Gruppe die PHP-Gruppe haben sollte, das GID-Flag gesetzt wird. Der FTP-User, der ebenfalls Mitglied der PHP-Gruppe sein sollte, kann dann für die Gruppe das Write-Flag setzen.
http://www.zzee.com/solutions/linux-permissions.shtml
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg