Show Table of Contents
21.5. NIS から IdM への移行
既存の NIS サーバーから Identity Management (IdM) に移行するには、以下のステップを実行します。
21.5.1. IdM でのネットグループエントリーの準備
移行前に、現行の NIS サーバーで管理されている ID を確認します。
- ユーザーエントリー
- NIS が提供しているユーザー情報を使用しているアプリケーションを判定します。
sudoなどのユーティリティーは NIS netgroup を必要としますが、通常の UNIX グループを使用できるものもあります。移行は、以下の手順で実行します。- 対応するユーザーアカウントを IdM に作成します。「ユーザーエントリーの移行」 を参照してください。
- さらに netgroup が必要な場合は、以下を実行します。
- netgroup を追加します。「Netgroup の追加」 を参照してください。
- ユーザーを netgroup に追加します。「Netgroup エントリーの移行」 を参照してください。
- ホストエントリー
- IdM でホストグループを作成すると、対応するシャドウ NIS グループが自動的に作成されます。これらのネットグループは、
ipa netgroup-*コマンドを使って管理します。 - 直接変換の場合
- ユーザーおよびホストエントリーですべて同じ名前を使用する必要がある場合は、IdM 内の同一名を使用してエントリーを作成します。
- netgroup で参照されているユーザーすべてについてエントリーを作成します。
- netgroup で参照されているホストすべてについてエントリーを作成します。
- 元の netgroup と同じ名前の netgroup を作成します。
- ユーザーとホストをこの netgroup の直接のメンバーとして追加します。ユーザーおよびホストがグループまたはホストグループのメンバーである場合は、これらのグループを netgroup に追加します。
21.5.2. Identity Management で NIS リスナーを有効にする
「Identity Management で NIS を有効にする」 を参照してください。
21.5.3. 既存 NIS データのインポートおよびエクスポート
NIS サーバーには、ユーザー、グループ、ホスト、netgroup、および自動マウントマップの情報が含まれます。これらのエントリータイプはいずれも IdM に移行することができます。
以下のセクションでは、
ypcat コマンドを使ってデータをNIS サーバーからエクスポートし、その出力を使用して対応する ipa *-add コマンドでエントリーを IdM にインポートします。
21.5.3.1. ユーザーエントリーの移行
NIS
passwd マップには、UID、プライマリーグループ、GECOS、シェル、およびホームディレクトリーなどのユーザー情報が含まれます。このデータを使用して NIS ユーザーアカウントを IdM に移行します。
- オプションで、弱いパスワードのサポートが必要な場合は、「NIS ユーザー認証用に脆弱なパスワードハッシュを有効にする」 を参照してください。
- 以下のコンテンツで
/root/nis-users.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 passwd > /dev/shm/nis-map.passwd 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.passwd) ; do IFS=' ' username=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key uid=$(echo $line | cut -f3 -d:) gid=$(echo $line | cut -f4 -d:) gecos=$(echo $line | cut -f5 -d:) homedir=$(echo $line | cut -f6 -d:) shell=$(echo $line | cut -f7 -d:) # Now create this entry echo passw0rd1 | ipa user-add $username --first=NIS --last=USER \ --password --gidnumber=$gid --uid=$uid --gecos=$gecos --homedir=$homedir \ --shell=$shell ipa user-show $username done
- IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit admin
- 以下のようにスクリプトを実行します。
[root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-master.example.com
注記
このスクリプトはハードコーディングされた値を性、名に使用し、パスワードをpassw0rd1に設定します。ユーザーは次回ログイン時にこのパスワードを変更する必要があります。
21.5.3.2. グループエントリーの移行
NIS
group マップには、グループ名、GID、グループメンバーなどのグループ情報が含まれます。このデータを使用して NIS グループを IdM に移行します。
- 以下のコンテンツで
/root/nis-groups.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 group > /dev/shm/nis-map.group 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.group); do IFS=' ' groupname=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key gid=$(echo $line | cut -f3 -d:) members=$(echo $line | cut -f4 -d:) # Now create this entry ipa group-add $groupname --desc=NIS_GROUP_$groupname --gid=$gid if [ -n "$members" ]; then ipa group-add-member $groupname --users={$members} fi ipa group-show $groupname done - IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit admin
- 以下のようにスクリプトを実行します。
[root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-master.example.com
21.5.3.3. ホストエントリーの移行
NIS
hosts マップには、ホスト名や IP アドレスなどのホスト情報が含まれます。このデータを使用して NIS ホストエントリーを IdM に移行します。
- 以下のコンテンツで
/root/nis-hosts.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -d $1 -h $2 hosts | egrep -v "localhost|127.0.0.1" > /dev/shm/nis-map.hosts 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.hosts); do IFS=' ' ipaddress=$(echo $line | awk '{print $1}') hostname=$(echo $line | awk '{print $2}') master=$(ipa env xmlrpc_uri | tr -d '[:space:]' | cut -f3 -d: | cut -f3 -d/) domain=$(ipa env domain | tr -d '[:space:]' | cut -f2 -d:) if [ $(echo $hostname | grep "\." |wc -l) -eq 0 ] ; then hostname=$(echo $hostname.$domain) fi zone=$(echo $hostname | cut -f2- -d.) if [ $(ipa dnszone-show $zone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add --name-server=$master --admin-email=root.$master fi ptrzone=$(echo $ipaddress | awk -F. '{print $3 "." $2 "." $1 ".in-addr.arpa."}') if [ $(ipa dnszone-show $ptrzone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add $ptrzone --name-server=$master --admin-email=root.$master fi # Now create this entry ipa host-add $hostname --ip-address=$ipaddress ipa host-show $hostname done - IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit admin
- 以下のようにスクリプトを実行します。
[root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-master.example.com
注記
このスクリプトでは、エイリアスなどの特定なホスト設定は移行されません。
21.5.3.4. Netgroup エントリーの移行
NIS
netgroup マップには、netgroup についての情報が含まれます。このデータを使用して NIS netgroup を IdM に移行します。
- 以下のコンテンツで
/root/nis-netgroups.shスクリプトを作成します。#!/bin/sh # $1 is the NIS domain, $2 is the NIS master server ypcat -k -d $1 -h $2 netgroup > /dev/shm/nis-map.netgroup 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.netgroup); do IFS=' ' netgroupname=$(echo $line | awk '{print $1}') triples=$(echo $line | sed "s/^$netgroupname //") echo "ipa netgroup-add $netgroupname --desc=NIS_NG_$netgroupname" if [ $(echo $line | grep "(," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --hostcat=all" fi if [ $(echo $line | grep ",," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --usercat=all" fi for triple in $triples; do triple=$(echo $triple | sed -e 's/-//g' -e 's/(//' -e 's/)//') if [ $(echo $triple | grep ",.*," | wc -l) -gt 0 ]; then hostname=$(echo $triple | cut -f1 -d,) username=$(echo $triple | cut -f2 -d,) domain=$(echo $triple | cut -f3 -d,) hosts=""; users=""; doms=""; [ -n "$hostname" ] && hosts="--hosts=$hostname" [ -n "$username" ] && users="--users=$username" [ -n "$domain" ] && doms="--nisdomain=$domain" echo "ipa netgroup-add-member $hosts $users $doms" else netgroup=$triple echo "ipa netgroup-add $netgroup --desc=NIS_NG_$netgroup" fi done done - IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit admin
- 以下のようにスクリプトを実行します。
[root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-master.example.com
21.5.3.5. 自動マウントマップの移行
自動マウントマップは、場所 (親エントリー) と関連のキーおよびマップを定義する入れ子および相互関連のエントリーになります。以下の手順で NIS 自動マウントマップを IdM に移行します。
- 以下のコンテンツで
/root/nis-automounts.shスクリプトを作成します。#!/bin/sh # $1 is for the automount entry in ipa ipa automountlocation-add $1 # $2 is the NIS domain, $3 is the NIS master server, $4 is the map name ypcat -k -d $2 -h $3 $4 > /dev/shm/nis-map.$4 2>&1 ipa automountmap-add $1 $4 basedn=$(ipa env basedn | tr -d '[:space:]' | cut -f2 -d:) cat > /tmp/amap.ldif <<EOF dn: nis-domain=$2+nis-map=$4,cn=NIS Server,cn=plugins,cn=config objectClass: extensibleObject nis-domain: $2 nis-map: $4 nis-base: automountmapname=$4,cn=$1,cn=automount,$basedn nis-filter: (objectclass=*) nis-key-format: %{automountKey} nis-value-format: %{automountInformation} EOF ldapadd -x -h $3 -D "cn=Directory Manager" -W -f /tmp/amap.ldif IFS=$'\n' for line in $(cat /dev/shm/nis-map.$4); do IFS=" " key=$(echo "$line" | awk '{print $1}') info=$(echo "$line" | sed -e "s#^$key[ \t]*##") ipa automountkey-add nis $4 --key="$key" --info="$info" doneこのスクリプトでは NIS 自動マウント情報がエクスポートされ、LDAP データ変換形式 (LDIF) の自動マウントの場所と関連マップが生成され、LDIF ファイルが IdM Directory Server にインポートされます。詳細については、「自動マウントマップの NIS クライアントへの公開」 を参照してください。 - IdM
adminユーザーとして認証します。[root@nis-server ~]# kinit admin
- 以下のようにスクリプトを実行します。
[root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain \ nis-master.example.com map_name
21.5.4. NIS ユーザー認証用に脆弱なパスワードハッシュを有効にする
Directory Server コンポーネントのデフォルト設定を使用すると、
userPassword 属性に保存されているパスワードはソルト付き SHA を使ってハッシュ化されます。お使いの NIS クライアントでパスワード用に脆弱なハッシュ化アルゴリズムが必要な場合は、パスワード保存スキームの設定を更新します。
脆弱なパスワードハッシュ化スキームの有効化は、
userPassword 属性に保存されているパスワードにのみ影響があります。Kerberos はこの属性を使用しないので、この設定は Kerberos 暗号化に影響しないことに留意してください。
たとえば、
CRYPT ハッシュ化パスワードを有効にするには、以下を実行します。
[root@server ~]# ldapmodify -D "cn=Directory Manager" -W -p 389 -h ipaserver.example.com -x dn: cn=config changetype: modify replace: passwordStorageScheme passwordStorageScheme: crypt
注記
パスワードハッシュは暗号化解除ができないため、Directory Server は既存のパスワードハッシュを変換しません。サーバーは、ストレージスキームの変更後に設定されたパスワードにのみ、新規パスワードストレージを適用します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.