Mailinglisten-Archive |
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