FAQ:Arktur33/passwoerter
Einrichten von Klassen mit vorgegebenen Passwörtern
übernommen von www.arktur.th.schule.de/faq/2-4.htm
Diese Anleitung stammt aus einer Mail von Hans-Dietrich Kirmse
#!/usr/bin/perl ################################################################## # # Aufruf mit "passtool DATEI" # DATEI hat folgende Form: # username1:passwort1 # username2:passwort2 # # u.s.w. # ################################################################## use Fcntl ':flock'; # Konstanten fuer file-locking sub print_help { print "Benutzung: passtool [OPTION]\n". " oder: passtool [DATEI]\n". "Aendert die Passwoerter der in der DATEI angegebenen Benutzer\n\n". " -h, --help diese Hilfe\n\n". "Format der DATEI:\n". "benutzername1:passwort1\n". "benutzername2:passwort2\n\n". "Fehlermeldungen an Ronny Buchmann \n"; exit 0; } # print_help foreach $_ (@ARGV) { if (/^(-h|--help)$/i) { &print_help; } elsif (/^-/){ print "passtool: unbekannte Option\n\n". "Versuchen Sie \"passtool --help\" fuer weitere Informationen\n"; exit 1; } elsif (! (-f $_)) { print "passtool: Datei $_ existiert nicht\n\n". "Versuchen Sie \"passtool --help\" fuer weitere Informationen\n"; exit 1; } } open(FILE,$ARGV[0]) || die "passtool: kann nicht oeffnen: $ARGV[0]\n"; open(SHDW, "/etc/shadow") || die "passtool: kann /etc/shadow nicht oeffnen\n"; @content = ; # Inhalt zeilenweise in array close(SHDW); while() { ($user,$pass) = split(/:/); $pass =~ s/\r\n//; # Zeilenumbruch loeschen $user{$user} = crypt($pass, 'AA'); # passwort verschluesseln und in hash } close(FILE); system("cp -p /etc/shadow /etc/shadow-"); # sicherungskopie open(SHDW, ">/etc/shadow"); flock(SHDW,LOCK_EX); # shadow sperren foreach (@content) { # shadow zeilenweise abarbeiten @shdw = split(/:/); # zeile auftrennen in array if ( !defined( $user{$shdw[0]} ) ) { # user in hash nicht vorhanden ? print SHDW $_; # wenn ja, unveraendert schreiben } else { $shdw[1] = $user{ $shdw[0] }; # passwort mit dem aus hash ersetzen print SHDW join(':', @shdw); # array wieder zusammensetzen zu string # und in shadow schreiben print "passtool: Passwort fuer <$shdw[0]> geaendert\n"; } } flock(SHDW,LOCK_UN); # sperre aufheben close(SHDW);
Eintrag stammt vom 16. April 2001