Przenosiny passwd z Linuksa na FreeBSD

Posted on Mon 18 February 2008 in Alphaserver 1200 z FreeBSD, Tips4Unices

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!