PHP - Shell/ Bash - Benutzer wechsel

Anubia

Mitglied
Hallo,

ich würde gern ein Skript auf dem Server via Php starten.
Allerdings muss ich das Skript mit einem anderen Benutzer starten als mit dem WWW - Benutzer.

Meine Frage, wie kann ich über Php ein Skript unter einem anderen Benutzernamen ausführen als dem vom Apache (www) ausführen?
Wie kann ich einen Benutzerwechsel veranlassen?

Mein Code

Code:
<?php
$output = shell_exec('/home/www/user10/online.sh start');
echo "<pre>$output</pre>";
?>
 
Hallo,

das selbe Problem hatte ich auch erst kürzlich.
Sollte so funktionieren:

PHP:
$output = shell_exec('sudo deinusername /home/www/user10/online.sh start');

dann musst du noch /etc/sudoers mit einer solchen Zeile ergänzen:
Code:
www-data ALL=(ALL) NOPASSWD: /home/www/user10/online.sh

Wobei www-data in diesem Fall der WWW Benutzer ist.

Gruß,
Marc
 
ist die sache nicht unsicher, wenn der benutzerwechsel ohne passwort abfrage genehmigt wird? gerade vom www user?

was bewirkt diese zeile?

Code:
www-data ALL=(ALL) NOPASSWD: /home/www/user10/online.sh
 
Mit dieser Zeile erlaubst du deinem www-user den Zugriff über sudo auf dieses Script..
Anders geht es meiner Meinung nach nicht. Schließlich soll der www-user doch das Script ausführen dürfen..
Wenn jemand eine bessere Lösung hat, bitte verbessern :)
 
Danke Dir vielmals Marc,

bei mir funktioniert es jetzt auch

Allerdings war das shell falsch
Code:
$output = shell_exec('sudo deinusername /home/www/user10/online.sh start');

Es muss folgendermaßen lauten
Code:
$output = shell_exec('sudo -u deinusername /home/www/user10/online.sh start');

Außerdem muss man darauf achten, dass sudo auf dem server installiert ist und dass man den Eintrag in der sudoers Datei an die richtige Stelle setzt im meinem Fall an die Stelle # User privilege specification .

Vielen Dank nochmal warst eine sehr große Hilfe.

GREEZ
 
Keine Ursache :)
Doch setze den Thread bitte noch auf "Erledigt".

Bis zum nächsten Mal :)
 
Hmm was mir noch einfallen würde währe über CHMOD zu gehen und das Setuid Bit zu setzen.. also Dateirecht "4777" um so zu bewirken das die Datei als der eigentümer von ihr ausgeführt wird und nicht als www-run
 
Zurück