Migrate From UNIX/NIS Password to LDAP

首先先安裝 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

Leave a Reply

Your email address will not be published. Required fields are marked *