Dateibenutzer (FTP und Online-Editor)

zempsit

Erfahrenes Mitglied
Ich versuche mir mein eigenes kleines CMS aufzubauen. Nun funktioniert das ganz gut. Aber die jeweiligen Dateiattribute machen mir etwas Sorge.

Wenn ich zum Beispiel eine Datei online im Editor erstelle erhält sie als Besitzer "apache". Wenn ich jedoch eine Datei mit FTP herauflade erhält sie als Besitzer meinen Anmeldenamen.

Nun kann es ab und zu mal vorkommen, dass ich eine online erstelle Datei herunterlade und offline bearbeiten will. Mit mit meinem FTP-Client (FileZilla) kann ich zwar die online erstelle Datei nicht mit der offline bearbeiteten Datei überschreiben, aber ich kann die online erstelle Datei per FTP löschen (warum ist mir nicht ganz klar?) und dann die bearbeitete Datei heraufladen.

Falls ich nun diese Datei aber wieder im Online-Editor bearbeiten will, hat sie natürlich wieder den falschen Benutzer. Die einzige Lösung dafür sehe ich bis jetzt darin, eine Kopie der Datei zu erstellen (die hat ja den Besitzer apache) und diese zu bearbeiten. Gerade elegant ist das aber nicht.

Ich könnte dieses Problem einfach lösen, indem ich allen Dateien einfach die vollen Schreibrechte geben würde. Dies will ich aber aus Sicherheitsgründen lieber nicht machen.

Vielleicht mache ich irgendwo einen Denkfehler und die Lösung wäre ganz einfach. Falls ihr Ideen hat dieses Problem mit relativ sicheren Dateirechten (so 644) zu lösen, meldet euch doch...

mfg zempsit
 
Du arbeitest anscheinend auf einem Linux System. Und hast auf diesem System einen user (ftp user). Gleichzeitig hat dein CMS auch user.

Mir ist nun nicht ganz klar wie du erkennst das die Datei den falschen user hat? Oder hat das CMS-System linux user?


Vielleicht hilft dir das hier weiter: http://de.wikipedia.org/wiki/Unix-Dateirechte
 
Du arbeitest anscheinend auf einem Linux System. Und hast auf diesem System einen user (ftp user). Gleichzeitig hat dein CMS auch user.

Mir ist nun nicht ganz klar wie du erkennst das die Datei den falschen user hat? Oder hat das CMS-System linux user?

Vielleicht hilft dir das hier weiter: http://de.wikipedia.org/wiki/Unix-Dateirechte
Ja, ich arbeite mit Linux. Aber das hat, so glaube ich, keinen Einfluss. Das Problem liegt darin, dass PHP als Apache-Modul ausgeführt wird und so alle mit PHP erstellten Dokumente als user "apache" erhalten.
Die mit dem FTP-Client heraufgeladenen haben jedoch einen anderen user, da sie ja nicht als Apache-Modul ausgeführt werden.

Hast du mal chown() ausprobiert?
chown() kann ja nur vom Superuser geändert werden. Wenn ich jetzt also beim per FTP heraufgeladene File den user per chown() wechseln will, geht das nicht, weil ich ja das aus einem PHP-Script mache, wo der user apache heisst.

Korrigiert micht, falls ich etwas Falsches sage.
 
Ich werde das Problem nun wie folgt umgehen:
  • Ich programmiere mir einen kleinen Filemanager, wo ich die Dateirechte einfach per Formular-Eingabe ändern kann. Falls ich nun eine Datei per FTP herunterladen will, ändere einfach kurz die Rechte.
  • Von neuen Dokumenten, die heraufgeladen werden, erstelle ich per PHP eine Kopie, welche nachher als neue Hauptdatei gilt. Die Kopie hat ja dann auch den Besitzer apache.
  • Ich mache ein PHP-Upload Script. So kann ich dort Dateien uploaden, die auch den Besitzer apache bekommen.
Natürlich ist der zweite Punkt nicht mehr unbedingt nötig, wenn ich den dritten mache. Aber er erweitert die Möglichkeiten.
 
Zurück