Hallo Peter, hallo Thorsten, hallo Leute, Am Dienstag, 11. Juni 2002 23:38 schrieb Peter Wiersig:
Christian Boltz wrote:
Am Montag, 10. Juni 2002 19:00 schrieb T. Hantke:
Wie kann ich nun über PHP eine Datei in einem Userverzeichnis mit (User/Gruppe) user111.www anlegen/schreiben?
Such mal in der Apache-Doku nach suEXEC.
Wenn ich es richtig verstanden habe, sollte das - in Kombination mit User und Group in den VirtualHost-Definitionen - das gewünschte bewirken. Dein Apache läuft doch hoffentlich nicht als root, oder?
Wohl wirklich nicht. Wenn er aberr suEXEC benutzt um einen Befehl als preveligierter Benutzer auszufuehren, heisst das unter Linux automatisch das der Apache als root laufen muss.
suEXEC ist hier nicht das richtige Mittel, sondern sudo oder su1 oder vergleichbare Programme.
Hmm, habe ich das so falsch verstanden? Also nochmal nachgelesen. IMHO sieht es (immer noch) so aus: ----- Zitat Apache-Manual ----- The suEXEC feature -- introduced in Apache 1.2 -- provides Apache users the ability to run CGI and SSI programs under user IDs different from the user ID of the calling web-server. Normally, when a CGI or SSI program executes, it runs as the same user who is running the web server. ----- Ende Zitat Apache-Manual ----- Also: suexec ist ein Programm (in /sbin), dass den User ändert, unter dem der Apache Scripte (PHP, Perl, ...) ausführt und damit z. B. auch Dateien anlegt. (Dazu muss suexec suid-root gesetzt sein.) Durch suEXEC werden Scripte mit einer in der config festgelegten uid (auf keinen Fall als root) ausgeführt und demzufolge auch vom Script angelegte Dateien unter dieser uid erzeugt. Das dürfte also genau das sein, was Thorsten sucht. Um jetzt der Paranoia -- hilfe, ein suid-bit -- ;-) entgegenzuwirken: Bevor suexec irgendetwas tut, führt es erst einige Überprüfungen durch, insgesamt 20 an der Zahl - siehe z. B. bei installierter Apache-Doku http://localhost/manual/suexec.html Ich beschränke mich auf die wichtigsten Punkte, übernommen aus der genannten Doku (deshalb auf englisch) und jeweils auf die Überschrift gekürzt: - Was the wrapper called with the proper number of arguments? - Is the user executing this wrapper a valid user of this system? - Is this valid user allowed to run the wrapper? - Does the target program have an unsafe hierarchical reference? - Is the target user NOT superuser? - Is the target group NOT the superuser group? - Is the target userid ABOVE the minimum ID number? - Is the target groupid ABOVE the minimum ID number? - Is the directory within the Apache webspace? - Is the directory NOT writable by anyone else? - Is the target program NOT writable by anyone else? - Is the target program NOT setuid or setgid? - Is the target user/group the same as the program's user/group? - Can we successfully clean the process environment to ensure safe operations? Nach all diesen Überprüfungen empfinde ich es als sicherer, mit suexec zu arbeiten, als alle Dateien, die durch Scripte erstellt werden, unter wwwrun anzulegen. Dies gilt besonders, wenn auf dem Server mehrere Virtual Hosts liegen, die von verschiedenen Benutzern genutzt werden, die nicht 100% vertrauenswürdig sind. Würden dabei Dateien als wwwrun angelegt, hätten es andere Nutzer des Webservers relativ leicht, per PHP "fremde" Dateien, die eben als wwwrun angelegt wurden, zu löschen/verändern usw. Gruß Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux - life is too short for reboots.