Userpasswort festlegen/ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
raphi
Beiträge: 62
Registriert: 03.12.2012 13:51:12

Userpasswort festlegen/ändern

Beitrag von raphi » 23.07.2013 18:20:05

Hallo ich habe folgende Frage,

ich will per Srcipt einen User anlegen und den ein Passwort zuweisen:

Code: Alles auswählen

useradd -d $home -s /bin/false $name

Code: Alles auswählen

echo $name:daspasswort | chpasswd
Das geht aber nicht. Wie könnte ich es dennoch machen?

mfg

Raphi

DeletedUserReAsG

Re: Userpasswort festlegen/ändern

Beitrag von DeletedUserReAsG » 23.07.2013 18:31:08

Wenn sich nichts anderes findet: mit Debianexpect wäre das realisierbar.

cu,
niemand

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Userpasswort festlegen/ändern

Beitrag von cosmac » 23.07.2013 19:20:45

hi,

"useradd" kennt doch die Option "-p". Da die das fertig verschlüsselte Passwort braucht, muss noch ein "mkpasswd" davor, also so:

Code: Alles auswählen

useradd -d $home -s /bin/false -p $(echo daspasswort | mkpasswd --stdin --method=sha-512) $name
wobei "sha-512" z.Zt. wohl der Default unter Debian ist.

Aber irgendwie ist das unbrauchbar, weil das "daspasswort" im Klartext im Script und (kurzzeitig) unter /proc/x/cmdline auftaucht.

Den Unterschied zwischen dem von Debian empfohlenen "adduser" und deinem "useradd" hast du berücksichtigt?
Beware of programmers who carry screwdrivers.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Userpasswort festlegen/ändern

Beitrag von Cae » 23.07.2013 21:40:20

cosmac hat geschrieben:Aber irgendwie ist das unbrauchbar, weil das "daspasswort" im Klartext im Script und (kurzzeitig) unter /proc/x/cmdline auftaucht.
Mit

Code: Alles auswählen

$ cat <<EOF | mkpasswd...
daspasswort
EOF
koennte man die erste Haelfte davon sicher bekommen, das Klartext-Passwort geht dann "nur" durch Pipe. Ich bin mir nicht ganz sicher, ob man den zweiten Teil durch Bashismen wie <() erschlagen kann, das scheint gut auszusehen:

Code: Alles auswählen

$ set -x
$ cat <(cat <<EOF | tr x X
> xyz
> EOF
> )
+ cat /dev/fd/63
++ cat
++ tr x X
Xyz
$ 
Das erste cat waere useradd, das zweite wirklich cat und tr x X staende als Stellvertreter fuer mkpasswd.

Irgendwie unschoen, aber so haette man keinen Klartext auf der Kommandozeile, sondern nur in Pipes. (Ich verlasse mich an der Stelle auf set -x, weil ich keine Idee hab', wie man das Timing richtig hinbekommt, um in /proc/ die cmdlines abzugreifen. while :; do ...; done?)

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

raphi
Beiträge: 62
Registriert: 03.12.2012 13:51:12

Re: Userpasswort festlegen/ändern

Beitrag von raphi » 26.07.2013 23:37:30

cosmac hat geschrieben:hi,

"useradd" kennt doch die Option "-p". Da die das fertig verschlüsselte Passwort braucht, muss noch ein "mkpasswd" davor, also so:

Code: Alles auswählen

useradd -d $home -s /bin/false -p $(echo daspasswort | mkpasswd --stdin --method=sha-512) $name
wobei "sha-512" z.Zt. wohl der Default unter Debian ist.

Aber irgendwie ist das unbrauchbar, weil das "daspasswort" im Klartext im Script und (kurzzeitig) unter /proc/x/cmdline auftaucht.

Den Unterschied zwischen dem von Debian empfohlenen "adduser" und deinem "useradd" hast du berücksichtigt?
Super danke funktoniert problemlos

Danke ;)

Antworten