Userpasswort ändern

Alles was in keine andere Systemkategorie passt
max1988
Posts: 7
Joined: 2012-09-09 09:25

Userpasswort ändern

Post by max1988 » 2012-09-18 21:39

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"?

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Userpasswort ändern

Post by daemotron » 2012-09-19 11:55

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).
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

max1988
Posts: 7
Joined: 2012-09-09 09:25

Re: Userpasswort ändern

Post by max1988 » 2012-09-19 14:03

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!
Last edited by max1988 on 2012-09-19 14:05, edited 1 time in total.

max1988
Posts: 7
Joined: 2012-09-09 09:25

Re: Userpasswort ändern

Post by max1988 » 2012-09-19 14:04

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
Last edited by max1988 on 2012-09-19 14:05, edited 1 time in total.

ddm3ve
Moderator
Moderator
Posts: 1142
Joined: 2011-07-04 10:56

Re: Userpasswort ändern

Post by ddm3ve » 2012-09-19 14:58

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.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

max1988
Posts: 7
Joined: 2012-09-09 09:25

Re: Userpasswort ändern

Post by max1988 » 2012-09-19 19:13

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

ddm3ve
Moderator
Moderator
Posts: 1142
Joined: 2011-07-04 10:56

Re: Userpasswort ändern

Post by ddm3ve » 2012-09-20 00:45

Code: Select all

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


Sollte selbst erklärend sein.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.