PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : File-Berechtigungen via Apache/php



ulsc
11.07.06, 14:46
Hallo allerseits,

stehe vor dem Problem, daß via Apache/PHP hochgeladene Dateien anschließend (zwecks automatischer Weiterverarbeitung) einem anderen User gehören sollen.
Standardmäßig werden diese Files mit dem Benutzer 'Apache' und der Berechtigung 700 gespeichert. Für alle anderen Files ist das genau so richtig, nur sollen eben diese speziellen Files mit anderem User/anderen Berechtigungen abgelegt werden.

Ich sehe dabei die folgenden Möglichkeiten:
- Aufrufen eines Shellscriptes, das als root (grusel) läuft, um damit CHOWN und CHMOD durchzuführen.
- CHMOD durch den Webserver z.B. auf 777, dann kann der 'andere User' (via Shellscript) das CHOWN selbst durchführen.
- CHOWN durch den Webserver.

Variante 1 ist klar, möchte ich aber vermeiden. Sind die Varianten 2 und/oder 3 möglich? Wenn ja: Wie?

Vielen Dank allerseits
Uli

marce
11.07.06, 14:49
Solange sie dem Webserver gehören (was sie ja tun) sollte der alles mögliche damit machen können - also auch ein chown.

Ein entsprechendes shell- oder php-Script sollte also das "gewünschte" machen...

ulsc
11.07.06, 15:12
Hi,
vielen Dank für die schnelle Antwort.

Auf php.net steht beim Befehl CHOWN, daß dieser nur von root ausgeführt werden kann. Demnach müßte ich dem betreffenden php-Script Rootrechte einräumen?

Kann auf der Shell nicht ein X-beliebiger User ein CHOWN auf sich selbst machen, wenn er Vollzugriff auf die Datei hat (777)? Oder habe ich das völlig falsch in Erinnerung?

Schöne Grüße
Uli

Roger Wilco
11.07.06, 15:24
Solange sie dem Webserver gehören (was sie ja tun) sollte der alles mögliche damit machen können - also auch ein chown.
Den Systembefehl chown darf nur der Benutzer mit der UID 0 ausführen. ;)

Eine saubere Lösung wären SuPHP oder SuEXEC, so dass der PHP-Interpreter im Kontext des gewünschten Benutzers läuft.

ulsc
11.07.06, 16:48
Hallo
und vielen Dank auch für diese Antwort. Hatte ich jetzt fast befürchtet. Ich versuche halt, um die Benutzung von 'root' herumzukommen.

Habe ich das denn richtig in Erinnerung, daß folgendes funktionieren müßte:
- Apache setzt per CHMOD die Rechte auf 777
- Der User, dem die Datei gehören soll (bzw. das Script mit seiner Berechtigung) , KOPIERT die in sein Userverzeichnis. Dann müßte sie ihm gehören, richtig? Mit verschieben klappt es nicht, das weiß ich noch. Aber kopieren sollte klappen, oder?
- Anschließend löscht er (bzw. das Script) die vom Apache geschriebene Datei.

Jetzt gibt es die Datei nur noch einmal - und mit den korrekten Rechten. Ganz ohne CHOWN.

Ob das geht? Habe leider keinen Linux-Rechner zum Testen hier... :(

Vielen Dank für weiteren Input
Uli

MiGo
12.07.06, 07:26
Dann müßte sie ihm gehören, richtig? Mit verschieben klappt es nicht, das weiß ich noch. Aber kopieren sollte klappen, oder?
Nein, tut sie nicht. Verschieben darf er sie, wenn er genügend Rechte hat (w). kopieren darf er auch mit "r". Aber an dem Besitzer ändert das nichts.

Welchen Besitzer haben denn die Dateien nach dem Hochladen?

tschloss
12.07.06, 12:39
Nein, tut sie nicht.

Doch, das ginge. Habe es gerade ausprobiert.
Eine Datei als root erzeugt (root/root, 644).
Als user1 cp datei datei2
ergibt datei2 user1/users, 644

Grüße
Thomas

MiGo
13.07.06, 09:18
Doch, das ginge. Habe es gerade ausprobiert.
Eine Datei als root erzeugt (root/root, 644).
Als user1 cp datei datei2
ergibt datei2 user1/users, 644
Erstaunlich. Wieder was gelernt.

bla!zilla
13.07.06, 09:27
Durch das Kopieren gehört die Kopie dem User. Das Orginal kann er mit Lese-Rechten lesen, die Kopie legt er ja erst an. Und Ersteller==Besitzer.