passwd pipe

virtual2

Registered User
Hallo Zusammen,

ich bastel gerade an einem PHP Script um via mysql Abfragen und exec() Aufrufen via Cronjob, Neuinstallationen von OpenVZ vServern auf entfernten Hostsystemen durchzuführen (via SSH Key auth und sudo).

Nun stehe ich vor einem Problem:

Wie kann ich passwd das Passwort mitgeben um dem jeweiligem vServer ein root Passwort zuzuteilen?

Ich habe es bereits mit einem fluffigen
Code:
vzctl exec 1 echo PASSWORT | passwd --stdin
versucht, dies scheitert jedoch kläglich da der --stdin String anscheinend nicht (mehr) unterstützt wird.

Hat hier jemand eine Idee bezüglich der Lösung des Problems?

Grüße,

virtual2
 
Du kannst das Hash direkt an usermod uebergeben, es muss mit crypt verschluesselt worden sein.
Das ist auch die einzige mir bekannte skriptbare Methode ein Passwort zu setzen ausser du setzt auf 'expect'.
 
Last edited by a moderator:
Du kannst das Salt direkt an usermod uebergeben, es muss mit crypt verschluesselt worden sein.
Das ist auch die einzige mir bekannte skriptbare Methode ein Passwort zu setzen ausser du setzt auf 'expect'.

Okay, das hört sich gut an, vielen Dank für den Hinweis!

Kennst bzw. hast du einen snippet zur Hand? Das wäre jedenfalls super ;)
 
Ich würde es mal so probieren:
Code:
pass=blubb
user=blubb
echo -e "$pass\npass" | passwd $user


oder mit dem Here-DOC:
Code:
passwd USER<<-EOF
blubb
blubb
EOF

Bei Verwendung des Here-Doc kann man keine Variablen setzen, es seiden dein PHP-Code setzt es ein. In beiden Fällen, muss root das Passwort setzen. Ansonsten muss das alte Passwort des Users eingegeben werden. Ich bekomme immer ein bisschen Bauchschmerzen, wenn ich daran denke, dass irgendein PHP-Script mit Root-Berechtigung irgendwas macht. Da kann man seine Zugangsdaten gleich bei pastebin hochladen.
 
Ich würde es mal so probieren:
Code:
pass=blubb
user=blubb
echo -e "$pass\npass" | passwd $user


oder mit dem Here-DOC:
Code:
passwd USER<<-EOF
blubb
blubb
EOF

Bei Verwendung des Here-Doc kann man keine Variablen setzen, es seiden dein PHP-Code setzt es ein. In beiden Fällen, muss root das Passwort setzen. Ansonsten muss das alte Passwort des Users eingegeben werden. Ich bekomme immer ein bisschen Bauchschmerzen, wenn ich daran denke, dass irgendein PHP-Script mit Root-Berechtigung irgendwas macht. Da kann man seine Zugangsdaten gleich bei pastebin hochladen.

EDIT: PHP hat doch auch eine Crypt-Funktion. Wenn man die Möglichkeit hat nativ etwas zu nutzen, dann sollte man das auch tun und nicht andere Sprachen bzw. Scripts als Umweg verwenden.
 
Ich bekomme immer ein bisschen Bauchschmerzen, wenn ich daran denke, dass irgendein PHP-Script mit Root-Berechtigung irgendwas macht.
Was zur Hoelle? PHP ist eine interpreter-basierte Programmiersprache wie Perl, Python und Java auch... Und grosse Teile der Userland-Skripte sind in Perl geschrieben.
Nur weil 99% der Einsatzzwecke von PHP im Web-Bereich sind bedeutet nicht dass es nur das kann - sonst wuerde es nicht Socket-Funktionen, posix-Funktionen und andere low-level Daemon- und Skript-Features mitbringen.

So kann man auch sagen dass man Bauchschmerzen kriegt weil man ein Betriebssystem einsetzt das -laut Aussagen des Hauptautors- nie auf einer anderen Machine als baugleich zu seiner eigenen laufen wird...

So, genug OT.
 
Wie ich oben schon sagte, läuft das Script INTERN!

Das Script wird über den php-cgi interpreter ausgeführt und ist übers www nicht erreichbar, zusätzlich sind zigtausend Sicherheitsfunktionen eingebaut.
 
Last edited by a moderator:
Wie ich oben schon sagte, läuft das Script INTERN!

Das Script wird über den php-cgi interpreter ausgeführt und ist übers www nicht erreichbar, zusätzlich sind zigtausend Sicherheitsfunktionen eingebaut.

//Edit: Script läuft, vServer installieren nun von selber, danke für die Anregungen :)
 
Nur ist PHP dafür bekannt, dass viele Anfängerfehler gemacht werden. Gerade dann, wenn Usereingaben entgegen genommen werden. Schau dich nach Exploits für PHP Scripte mal um. Da es aber intern läuft, hast du ja nichts zu befürchten.

PS: Das es intern läuft, hab ich übersehen. Außerdem weiß ich, dass man php-scripts auch direkt ohne Webserver ausführen kann.
 
Nur ist PHP dafür bekannt, dass viele Anfängerfehler gemacht werden.

Genau, mit PHP kann man relativ einfach das gewünschte Ergebnis erreichen, was nicht bedeutet, daß das Script dann auch sicher ist. Dadurch, daß PHP so einfach zu erlernen ist, gibt es halt diese bedenklichen Scripte. Das bedeutet aber nicht, daß Perl-Scripte grundsätzlich sicherer sind - nur schreiben die meist Leute, die tiefer in der Materie drin stecken und drauf achten, daß bestimmte Sachen beachtet werden müssen (z.B. Prüfung von Usereingaben).
Oder anders ausgedrückt: PHP ist erst mal nicht unsicherer als andere Script-Sprachen auch, sondern die Scripte sind das Problem.
 
Back
Top