Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl und passwd



Omen
10-02-2002, 22:59
Hy,
ich habe hier ein Script geschrieben, das ein password für ein user anlegt.
Aber wo ist der fehler.

#!/usr/bin/perl
$passwd="Passwd";
$user="test12";
$password="t12xYZ";

open(PASSADD, "|$passwd $user")||die $_;
print PASSADD $password;
print PASSADD $password;
close(PASSADD);

Wenn ich dies nun in der Konsole als root ausführe kommt diese meldung:

Server1:/ # perl addpasswd.cgi
New password: Password will be truncated to 8 characters
Re-enter new Password:
passwd: Conversation error
Server1:/ #

Was kann das sein!

lolli
11-02-2002, 11:12
versuche den befehl usermod USERNAME -p VERSCHL_PWD

#!/usr/bin/perl
$passwd="usermod";
$user="test12";
$password=crypt("t12xYZ","SL"); # SL ist eine beliebiger Zeichenkette (2 Buchstaben lang)

open(PASSADD, "|$passwd $user -p $pwd")||die $!;
close(PASSADD);

oliver

sk
11-02-2002, 11:20
Hi!

Meines Wissens hast du so keine Chance, da "passwd" über STDIN nichts
entgegen nimmt.

Servus,
Stefan

fork
11-02-2002, 11:43
Das verschlüsselte Passwort(->Lollis Beitrag) sollte direkt in /etc/passwd oder /etc/shadow eingetragen werden.

Gruß
fork

lolli
11-02-2002, 11:47
@fork:
geht auch, amcht aber VIEL MEHR arbeiot als mit usermod USER -p xxz


oliver

fork
11-02-2002, 11:59
Stimmt, das mit mit usermod hatte ich jetzt gar nicht so realisiert.

Gruß
fork

Badgott
11-02-2002, 12:00
Hi es gibt noch eine andere möglichkeit wo du dem passwd dann nacheinander name und pw mitgibst so als würdest du es eingeben die genaue syntax weiß ich nicht mehr ich schaue mal nach und poste sie dann hier :-)


Gruß Badgott

next
11-02-2002, 12:28
hmm kannst es ja mal mit useradd probieren, müsste eigentlich funktionieren

Omen
11-02-2002, 14:18
Hy, das mit usermod geht nicht.
Ich bekomme als Antword:
usermod: user SLovML73i9.XY does not exist

mmmmhhh.
Der user war test12 und das Password war t12xYZ.
Was ist das für ein ergebnis.
Schaat mal in das Skript.

#!/usr/bin/perl
$passwd="usermod";
$user="test12";
$pwd=crypt("$user","SL"); # SL ist eine beliebiger Zeichenkette (2 Buchstaben lang)

open(PASSADD, "|$passwd $user -p $pwd")||die $!;
close(PASSADD);

Und was bedeuted das SL genau.

fork
11-02-2002, 22:48
Der Fehler laesst nur eines vermuten.

Schau dir mal die man-page von usermod an, dann duerftest Du's sehen.

Gruß
Tobias

lolli
12-02-2002, 07:01
versuch usermod -p dfssdfsdjfhsd USERNAME

Omen
12-02-2002, 11:01
Hy,
so geht es, aber er trägt in der shadow das passwort
wie
Deluxe
oder so und nicht Codiert wie
LgSfS6iwqAcZa.
Wenn ich in der konsole dies eingebe
usermod -p deluxe test12

lolli
12-02-2002, 11:36
du musst dass passwort vorher verschlüsseln!!!!!

Omen
12-02-2002, 17:19
Wie?????????

Cojun
13-02-2002, 20:40
Im Grunde isses ganz einfach:

Ein Perl-Skript schreibt ein File mit dem USERADD-Befehl.
Ein Cronscript führt ein weiteres Script aus welches das File mit dem USERADD-Befehl ausführt. Ich hab sowas mal geschrieben und es funktioniert. Wir verwalten mit sowas einen Mailserver mit zig Domains so, dass es für jede Domain einen Administrativen Benutzer gibt der für seine eigene Domain auch richtige Systemuser anlegen kann.

Also gehts.

Gruezeli

Cojun