unlink (System-)User ändern?

honse33

Grünschnabel
Hallo Leute.

Ich habe folgende Konstellation:
Die Dateien gehören $shelluser1.
Der Webserver läuft unter www-data.
Es gibt einen $ftpuser1, dessen Dateien durch den FTP-Server nach/bei Upload auf $shelluser1 ändert.
Ordnerrechte 0755, Dateirechte 644.
Im Hintergrund läuft bedauerlicherweise Plesk.

Nun habe ich ein Projekt eines Freundes bekommen. Leider bekomme ich jedoch Rechteprobleme aufgrund der User.
Das Projekt hat ein Adminpanel, welches zum Löschen diverser Uploads dient.

Das Ganze läuft dann so ab: Es werden Dateien per FTP hochgeladen. Diese gehören $shelluser1. Wenn ich nun über das Adminpanel ein paar Dateien (per unlink) löschen möchte, gibt es natürlich ein Konflikt. Ist es möglich unlink durch einen bestimmten User (in dem Fall $shelluser) ausführen zu lassen?

Am Apache selbst kann ich nicht viel rütteln, außer vielleicht kleinere Sachen durch die .htaccess Datei.

Wäre (auch unter Sicherheitsaspekten betrachtet) 664 für die Dateien eine Lösung?
 
Ich habe keine Ahnung, welche Möglichkeiten das Adminpanel hat, aber der Admin sollte alle Dateien löschen können. Ansonsten kannst du als Admin die Rechte auf 777 setzen und sie dann mit einem beliebigen User löschen.
Wenn du die Dateien aber nicht sofort löschen willst, wäre mein Vorschlag:
Erstell eine neue Gruppe.
Dann stell die Gruppenzugehörigkeit der Datei auf diese Gruppe und die Rechte auf 664.
Wenn $shelluser jetzt Mitglied dieser Gruppe ist, kann er die Dateien löschen.
 
Zuletzt bearbeitet:
Vielleicht über ein Linux-Befehl?

PHP:
$output = shell_exec('sudo unlink ....');
echo "<pre>$output</pre>";

Aber Sicherheit geht anders ;)
 
Vielleicht über ein Linux-Befehl?

Da der Webserver mit den Rechten des Users www-data läuft, ist das PHP-Skript sowie alle seine Kinder (shell_exec forkt einen Unterprozess und führt den Befehl in der Login-Shell des Benutzers - in diesem Falle www-data - aus). Das heißt, www-data muss sudo ausführen dürfen und natürlich den Befehl, der mit sudo ausgeführt werden soll (/etc/sudoers). Da die meisten Plesk-Systeme mit PHP-Suhosin arbeiten, dürfte das ausführen von sudo geblockt werden. Suhosin zu deaktivieren kommt einem Sobuku gleich ;-) Davon ist abzuraten.
 
Theoretisch könnte man ein Skript schreiben, das sudo unlink ausführt. Wenn suid gesetzt ist könnte der www-User das per PHP ausführen. Ich finde es allerdings besser, das über die Gruppenrechte zu lösen.
 
Habe von einem Kollegen noch einen Tipp bekommen, mal in Richtung "php über fastcgi" zu schauen; somit könnte ich mir wohl das Rechtegefummel sparen.

Dennoch bleibe ich erstmal bei der Gruppenrechte-Lösung.

Danke für die Antworten!
 
Zurück