Hallo Leute! Habe hier folgendes Problem: Ich möchte über PHP den Befehl "useradd" ausführen und mit "-p" auch gleich das Passwort setzen. ich habe versucht das Passwort unter PHP mit s=crypt("passwort"); zu erstellen, was mir aber einen zu kurzen Passwort-String im falschen Format liefert: es beginnt nicht mit "$1$" wie alle anderen Passwörter in diesem System (SuSE 9.3, nachgesehen in /etc/shadow). Auf auf einem anderen System (SuSE 9.0) sind diese so generierten Passwort-Strings nicht für "useradd" oder "usermod" zu gebrauchen. Was mache ich falsch? Ist PHP von Haus aus nicht für MD5 kompiliert (habe auch schon einen 9-Zeichen Salt-String als 2. Parameter probiert)? Mache ich einen anderen Denkfehler? Danke im voraus für Eure Hilfe, Günther P.S.: auch mit "passwd" komme ich nicht recht weiter, weil es eine Interaktion mit der Tastatur benötigt und die Passwörter anscheinend nicht gerne über "stdin" erhält (Fehlermeldung: "Password change aborted", "passwd: Authentication token manipulation error").
Hi, On Tue, 12 Jul 2005, Günther Zisham wrote:
Habe hier folgendes Problem: Ich möchte über PHP den Befehl "useradd" ausführen und mit "-p" auch gleich das Passwort setzen.
das möchtest du nicht[tm]
ich habe versucht das Passwort unter PHP mit s=crypt("passwort"); zu erstellen, was mir aber einen zu kurzen Passwort-String im falschen Format liefert: es beginnt nicht mit "$1$" wie alle anderen Passwörter in diesem System (SuSE 9.3, nachgesehen in /etc/shadow).
d.h. du bekommst ein DES Passwort und kein MD5 Passwort.
Auf auf einem anderen System (SuSE 9.0) sind diese so generierten Passwort-Strings nicht für "useradd" oder "usermod" zu gebrauchen.
ja, da DES und nicht MD5
Was mache ich falsch?
s.o.
Ist PHP von Haus aus nicht für MD5 kompiliert (habe auch schon einen 9-Zeichen Salt-String als 2. Parameter probiert)?
Das mit dem Salt ist ein guter Ansatz. Hast du den auch richtig aufgebaut? Ich kenne mich mit PHP nicht wirklich aus. In C solltest du mit einem Salt wie dem folgenden $1$xxxxxxxx$ Erfolg haben. Wobei xxxx natürlich durch etwas sinnvolleres zu ersetzen ist. Vielleicht passt das auch auf PHP.
Mache ich einen anderen Denkfehler?
wenn s=crypt("passwort","$1$xxxxxxxx$"); auch nichts bringt kann die php Funktion eben nur DES --> andere Funktion suchen.
P.S.: auch mit "passwd" komme ich nicht recht weiter, weil es eine Interaktion mit der Tastatur benötigt und die Passwörter anscheinend nicht gerne über "stdin" erhält (Fehlermeldung: "Password change aborted", "passwd: Authentication token manipulation error").
ich hoffe stark, dass du das Ergebnis deiner Programmierung nur in einem vom WWW getrennten Intranet einsetzt. *grusel* Greetings Daniel -- Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob Windows installiert ist. Sehen Sie einfach nach, ob die Aufschrift auf der Reset-Taste noch lesbar ist.
Daniel Lord wrote:
Ist PHP von Haus aus nicht für MD5 kompiliert (habe auch schon einen 9-Zeichen Salt-String als 2. Parameter probiert)?
Das mit dem Salt ist ein guter Ansatz. Hast du den auch richtig aufgebaut? Ich kenne mich mit PHP nicht wirklich aus. In C solltest du mit einem Salt wie dem folgenden $1$xxxxxxxx$ Erfolg haben. Wobei xxxx natürlich durch etwas sinnvolleres zu ersetzen ist. Vielleicht passt das auch auf PHP.
http://de3.php.net/manual/de/function.crypt.php Das funktioniert in der Tat so. Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply (@) japantest (.) homelinux (.) com
Hallo Sandy! Sandy Drobic schrieb:
http://de3.php.net/manual/de/function.crypt.php
Das funktioniert in der Tat so.
Danke. Das Beispiel kannte ich zwar schon, jetzt habe ich es mir aber nochmal genauer angesehen und festgestellt, dass in diesem Beispiel die Funktion "makesalt" nie mit Parametern aufgerufen wird und deshalb immer mit 2 Zeichen gecrypted wird. Ruft man's mit dem Parameter "8" auf, dann klappt es. Danke, Günther
Daniel Lord schrieb:
On Tue, 12 Jul 2005, Günther Zisham wrote:
Habe hier folgendes Problem: Ich möchte über PHP den Befehl "useradd" ausführen und mit "-p" auch gleich das Passwort setzen.
das möchtest du nicht[tm]
wieso nicht? Ob ich die Accounts entweder mit Webmin über's Web oder mit etwas selbstgemachten ändere, bleibt sich doch egal, oder nicht? Klar ist, dass dies nur über eine https-Verbindung und mit Username-/Passwort-Sicherung (.htaccess) passieren darf.
ich habe versucht das Passwort unter PHP mit s=crypt("passwort"); zu erstellen, was mir aber einen zu kurzen Passwort-String im falschen Format liefert: es beginnt nicht mit "$1$" wie alle anderen Passwörter in diesem System (SuSE 9.3, nachgesehen in /etc/shadow).
d.h. du bekommst ein DES Passwort und kein MD5 Passwort.
ok, inzwischen klappte es, dank des Hinweises von Sandy.
ich hoffe stark, dass du das Ergebnis deiner Programmierung nur in einem vom WWW getrennten Intranet einsetzt. *grusel*
s. o. Grüße, Günther
participants (3)
-
Daniel Lord
-
Günther Zisham
-
Sandy Drobic