Archiv verlassen und diese Seite im Standarddesign anzeigen : File-Berechtigungen via Apache/php
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
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...
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.
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
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?
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
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.
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.