検索

21.5. NIS から IdM への移行

download PDF
既存の NIS サーバーから Identity Management(IdM) に移行するには、以下の手順が必要です。

21.5.1. IdM での netgroup エントリーの準備

移行前に、現在の NIS サーバーで管理されているアイデンティティーの種類を特定します。
ユーザーエントリー
NIS によって提供されるユーザー情報を使用するアプリケーションを判定します。sudo などの一部のユーティリティーは NIS ネットグループを必要としますが、複数のユーティリティーが通常の UNIX グループを使用できます。
移行は、以下の手順で実行します。
  1. IdM で対応するユーザーアカウントを作成します。「ユーザーエントリーの移行」を参照してください。
  2. さらにネットグループが必要な場合は、以下を行います。
    1. ネットグループを追加します。「ネットグループの追加」を参照してください。
    2. ユーザーをネットグループに追加します。「ネットグループエントリーの移行」を参照してください。
ホストエントリー
IdM でホストグループを作成すると、対応するシャドウの NIS グループが自動的に作成されます。これらのシャドウ NIS グループに ipa netgroup-* コマンドを使用しないでください。ipa netgroup-* コマンドは、netgroup-add コマンドで作成された ネイティブ の netgroups の管理にだけ使用します。
直接変換の場合
すべてのユーザーエントリーとホストエントリーが同じ名前を使用する必要がある場合は、IdM で同じ名前を使用してエントリーを作成できます。
  1. netgroup で参照されているユーザーすべてについてエントリーを作成します。
  2. netgroup で参照されているホストすべてについてエントリーを作成します。
  3. 元の netgroup と同じ名前の netgroup を作成します。
  4. ユーザーとホストをこの netgroup の直接のメンバーとして追加します。ユーザーおよびホストがグループまたはホストグループのメンバーである場合は、ネットグループにこれらのグループを追加することもできます。

21.5.2. Identity Management での NIS リスナーの有効化

21.5.3. 既存 NIS データのインポートおよびエクスポート

NIS サーバーには、ユーザー、グループ、ホスト、netgroups、および自動マウントマップに関する情報を追加できます。これらのエントリータイプを IdM に移行できます。
次のセクションでは、ypcat コマンドを使用して現在の NIS サーバーからデータをエクスポートし、出力を使用して、対応する ipa *-add コマンドを使用してエントリーを IdM にインポートします。
  • 移行スクリプトで使用される ypcat コマンドを提供するため、yp-tools パッケージをインストールするようにしてください。
    [root@nis-server ~]# yum install yp-tools -y

21.5.3.1. ユーザーエントリーの移行

NIS の passwd マップには、名前、UID、プライマリーグループ、GECOS、シェル、ホームディレクトリーなどのユーザーに関する情報が含まれます。このデータを使用して、NIS ユーザーアカウントを IdM に移行します。
  1. オプション: パスワード強度の弱いパスワードに対応する必要がある場合には、「NIS ユーザー認証用の脆弱なパスワードハッシュ化の有効化」 を参照してください。
  2. 以下の内容で /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
  3. IdM admin ユーザーとして認証します。
    [root@nis-server ~]# kinit admin
  4. スクリプトを実行します。以下に例を示します。
    [root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-master.example.com
    注記
    このスクリプトは、名、姓にハードコードされた値を使用し、パスワードを passw0rd1 に設定します。ユーザーは、次回ログイン時に一時パスワードを変更する必要があります。

21.5.3.2. グループエントリーの移行

NIS グループ マップには、グループ名、GID、グループメンバーなどのグループ情報が含まれます。このデータを使用して、NIS グループを IdM に移行します。
  1. 以下の内容で /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
  2. IdM admin ユーザーとして認証します。
    [root@nis-server ~]# kinit admin
  3. スクリプトを実行します。以下に例を示します。
    [root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-master.example.com

21.5.3.3. ホストエントリーの移行

NIS ホスト マップには、ホスト名や IP アドレスなどのホストに関する情報が含まれます。このデータを使用して、NIS ホストエントリーを IdM に移行します。
  1. 以下の内容で /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
  2. IdM admin ユーザーとして認証します。
    [root@nis-server ~]# kinit admin
  3. スクリプトを実行します。以下に例を示します。
    [root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-master.example.com
    注記
    このスクリプトでは、エイリアスなどの特別なホスト設定は移行されません。

21.5.3.4. ネットグループエントリーの移行

NIS netgroup マップには、netgroup に関する情報が含まれます。このデータを使用して、NIS ネットグループを IdM に移行します。
  1. 以下の内容で /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 $netgroup $hosts $users $doms"
    		else
    			netgroup=$triple
    			echo "ipa netgroup-add $netgroup --desc=NIS_NG_$netgroup"
    		fi
    	done
    done
  2. IdM admin ユーザーとして認証します。
    [root@nis-server ~]# kinit admin
  3. スクリプトを実行します。以下に例を示します。
    [root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-master.example.com

21.5.3.5. 自動マウントマップの移行

自動マウントマップは、場所 (親エントリー)、関連のキー、およびマップを定義する入れ子および相互関連のエントリーです。NIS 自動マウントマップを IdM に移行するには、以下を実行します。
  1. 以下の内容で /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) の生成、IdM Directory Server への LDIF ファイルのインポートが行われます。詳細は、「自動マウントマップの NIS クライアントへの公開」を参照してください。
  2. IdM admin ユーザーとして認証します。
    [root@nis-server ~]# kinit admin
  3. スクリプトを実行します。以下に例を示します。
    [root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain \
         nis-master.example.com map_name

21.5.4. NIS ユーザー認証用の脆弱なパスワードハッシュ化の有効化

Directory Server コンポーネントのデフォルト設定を使用すると、userPassword 属性に保存されているパスワードはソルトでセキュア化されたハッシュアルゴリズム (SSHA) を使用してハッシュ化されます。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 は既存のパスワードハッシュを変換しません。サーバーは、ストレージスキームの変更後に設定したパスワードにのみ新しいパスワードストレージを適用します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.