使用 LDAP 的原因之一就是用來管理 Linux 帳號,本文將介紹如何將 Linux 原有的帳號移轉到 LDAP。
Migrationtools
這是由 PDAL Software Pty Ltd 所開發出來的 LDAP 工具,透過這個工具就能將本機帳號移轉到 LDAP 裡。如果是使用 RedHat 或是 CentOS 的話,安裝 openldap-servers 時就會將這些工具安裝在 /usr/share/openldap/migration 底下,下面列出所有檔案與功能:
migrate_aliases.pl
轉換 /etc/aliases
migrate_all_netinfo_offline.sh
離線轉換並匯入 netinfo 資料
migrate_all_netinfo_online.sh
線上轉換並匯入 netinfo 資料
migrate_all_nis_offline.sh
離線轉換並匯入 nis 資料
migrate_all_nis_online.sh
線上轉換並匯入 nis 資料
migrate_all_nisplus_offline.sh
離線轉換並匯入 nisplus 資料
migrate_all_nisplus_online.sh
線上轉換並匯入 nisplus 資料
migrate_all_offline.sh
離線轉換並匯入 本機設定 資料
migrate_all_online.sh
線上轉換並匯入 本機設定 資料
migrate_automount.pl
轉換 automount 的相關設定
migrate_base.pl
用來產生 OU
migrate_common.ph
migrate 的設定檔
migrate_fstab.pl
轉換 /etc/fstab
migrate_group.pl
轉換 /etc/group
migrate_hosts.pl
轉換 /etc/hosts
migrate_netgroup.pl
netgroup 的設定檔
migrate_networks.pl
轉換 /etc/networks
migrate_passwd.pl
轉換 /etc/passwd
migrate_profile.pl
用來產生 LDAPv3 的設定項目
migrate_protocols.pl
轉換 /etc/protocols
migrate_rpc.pl
轉換 /etc/rpc
migrate_services.pl
轉換 /etc/services
migrate_slapd_conf.pl
用來產生 openldap 設定檔
migrate_all_online.sh
移轉的執行檔
設定 Migrationtools
Migrationtools 的設定檔是 migrate_common.ph 這個檔案,在移轉之前必須作ㄧ些設定才行。找到底下這兩個設定,依實際狀況修改:
$DEFAULT_MAIL_DOMAIN = "xiang.com";
用來定義 email 系統使用的網域名稱
$DEFAULT_BASE = "dc=xiang,dc=com";
這裡將只示範 Linux 帳號的移轉,而預設 Migrationtools 會將上述項目都移轉,因此必須做些修改讓 Migrationtools 只轉號 Linux 帳號。修改的方式很簡單,在 migrate_all_online.sh 裡找到下面這些項目:
#echo "Migrating aliases..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_aliases.pl $ETC_ALIASES >> $DB
#echo "Migrating fstab..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_fstab.pl $ETC_FSTAB >> $DB
echo "Migrating groups..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_group.pl $ETC_GROUP >> $DB
echo "Migrating hosts..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_hosts.pl $ETC_HOSTS >> $DB
echo "Migrating networks..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_networks.pl $ETC_NETWORKS >> $DB
echo "Migrating users..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_passwd.pl $ETC_PASSWD >> $DB
echo "Migrating protocols..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_protocols.pl $ETC_PROTOCOLS >> $DB
echo "Migrating rpcs..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_rpc.pl $ETC_RPC >> $DB
echo "Migrating services..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_services.pl $ETC_SERVICES >> $DB
echo "Migrating netgroups..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup.pl $ETC_NETGROUP >> $DB
echo "Migrating netgroups (by user)..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup_byuser.pl $ETC_NETGROUP >> $DB
echo "Migrating netgroups (by host)..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup_byhost.pl $ETC_NETGROUP >> $DB
因為只要轉換帳號,所以只要留下 group 與 passwd 有關的項目就好其他全部註解掉,修改過得應該會像這樣:
#echo "Migrating aliases..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_aliases.pl $ETC_ALIASES >> $DB
#echo "Migrating fstab..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_fstab.pl $ETC_FSTAB >> $DB
echo "Migrating groups..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_group.pl $ETC_GROUP >> $DB
#echo "Migrating hosts..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_hosts.pl $ETC_HOSTS >> $DB
#echo "Migrating networks..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_networks.pl $ETC_NETWORKS >> $DB
echo "Migrating users..."
$PERL -I${INSTDIR} ${INSTDIR}migrate_passwd.pl $ETC_PASSWD >> $DB
#echo "Migrating protocols..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_protocols.pl $ETC_PROTOCOLS >> $DB
#echo "Migrating rpcs..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_rpc.pl $ETC_RPC >> $DB
#echo "Migrating services..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_services.pl $ETC_SERVICES >> $DB
#echo "Migrating netgroups..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup.pl $ETC_NETGROUP >> $DB
#echo "Migrating netgroups (by user)..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup_byuser.pl $ETC_NETGROUP >> $DB
#echo "Migrating netgroups (by host)..."
#$PERL -I${INSTDIR} ${INSTDIR}migrate_netgroup_byhost.pl $ETC_NETGROUP >> $DB
執行移轉
執行 migrate_all_online.sh 這個 script 就會進入移轉程序,完整路徑為 /usr/share/openldap/migration/migrate_all_online.sh:
[root@Centos migration]# ./migrate_all_online.sh
執行 shell script
Enter the X.500 naming context you wish to import into: [dc=xiang,dc=com]
你的 LDAP Base DN 為何? [] 內為預設值,如果相符就不需要輸入
Enter the hostname of your LDAP server [ldap]: localhost
LDAP 主機名稱或 IP
Enter the manager DN: [cn=manager,dc=xiang,dc=com]:
管理者的 DN
Enter the credentials to bind with:
輸入密碼
Do you wish to generate a DUAConfigProfile [yes|no]? no
是否要建置 DUAConfigProfile
開始移轉會看到如下的資訊:
adding new entry "uid=nikon,ou=People,dc=xiang,dc=com"
adding new entry "uid=xiangyang,ou=People,dc=xiang,dc=com"
adding new entry "uid=david,ou=People,dc=xiang,dc=com"
adding new entry "uid=mary,ou=People,dc=xiang,dc=com"
adding new entry "uid=john,ou=People,dc=xiang,dc=com"
adding new entry "uid=lili,ou=People,dc=xiang,dc=com"
adding new entry "uid=lulu,ou=People,dc=xiang,dc=com"
adding new entry "uid=kyo,ou=People,dc=xiang,dc=com"
adding new entry "uid=abel,ou=People,dc=xiang,dc=com"
adding new entry "uid=alerk,ou=People,dc=xiang,dc=com"
adding new entry "uid=derek,ou=People,dc=xiang,dc=com"
adding new entry "uid=eric,ou=People,dc=xiang,dc=com"
這樣便完成移轉。
- Oct 10 Sat 2009 23:53
[IT][LDAP] LDAP 整合 Linux 帳號
全站熱搜
留言列表