Benutzer Passwort über PHP Webinterface ändern

Streuner

New Member
Aloha,

ich bastle mit gerade ein kleines Webinterface für meinen Server.
Vor ein paar Stunden bin ich bei der Funktion "FTP Benutzer anlegen und ändern" angekommen. Mein Problem ist nun: Wie kann ich einen Benutzer im System mit einem vorgegeben Passwort anlegen und später das Passwort wieder ändern ?

Meine Versuche:

1.
Passwort ändern
system('passwd demo');
system('demo');
system('demo');
<Geht nicht>

2.
Passwort ändern
passthru('passwd demo');
passthru('demo');
passthru('demo');
<Geht nicht>

3.
Passwort ändern
$stream = ssh2_exec($connection, "passwd demo");
$stream = ssh2_exec($connection, "demo");
$stream = ssh2_exec($connection, "demo");
<Geht nicht>

1.
Benutzer mit Passwort erstellen
$stream = ssh2_exec($connection, "useradd ".$username." -d /var/www/users/".$domain."/" -s /bin/false -p ".$passwort);
<Geht nicht>

Was mache ich falsch ?
Irgendwie muss es ja gehen, da Webmin diese Funktion ja auch hat :)

System:
Linux Debian Lenny
PHP 5
 
Nur der Benutzer selbst oder root kann das Passwort eines Benutzers ändern. Du müsstest z. B. expect benutzen, wenn ein Programm so wie passwd interaktiv auf eine Eingabe wartet.

Lies zudem die Dokumentation zu den Funktionen system() und passthru() und überlege dir, weshalb das so, wie du es in Versuchen 1-3 gemacht hast, nicht funktionieren kann.

Du könntest einfach folgendes ausführen:
Code:
sudo /usr/sbin/usermod -p $passwort_hash $user
wobei $passwort_hash das durch crypt(3) gejagte Passwort des Benutzers ist und sudo natürlich korrekt konfiguriert sein muss, so dass es nicht nach einem Passwort fragt.
 
Alternativ:
statt über den Sysaccount die Authentifizierung der FTP Benutzer über Datenbank oder LDAP realisieren.

-> Im Falle eines Falles lässt sich damit weniger Schabernack betreiben, als wenn PHP mit systemcalls durchgreifen kann.
 
@Roger Wilco: Vielen Dank, "sudo /usr/sbin/usermod -p $passwort_hash $user" funktioniert wunderbar.

@matzewe01: Ist das ein großer aufwand vsFTPd mit MySQL zu verbinden ?
 
Back
Top