Копируем в текущую директорию passwd и shadow файлы из Linux. Запускаем:
./mkpasswd.pl > new.master.passwdОткрываем файл new.master.passwd в текстовом редакторе и заменяем строки с описанием системных аккаунтов из /etc/master.passwd
Копируем new.master.passwd в /etc. Делаем бэкап /etc/master.passwd.
Перестраиваем хэши через запуск команды
pwd_mkdb -p /etc/new.master.passwd
Если всплыли ошибки повторяем запуск pwd_mkdb на бэкап файле, для отката изменений.
Скрипт mkpasswd.pl
#!/usr/local/bin/perl
# Listing 21.1. Sample Perl Script to Convert
# a Linux User Database for Use in FreeBSD
# Set the following to the location of bash on your FreeBSD
#machine (if installed),
# or to /bin/csh to switch /bin/bash users to csh
$newshell = "/bin/sh";
open ( PASS, '< ./passwd' );
@passwd = <PASS>; # Read in the passwd file
close PASS;
open ( SHAD, '< ./shadow' );
@shadow = <SHAD>; # Read in the shadow file
close SHAD;
foreach $user (@shadow) {
@sdata = split(/:/,$user);
$passhash{$sdata[0]} = $sdata[1]; # Make a lookup table based on usernames
}
foreach $user (@passwd) {
@pdata = split(/:/,$user);
$pdata[6] = $newshell."n" if ($pdata[6] eq "/bin/bashn");
$pdata[1] = $passhash{$pdata[0]}; # Replace the "x" with the password hash
splice (@pdata,4,0,undef,"0","0"); # Splice in extra blank fields
foreach (@pdata) { # Print the combined output line
print "$_";
print ":" unless ($_ =~ /n/);
}
}
откуда взял скрипт непомню :(
URL:
Обсуждается: http://www.opennet.dev/tips/info/1459.shtml