PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : su oder sudo mit Passwort



Fireball22
31-07-2008, 15:27
Hallo,

ich bräuchte für ein PHP-Script einen Shell-Befehl, der wie folgt aussehen sollte:



$shell = shell_exec("su -c \"/home/Streamserver/teststream/".$_GET['server']."/sc_serv\" stream");


Allerdings frägt er mich danach nach dem Passwort für den Benutzer stream,deshalb würde ich dieses gerne irgendwie direkt in den Befehl integrieren.
Nur wie?

echo "password" | su -c "command" username
funktioniert leider nicht, er frägt mich trotzdem nach dem Passwort.

Das gleiche ist bei sudo der Fall.

Was lässt sich da machen?

Mfg
MIchael

jeebee
31-07-2008, 16:25
für sudo kannst du in der Konfiguration (/etc/sudoers) mittels NOPASSWD die Passwortabfrage für bestimmte Befehle und User unterdrücken (man sudoers oder google helfen weiter).

undefined
31-07-2008, 19:09
Also sudo sollte hier die erste Wahl sein im Notfall geht auch.

echo "meinPasswort" | su -c "meinProgram Aufruf"

Fireball22
31-07-2008, 22:44
@undefined:
Leider bekomme ich da die Ausgabe, dass das ganze in einem Terminal ausgeführt werden muss.

Aber ich hab das jetzt allerdings schon per NOPASSWD in der /etc/sudoers geregelt ;)

Vielen Dank für eure Hilfe!

MfG
Michael

undefined
01-08-2008, 21:40
Mal als Hinweis - was du da machst ist mehr als gefährlich sudo kann nur auf Benutzer und Gruppen gehen.
PHP ist weder eine Gruppe noch ein Benutzer sondern ein Modul von Apache.
Das heist wenn du dem Benutzer z.B. wwwrun einen sudo setzt. dann erlaubst du der Kompletten CGI Schnittstelle auf POST/GET/PUT/PUSH/MOVE/UNLOCK System Befehle ab zu setzen. Das ist für Leute die sich mit Curl gut auskennen ein gefundenes fressen. Vor allem ist PHP was diese Geschichte betrifft mehr als anfällig, PHP ist nicht umsonst wegen seiner GLOBALS Registrie sehr oft in der kritik.
Ich würde hier eher ein Shell Script schreiben das diese Befehle absetzt, so hast du wenigstens etwas Kapselung.

Fireball22
01-08-2008, 22:25
Vielen Dank für deinen Hinweis!

Das ist allerdings richtig, aber ich habe auch nicht vorgehabt, wwwrun sudo-Rechte zu geben.
Nur der bestimmte User, der von dem su-Befehl aufgerufen wird, hat Rechte um den Befehl aus der PHP-Datei aufzurufen.

Aber ich glaube, ich werde trotzdem noch ein Bash-Script entwickeln um das ganze zusammen zufassen.

MfG
Michael

gadget
02-08-2008, 13:32
Also sudo sollte hier die erste Wahl sein im Notfall geht auch.

echo "meinPasswort" | su -c "meinProgram Aufruf"
Wäre das bei dir erlaubt?

su: Muss von einem Terminal gestartet werden

undefined
02-08-2008, 14:50
Habe ich mit PHP noch nie ausprobiert. Ich komme erst gar nicht auf solche Ideen. Da gibt es in meinen Augen ganz andere und bessere Lösungsansätze.
Shellscripte mit ACL eingestellt oder SSH basierende Socket Verbindungen.
Ich Administriere 4 Server, wenn ich mir die log Dateien ansehe sagt es mir ganz klar nicht vom Webspace aus auf Terminal Ebene zugreifen oder sonstige System freigaben machen. Paranaoid ist da hiep ;)

Fireball22
02-08-2008, 15:29
@gadget
Bei mir läuft das leider auch nicht, bekomme die selber Meldung...

@undefined
Hört sich ebenfalls sehr interessant an, allerdings ist das doch um einiges komplizierter zu realisieren, oder?
Ich habe zumindest noch nie etwas von ACL gehört und finde auch bei Google nichts entsprechendes...

MfG
Michael

undefined
02-08-2008, 18:41
http://www.suse.de/~agruen/acl/chapter/fs_acl-de.pdf

Fireball22
02-08-2008, 22:55
Vielen Dank für den Link, werde ich gleich mal studieren ;)

MfG
Michael

quinte17
07-08-2008, 06:53
vielleicht ist ja expect was für dich...
http://www.mrunix.de/forums/showthread.php?t=40704&highlight=expect

bitte auch den hinweis bzgl der sicherheitslücken lesen ;)

greetz

Fireball22
07-08-2008, 20:30
Ja vielen dank für diesen Tipp, das ist ja genau das richtige was ich schon immer gesucht habe, klasse!

Also vielen Dank nochmals!

MfG
Michael