Page 1 of 1

Userpasswort ändern

Posted: 2012-09-18 21:39
by max1988
Hallo Ihr,

ich habe eine Frage! - Wird für die meinsten kein Problem sein.

Mache gerade ein Praktikum und soll eine Erweiterung für ein Webinterface schreiben.
Und zwar soll ein User auf Debian angelegt werden der sich einloggen kann per SSH.

Folgendes Sript habe ich gefunden, doch leider ist der Login gesperrt!

Code: Select all

ADD=/usr/sbin/adduser
PWD=/usr/bin/passwd

    $ADD --disabled-password --disabled-login --gecos $1 $1

    mkdir /home/$1
    chmod 0755 /home/$1
    echo "Username $1 erstellt!"

# //* eof
Wenn ich den Teil "--disabled-password --disabled-login" weglasse ist ja der Login möglich, doch vorher muss ja ein Passwort gesetzt werden!

Wenn ich zum Beispiel den User "test" habe kann ich ja mit dem Befehl "passwd test" das Passwort ändern. - Doch leider muss ich es dann zwei mal eingeben und das geht ja bei einem PHP-Aufruf nicht.

Gibt es denn einen einzeiligen Befehl zum Beispiel "passwd test -p Test123"?

Re: Userpasswort ändern

Posted: 2012-09-19 11:55
by daemotron
max1988 wrote:Folgendes Sript habe ich gefunden, doch leider ist der Login gesperrt!
Du möchtest Dir vielleicht einmal den Befehl useradd ansehen - adduser ist bloß ein Wrapper dafür. useradd bietet mit -p schon eine mit äußerster Vorsicht zu genießende Möglichkeit, automatisch ein Passwort zu setzen.
max1988 wrote:Wenn ich den Teil "--disabled-password --disabled-login" weglasse ist ja der Login möglich, doch vorher muss ja ein Passwort gesetzt werden!
[...]
Gibt es denn einen einzeiligen Befehl zum Beispiel "passwd test -p Test123"?
Eine Möglichkeit wäre http://linux.die.net/man/1/passwd, das mit --stdin dazu gebracht werden kann, das Passwort aus einer Pipe zu lesen:

Code: Select all

echo "geheimes password" | passwd --stdin <username>
Eine weitere Alternative wäre chpasswd.

Generelle Anmerkung: System-User direkt über ein PHP-Skript anzulegen ist keine gute Idee. Dazu muss das Skript nämlich mit root-Rechten laufen, was man aus Prinzip schon mal nicht möchte. Ist das Skript von außen erreichbar, lässt es sich eventuell mißbrauchen, um einen Systemzugang zu erschleichen. Man kann (à la Confixx) den Prozess der Dateneingabe von der tatsächlichen Erstellung der User entkoppeln (Web-Skript schreibt in Datenbank, Cron-Job liest Datenbank aus und arbeitet Änderungen ab) - 100% Sicherheit bietet das aber auch nicht. Ein etwas besseres Sicherheitsniveau kann man erreichen, wenn Credentials in einer vom System entkoppelten Datenbank mit einem darauf ausgelegten Dienst verwaltet werden, wo es die passenden Protokolle zu gibt (z. B. LDAP + Kerberos).

Re: Userpasswort ändern

Posted: 2012-09-19 14:03
by max1988
daemotron wrote:Generelle Anmerkung: System-User direkt über ein PHP-Skript anzulegen ist keine gute Idee. Dazu muss das Skript nämlich mit root-Rechten laufen, was man aus Prinzip schon mal nicht möchte. Ist das Skript von außen erreichbar, lässt es sich eventuell mißbrauchen, um einen Systemzugang zu erschleichen. Man kann (à la Confixx) den Prozess der Dateneingabe von der tatsächlichen Erstellung der User entkoppeln (Web-Skript schreibt in Datenbank, Cron-Job liest Datenbank aus und arbeitet Änderungen ab) - 100% Sicherheit bietet das aber auch nicht. Ein etwas besseres Sicherheitsniveau kann man erreichen, wenn Credentials in einer vom System entkoppelten Datenbank mit einem darauf ausgelegten Dienst verwaltet werden, wo es die passenden Protokolle zu gibt (z. B. LDAP + Kerberos).
Es wird über die DatenBank des jeweiligen Server gemacht!

Re: Userpasswort ändern

Posted: 2012-09-19 14:04
by max1988
Wenn ich den Befehl wie folgt eingebe:
adduser --no-create-home --gecos stream8000 --gid 1000 --password *gehem* stream8000

Bekomme ich folgende Meldung
Unknown option: password

Re: Userpasswort ändern

Posted: 2012-09-19 14:58
by ddm3ve
Ich kann mich wage dran erinnern, dass ich an einem solchen Problem den Weg gewählt habe:

Benutzer ohne Password anlegen und anschlissen wie folgt das Passwort ändern.

Code: Select all

echo $password| passwd $username
bzw. kann auch sein, dass es usermod war, dem ich per pipe das Passwort übergeben habe.

Re: Userpasswort ändern

Posted: 2012-09-19 19:13
by max1988
Und wie schreibe ich dann die Datei?

Bis jetzt habe ich:

Code: Select all

ADD=/usr/sbin/adduser

	echo "Übermittelte Werte"
	echo "URL-Code: $1"
	echo "Kunde: $2"
	echo "User: $3"

	$ADD --disabled-password --no-create-home --gecos $3 --gid 1000 $3

	mkdir /home/$1
	chmod 0755 /home/$1

	mkdir /home/$1/$2
	chmod 0755 /home/$1/$2

	mkdir /home/$1/$2/$3
	chmod 0755 /home/$1/$2/$3
	chown -R $3:mywiuser /home/$1/$2/$3

# //* eof

Re: Userpasswort ändern

Posted: 2012-09-20 00:45
by ddm3ve

Code: Select all

## Benutzer wird upgedatet, nur das Passwort neu gesetzt.
echo "${VUSERNAME}:${VPASSWORD}" | /usr/sbin/chpasswd
}
Sollte selbst erklärend sein.