Frage

Ich mag eine einfache Web-Anwendung erstellen, die auf einem Server ein Verzeichnis verwaltet. Ich möchte den Menschen die Möglichkeit geben, chown und chmod zu verwenden.

Was ist der sicherste Weg, um PHP, diese Erlaubnis zu geben? Die schnellste Sache ist nur Apache und PHP als root ausgeführt wird, aber das scheint nicht eine gute Idee zu sein.

Eine andere Sache, die ich gedacht, wurde ein separates Skript erstellen, die setuid root hat ..

Danke!

War es hilfreich?

Lösung

Nun, es klingt sicherlich wie eine gefährliche Idee zu beginnen, und ich würde es vorziehen, durch die ganze Strategie der Hinsetzen und darüber nachzudenken, was erreicht werden will.

Die Gefahr ist privilege escalation eines ausführbaren Skript, das ein Remote-Benutzer, natürlich ändern oder Upload konnte. Volles chown / chmod in einem Web-App entspricht nur das Root-Passwort auf der Seite einfügen.

Was ist das genau das, was geschehen muss?

Wenn die chown aus irgendeinem Grund muss geschehen, aber nicht zu verankern (wir hoffen), dann sollte die Funktionalität gewickelt werden. Ich würde die Benutzeranfragen nehmen und sie Warteschlange, haben dann einen separaten Prozess (könnte Shell, PHP, Perl, alles) als root von cron ausgeführt wird diese Warteschlange überprüfen, um zu sehen, ob die Anforderung die zulässigen Parameter passen, und die Änderungen vornehmen .

Andere Tipps

Eine Möglichkeit sudo einzurichten auf Ihrem Rechner sei (vorausgesetzt, es ist eine Linux-Box). Sudo ermöglicht es Ihnen, Befehle erhöht wird, geregelt durch Beschränkungen, die in der sudoers.conf Datei auszuführen. Verwenden enge Vorschriften für ihre Verwendung auf die erforderlichen Befehle in einem bestimmten Verzeichnis für den Benutzer beschränken Sie Ihr Web-Dienst unter (wie www-data) ausgeführt wird, und rufen Sie dann den Befehl Shell aus Ihrem PHP-Skript so etwas wie tis:

shell_exec("sudo chmod 777 dirname");

Sie stellen Sie sicher, dass Ihre sudo Config ist eng, um sicherzustellen, dass so gut wie unmöglich sein wird ausbricht.

Vielleicht sollte man sich die PHP-Befehle aus: chmod, chown, chgrp und fileperms

chmod

chmod("/somedir/somefile", 0600);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top