首先先安裝 LDAP 並設定好。請參考 PADL Software Pty Ltd 這家公司提供了一套 Open Source 的 Migration Tools,可以在這裡下載。
下載之後請解壓縮:
#tar zxvf MigrationTools.tgz
#cd MigrationTools-46
接著請修改 migrate_common.ph:
-
$DEFAULT_MAIL_DOMAIN
$DEFAULT_MAIL_HOST
LDAP 的 mail 屬性的 Domain ,例如:cs.nctu.edu.tw
$DEFAULT_BASE
LDAP 的 Base DN,例如:dc=cs,dc=nctu,dc=edu,dc=tw。
$EXTENDED_SCHEMA
是否加入 organizationalPerson 與 inetOrgPerson 的資料。
再接下來請修改 migrate_passwd.pl,找到local($user, $pwd, $uid, $gid, $gecos, $homedir, $shell) = split(/:/);這一段,將他改成可以分析 master.passwd (或任何 shadow檔) 的格式。另外要將與 kerberos 有關的程式碼全部註解起來(應該有兩段)。
如果你的 gecos 有 multibyte 的資料,必須先轉成 utf-8 才能開始匯入 LDAP。
如果你有需要讓 Linux 也吃 LDAP 的帳號密碼,必須在加上兩行:
print $HANDLE "objectClass: shadowAccount\n";
print $HANDLE "shadowLastChange: 0\n";
如果你有需要讓 Samba 也吃 LDAP 的帳號密碼,必須在加上兩行:
print $HANDLE "objectClass: sambaSamAccount\n";
print $HANDLE "sambaSID: S-1-5-21-4000614413-3301257388-2182072073-$uid\n";
其中 sambaSID: S-1-5-21-4000614413-3301257388-2182072073 的部份,請參考 Samba with LDAP 這分文件。
接著就可以執行 migrate_all_online.sh,將系統的資料匯入 LDAP。
如果你想要讓 FreeBSD 用 LDAP 的帳號密碼作認證,請看 Enable nss_ldap in FreeBSD。
附註:
這是我另外設定的環境變數,主要是因為 hosts 檔案會有兩個 localhost entry,還有我想順便把使用者的密碼也匯入 LDAP。
/tmp/master.passwd 是除去系統帳號(root, toor, dump…)之後的密碼檔。
# setenv LDAPADD "`which ldapadd` -c"
# setenv ETC_PASSWD /tmp/master.passwd