Przenosiny passwd z Linuksa na FreeBSD

Kilka kroków mających pomóc w przenosinach kont użytkowników z Linuksa na FreeBSD. Przetestowane dwa razy ze Slackware na FreeBSD (6.2 i 6.3), z PC na Alphaserver.
Krok 1) Na Linuksie należy wyeksportować himediry po NFS, czyli dopisać do /etc/exports następującą linijkę:

/home   (ro,no_root_squash)

a następnie podmountować katalog na maszynie z FreeBSD.
Krok 2) Przekopiować homediry użytkowników:

tar cCf /path/to/nfs/mount - . | tar xvpCf /path/to/new/home/dirs -

można też uzyć cpio albo po prostu cp -rp. Jak kto woli i ma ochotę. Jest jeszcze pax i afio – napisałem już o tym dwa lata temu.
Krok 3) Zainstalować na maszynie z FreeBSD pakiet „John The Ripper” (jest w ports).
Skopiować z maszyny linuksowej pliki passwd oraz shadow. Następnie połączyć informacje z nich ze sobą w nowy pliku za pomocą komendy unshadow z „rippera”:

unshadow ./linux_passwd ./linux_shadow > linux_passwd

Krok 4) Skonwertować dane z linux_passwd w taki sposób by miały strukturę pliku /etc/master.passwd na FreeBSD, a wynik konwersji zapisać w nowym pliku:

# cat linux_passwd | awk -F : '{printf("%s:%s:%s:%s::0:0:%s:%s:%s\n", \
$1,$2,$3,$4,$5,$6,$7); }' > new_passwd

Krok 5) Wyedytować plik new_passwd usuwając z niego wszystkie konta systemowe i konta użytkowników już znajdujących się na maszynie z FreeBSD. Przy okazji należy sprawdzić ścieżki do katalogów domowych, shelle oraz grupy użytkowników.
Krok 6) Dopisać zawartość new_passwd do bazy użytkowników na FreeBSD:

# cat new_passwd >> /etc/master.passwd

Krok 7) Wygenerować bazę danych użytkowników (pliki: /etc/spwd.db oraz /etc/pwd.db)
i plik /etc/passwd:

# pwd_mkdb -p /etc/master.passwd

Zrobione!