[php] und [bash] passwörter für bash mit php übergeben

2TAKTER

Lt. Junior Grade
Registriert
Okt. 2005
Beiträge
399
Hi

kurzes Umreißen des Problems:
- will systembefehle wie ifconfig, hostname usw. unter php ausführen
- habe ubuntu 6.10 und muss dafür sudo benutzen
- sudo verlangt passwort

ich habe jetz versucht einen string zu erstellen der den kompletten befehl enthält und diesen per system() bzw. shell_exec() ausführen zu lassen...klappt nicht

in den error_logs findet sich der hinweis für die passwortübergabe an sudo

also hänge ich an die variable für den befehl noch ein ."\n".$passwd in der hoffnung dass es als zeilenumbruch interpretiert wird und das passwort automatisch eingefügt wird - wieder falsch

ich bin für fast alles offen.... fast. veränderungen an der /etc/sudoers stehe ich skeptisch gegenüber

danke im voraus
 
das einfachste (und wohl auch sicherste) wäre, wenn du deine aufrufe der systemtools in einzelne skripte packst und diese mittels setuid-flag als root ausführst. das spart den ärger mit passwörtern, die groß in den skripten rumstehen...
 
Das Passwort würde nicht im Quelltext stehen, da man es im php-file manuell eingeben muss... das einzige was man daraus entnehmen könnte wäre der name der variable, $passwd :D

mit der uid das klappt auch nicht so ganz. bin n00b bei ubuntu und nen richtigen root gibt es da ja nicht. sprich mit sudo führe ich ja alle befehle als root aus... oder täusch ich mich da?
 
wenn mich jetzt nicht alles täuscht, ist es nicht möglich den befehl sudo irgendwie mittels einer pipe zu "füttern". du müsstest also die authetifizierung und den uid-wechsel in php direkt implementieren.

zum thema root: auch unter ubuntu gibt es den user root, der ist nur nicht für den login freigegeben. kannst du aber einfach erzwingen, indem du "sudo passwd" ausführst. danach hat der root ein passwort und kann sich auch einlogen.

zum thema uid: da war ich wohl ein bisschen voreilig, da man für skripte kein setuid-flag nutzen kann. müsstest also ein kleines programm drumherum schreiben. also bspw.: mit c folgendes miniprogramm schreiben:
int main()
{
system("dein_befehl");
return 0;
}
bei dem resultierenden binary dann root als eigentümer setzen und mittels chmod +s das setuid-flag setzen.

wenn du das root-passwort als kontrolle haben willst, schau dir mal das pam von php an. damit sollten sich solche probleme umgehen lassen.
 

Ähnliche Themen

Zurück
Oben