phpbar.de logo

Mailinglisten-Archive

[php] exec su

[php] exec su

Niels Jäckel niels.jaeckel at silice.de
Fre Aug 31 11:49:05 CEST 2007


Hallo Christoph,

> Wenn ich exec('su '.$username) ausführe, kommt ja die passwortfrage. 
> Habe alles probiert
> 
> - Anhängen per exec('su '.$username .';' .$password);
> - Zeilenumbruch exec('su '.$username ."\n" .$password);
> - sequenziell
> 	exec('su '.$username');
> 	exec($password);
> 
> mit whoami bekome ich aber immer nur wwwdata zurück (den Webserver-User)
> 
> Gruppenrechte müsste man per SSH stellen, teilweise gibts diese 
> Möglichkeit aber für die Admins nicht (sag nix, wir raten grundsätzlich 
> von solchen Accounts ab...).

Soweit ich weiss macht su eine neue Shell auf, an die du aber nicht 
rankommst. Du kannst höchstends mal versuchen gleich den entsprechenden 
Befehl (bzw. Skript) mitzugeben. Z.B.:


	/etc$ cat shadow
	cat: shadow: Keine Berechtigung

	/etc$ su -c "cat shadow"
	Password:

	root:...
	/etc$ _


Ich weiß allerdings nicht, ob du die interaktive Passworteingabe über 
das exec() hinbekommst. Eine Möglichkeit wäre vielleicht noch zu 
versuchen das ganze als Socket zu machen und das STDIN auf deinen 
Eingabestrom zu hängen. Ich weiß allerdings nicht, ob und wie das geht 
bzw. ob das aus Sicherheitsgründen überhaupt zulässig ist...

Eine weitere Möglichkeit wäre noch das Login per Zertifikat - da 
entfällt dann die Passworteingabe.

Die beiden Ansätze sind allerdings eher speziell und werden daher nicht 
auf jedem x-beliebigen System funktionieren. Ich denke mal, dass eine 
Lösung per sudo übersichtlicher, verbreiteter, verständlicher und 
wartbarer ist. Jetzt musst du dir nur noch die Möglichkeit versorgen 
sudo zu konfigurieren :-D


Was spricht eigentlich dagegen, die Schreibrechte der zu updatenden 
Dateien entsprechend aufzubohren (ssh, sftp, ftp), sodass auch der 
wwwrun schreiben darf und die Updates dann ganz easy mit PHP drauf zu 
bügeln? Man kann das ganze auch temporär machen, indem man den wwwrun 
als Eigentümer der Dateien setzt und dann zur Laufzeit des Skrits erst 
die Rechte (zeitweise) etwas offenherziger setzt. (fileperms, 
clearstatcache)



HTH,
Niels

php::bar PHP Wiki   -   Listenarchive