SFU 3.0によるUNIXとWindowsの認証の連携

Author:たかはしもとのぶ <monyo@home.monyo.com>
 ご存知の方も多いと思いますが、マイクロソフト社ではUNIX(Linuxを含む。以下同じ)とWindowsとの連携を行うMicrosoft Windows Services for UNIX(以下SFUと省略)という製品を出荷しています。
 SFUの最新版は2002年12月に発売されたばかりのSFU 3.0となっています。
 ここでは、このSFUを使ってUNIXとWindowsとで認証を連携する方法について紹介します。

目 次

1.SFUの紹介 
2.SFUのインストール 
3.パスワード同期 
3.1.WindowsからUNIXへのパスワード同期 
3.1.1.Windows側の設定
3.1.2.UNIX側のインストール
3.1.3.動作の確認
3.1.4.トラブルシューティング
3.2.UNIXからWindowsへのパスワード同期 
3.2.1.Windows側の設定
3.2.2.UNIX側の設定
3.2.3.動作の確認
3.3.本格的な設定 
3.3.1.パスワード同期を行なうユーザの指定
3.3.1.1.UNIX側での制御
3.3.1.2.Windows側での制御
3.3.1.3.暗号キーの変更
3.3.1.4.NISサーバとの連携
4.NISサーバ機能 
4.1.NISの概要 
4.2.NISサーバのインストール 
4.3.NISマップの作成 
4.3.1.GUIからのNISマップの操作
4.3.2.パスワードの移行について
4.3.3.既存のNISサーバからのNISマップの移行
4.3.4.動作確認
4.4.NISサーバの運用 
4.4.1.パスワードの暗号化形式
4.4.2.スレーブサーバの追加と構成
4.4.3.パスワードの変更
5.まとめ 
6.参考情報 
7.注記・補足 

SFUの紹介 

表1:SFUの機能
機  能説  明
Interix
ユーティリティUNIXの基本的なコマンドやperlなどを提供します。
Interix
GNUコンポーネント
GPLのツール群や開発環境などを提供します。
Interix
SDK
X11R5の開発環境などを提供します。
NFS
NFS
コンポーネント
NFSサーバ、クライアント機能に加え、NFSサーバ上のリソースをSMBプロトコルを用いてクライアントに公開するNFSゲートウェイ機能を提供します。
NFS認証ツールNFS認証サーバやpcnfsdなどを提供します。
認 証
NISサーバActive DirectoryのDCをNISサーバとして動作させる機能を提供します。
パスワード同期Windows側とUNIX側とのパスワードを同期させる機能を提供します。
その他
リモート接続
コンポーネント
telnetやrshのクライアントおよびサーバ機能を提供します。
ActiveState
Active Perl 5.6
Windows上でPerlの実行環境を提供します。

 最初にSFUについて簡単に紹介しておきましょう。
 SFUはWindows NT/2000/XPに対応したプロダクトで、表1のような機能を提供します。

 これらの機能を大別すると
  (1) NFS認証ツール
  (2) 認証
  (3) Interix
  (4) その他

になります。
 SFU 3.0の目玉としては、従来は別製品で日本では発売されていなかったInterixになるかと思いますが、ここでは認証の連携という観点に基づき、SFUの認証機能にスポットをあてて説明していきます。
 この他SFUについての情報は、マイクロソフト社の「Services for UNIX ホーム」などから入手してください。

 同ページからは120日間使用可能な評価版の入手も可能になっていますし、本誌付録CD-ROMにも収録しております。
 評価版については機能制限などはありませんので、興味のある方は是非使ってみてください。

SFUのインストール 

 SFUのインストール自体は非常に簡単で、ウィザードに従っていけばよいだけです。
 途中に図1のようにインストールする機能を選択する画面がありますので、ここで必要な機能を選択してインストールもしくはアンインストールします。

図1:SFUコンポーネントの選択(Windows 2000のDCの例)
inst_1.png
Windows 2000/XP Professionalなどでは「パスワード同期」がデフォルトでインストールされないので、明示的にインストールすること。

 認証機能に関連するのは「パスワード同期」と「NISサーバー」になりますので、適宜この二つのコンポーネントをインストールするようにしてください。ただし「NISサーバー」はWindows 2000のDCでのみインストール可能です。また後述しますが、NISサーバ機能はActive Directoryのスキーマを拡張します。拡張されたスキーマは元に戻せませんので、実環境への導入にあたっては充分注意してください。
 なおインストールするプロダクトによっては、図2のような画面が現れて、LGPLの確認が表示されます。マイクロソフト社製のプロダクトでこうした表示が行なわれるというのは、やはり何ともいえないモノがありますね(^_^;;

図2:LGPLに関する注意の表示
inst_3.png

 それでは、以下各機能について順番に説明していきましょう。

パスワード同期 

 パスワード同期をインストールすることで、Windows側でパスワードが変更された際に、それをUNIX側のパスワードに反映させることや、逆にUNIX側のパスワードの変更に同期してWindows側のパスワードの変更を行なうことが可能となりますので、WindowsとUNIXとでパスワードの一元管理が可能となります。
 ただしコラム1にも書きましたが、残念なことに対応プラットフォームがかなり限られていますので注意してください。
 また、Active Directoryドメインとパスワードを同期させたい場合は、ドメイン内の全てのDCにパスワード同期をインストールする必要があるので、注意してください。

Column 1: パスワード同期の対応プラットフォームと問題点
SFU 3.0のドキュメントを確認すると、パスワード同期の対応プラットフォームは、
 o Solaris 7 (SPARC版)
 o Red Hat Linux 7.1(明記はされていないがIntel版のみと思われる)
 o AIX 4.3.3(WindowsからUNIXへの同期のみ)
 o hp-ux 11.00 / HP-UX 10.20
しかありません。すでにSolaris 9やRed Hat Linux 8.0などがリリースされており、これらのOSは1〜2世代以上古いものとなっていることを考えると、本当にパスワード同期機能を使って欲しいのか疑問を感じてしまいます。
 Webサイトなどには特に最新版で使えないという記載はなかったので、筆者の方でRed Hat Linux 7.3やSolaris 8(Intel 版)(注01)の環境で確認してみたのですが、確かにパスワード同期機能はうまく動作しませんでした(注02)
 結局の所、最新のプラットフォームに対応させるには、ssodのソースを適宜修正した上でコンパイルして使うしかないようです。コンパイルだけならまだしも、これでは一般の人にとっては使えないのと同義でしょう。
 SFUのWebページで最新版のUNIX系OSに対応するssodを提供する、最低でも動作しない組合せについては動作しないと明記するなどの対処が欲しい所です。
 これらの点について、筆者の方でマイクロソフト社に確認した所、「問題点として認識している。次期バージョンでは対応したい」とのコメントがありました。善処を願いたい所です。
Column 2: ssodソースの移植
 実はSFUのCD-ROM中にはソースが含まれており、これをコンパイルすることで、サポート対象外の環境でもssodを動作させることが可能です。このソースはSFUの機能を実行させるためであれば特に追加のライセンスなしで任意のUNIXマシンにインストールすることが可能になっています。
 しかし残念ながらコンパイルはあまり簡単とはいえません。基本的にはGNU make(以下gmake)をインストールした上で、CD-ROM内のunix/srcディレクトリ以下にあるtripldesおよびssodディレクトリ内で順に
# gmake -f makefile.<プラットフォーム名>
を行なうか、汎用のmakefile.comを修正した上でgmakeコマンドを実行するのですが、まずsrcディレクトリ内にbinおよびobj/i386というディレクトリを作成しないとコンパイルがうまくいきません。またmakefileの問題でgmake installをしなくても/usr以下にファイルをコピーしようとしますので、そこもコメントアウトする必要があります。
 ここまで準備をすることでようやくコンパイルが可能となりますが、Red Hat Linux 7.3で試した際は途中でエラーになってしまうため、コンパイルできませんでした。またSolaris 8 Intel版ではコンパイル自体は成功したもののバイナリが適切に動作しませんでした。
 地道にデバッグしていけば、最終的には動作するようになると思いますが、UNIXの主要なフリーソフトウェアと異なり、気軽にコンパイルできるものではないのが現状です。
注01:
ソースからコンパイルして確認しました。
注02:
当初Red Hat Linux 7.1で動作すると書いてあるんだから、当然7.3でも動くだろうと安易に考えて一晩はまってしまったことはヒミツです。なおUNIXやらWindowsへのパスワード同期はRed Hat Linux 7.3でも動作しました。

WindowsからUNIXへのパスワード同期 

 最初にWindowsからUNIXへのパスワード同期の設定を行なってみましょう。
 まずは最低限必要な設定のみを示します。

Windows側の設定

 SFUのインストール時に「パスワード同期」コンポーネントをインストールしていると、「Services for UNIX の管理」アプレットに図3のような「パスワード同期」画面が表示されます。

図3:パスワード同期の設定画面
passsync_1.png

 「Windows を実行するコンピュータから……」のチェックボックスにチェックが入っていることを確認してください。また必須ではありませんが、トラブル発生時の便を考慮すると、ある程度安定稼働するまでは図3下の「詳細なログを有効にする」にチェックを行なっておいた方がよいでしょう。
 最低限行なわないといけない設定は、「詳細設定」タブを押すと現れる図4の画面から同期先のUNIXマシンのIPアドレスやホスト名を設定することだけです。

図4:パスワード同期の詳細設定画面
passsync_3.png

UNIX側のインストール

表2:プラットフォーム名
プラットフォーム名対応プラットフォーム
  so7Solaris 7(SPARC版)
  l52Red Hat Linux 7.0/7.1
  h11hp-ux 11.00
  h10hp-ux 10.20
  a42AIX 4.3.3

 UNIX側はCD-ROMのunix/bins以下にあるssod.<プラットフォーム名>というバイナリを利用します。プラットフォーム名については表2を参照してください。適切なバイナリを選択のうえ、名前をssodに変更して/usr/local/bin(もしくは/usr/bin)にコピーします。ファイルに実行権をつけるのを忘れないようにしてください。
 同時に設定ファイルのテンプレートであるsso.cfgファイルを/etc/sso.confという名前でコピーします。このファイルは改行コードがUNIX形式である必要がありますので、ftpで転送する場合はバイナリモードで行なうなど、扱いに注意してください。
 UNIXの場合ファイルの大文字と小文字を区別しますので、普段使い慣れていない方は注意してください。また、sso.confにはWindowsと通信する時のパスワードが平文で格納されますので、root以外からファイルの内容が読みとられないようにする必要があります。Red Hat Linux 7.1でのインストール例を図5に示します。

図5:Red Hat Linux 7.1でのssodのインストール例
# mount /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom/unix/bins
# cp ssod.l52 /usr/local/bin/ssod ← ssodのコピー
# chmod +x /usr/local/bin/ssod   ← 念のため実行権を設定する
# cp sso.cfg /etc/sso.conf     ← sso.confのコピー
# chmod 600 /etc/sso.conf     ← sso.confのアクセス権設定

 UNIX側の設定は/etc/sso.confファイルで行ないます。最低限必要な設定は

SYNC_HOSTS=(157.60.253.105,6677,ABCDZ#efgh$12345)

と書いてある行をコメントにして、その下に認証同期元のWindowsマシンのIPアドレスを

SYNC_HOSTS=(x.x.x.x)  ← (x.x.x.x はWindowsマシンのIPアドレス)

のように設定することだけです。デフォルトでは互いに「6677/TCP」に対して通信を行ないますので、間にファイアウォールなどが入っている場合は、通信可能なように設定しておいてください。
 最後にssodを起動します。単に実行してもよいのですが、念のため-vオプションをつけて図6のように端末に詳細な設定情報を出力させた方がよいでしょう。なおssodを停止させる場合は、KILLコマンドで行なってください(注03)

図6:-vオプションつきでのssod起動
# /usr/local/bin/ssod -v
Port: 6677
Use shadow: 1
Case Ignore Name: 1
Use temp: 0
Use NIS: 0
File path: /etc/shadow
Temp path: /etc
Pam_supported 0
注03:
筆者の環境だけかも知れませんが、kill -KILLでないと終了してくれません。

動作の確認

 それでは実際に動作を確認してみましょう。UNIXマシンに存在するのと同じ名前のアカウントをWindowsマシン側にも作成した上で、Windowsマシン上でパスワードを変更します。パスワード同期が正しく動作していれば、パスワード変更後、UNIXマシンに対してftpなどで接続し、先ほどWindows側で変更したパスワードを入力することで、ログインが可能な筈です。

トラブルシューティング

 コラム1でも書きましたが、パスワード同期はサポートされるUNIX側のバージョンがかなり制限されています。トラブルが発生した場合は原因切り分けのため、マイクロソフト社がサポートしているやや古いバージョンのOSで確認することを強く推奨します。
 その他はまりやすい要因としては、UNIX側のパスワードポリシーに合致しないパスワード変更を行なった場合が考えられます。これについてはイベントログやsyslogへの出力を確認することである程度の切り分けはできると思います。また切り分け策としてUNIX上でそのアカウントがロックアウトされていないことや、UNIX上でそのアカウントのパスワードをWindows側で設定したパスワードに変更できることの確認などを行なうのもよいでしょう。
 エラーが発生した場合は、まずイベントログを確認してください。「詳細なログを有効にする」がチェックしていれば、図7のように詳細な情報が出力されている筈です。

図7:イベントログに出力されるエラーの例
event_1.png

 イベントID4098が同期処理の開始、4097が同期成功を意味するメッセージになります。
 イベントID8224は、アカウントが無効になっているなど、8243はパスワードが短過ぎる、8196は同期失敗を示すメッセージになっています。なおデフォルトでは30秒間をおいて3回試行を行なうので、エラーも通常3回ずつ同じものが出力されます(注04)
 併せてUNIX側のsyslogにもDAEMONファシリティで図8のようなログが記録されます。

図8:syslogに出力されるエラーログの例
Feb 5 12:22:38 mana ssod:[1061]: Password length lesser than required. Check the /etc/default/passwd file
Feb 5 12:27:11 mana ssod:[8386]: Failed to update password Error: ERROR User: test1
Feb 10 09:21:02 mana passwd: Syncing password for windows disallowed User: test2 Host: 192.168.79.240
Feb 10 09:21:02 mana passwd: Password for user failed to sync User: test2
Feb 10 09:30:35 mana passwd: Illegal sync users found User: +test2 User: -test2
Feb 10 09:30:35 mana passwd: Password sync for user disallowed by system admin. Add this user to the /etc/sso.conf file User: test2
Feb 10 14:00:04 mana ssod:[4035]: Ssod failed to look up UNIX user Error: ERROR User: test2

 これらの情報から切り分けを行なっていってください。

注04:
この設定はssod.confの「SYNC_DELAYパラメータ」と「SYNC_RETRIESパラメータ」とで変更できます。

UNIXからWindowsへのパスワード同期 

 次はUNIXからWindowsへのパスワード同期の設定をおこなってみましょう。

Windows側の設定

 基本的にはWindowsからUNIXへの同期の設定と同様ですが、図2の「パスワード同期」画面で、「UNIX を実行するコンピュータから……」の方にチェックが入っていることを確認した上で、同期元UNIXマシンを図3の画面から追加します。

UNIX側の設定

 UNIX側では、PAMの設定が必要になります。unix/binsディレクトリにあるpam_sso.<アーキテクチャ名(注05)>というファイルを/lib/security/pam_sso.so.1(Solarisの場合は/usr/lib/security/pam_sso.so.1)という名前でコピーした上で、PAMの設定ファイルの設定を行ないます。図9にはRed Hat Linux 7.1の場合の例、図10にSolarisの場合の例を示します。なおhp-uxの場合もSolarisとほぼ同様です。詳細はドキュメントを参照してください。

図9:PAMの設定 /etc/pam.d/system-authの設定(Red Hat Linux 7.1の場合)
password required /lib/security/pam_cracklib.so retry=3
password required /lib/security/pam_sso.so.1 ←追加
password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow
# password required /lib/security/pam_deny.so ←コメントアウト
図10:PAMの設定 /etc/pam.confの設定(Solaris 7の場合)
#
# Password management
#
other password required /usr/lib/security/pam_sso.so.1 ←追加
other password required /usr/lib/security/$ISA/pam_unix.so.1
dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
注05:
アーキテクチャ名については表2を参照してください。

動作の確認

 UNIX上でpasswdコマンドを使ってUNIXアカウントのパスワードを変更してみましょう。passwdコマンド起動時には認証元のWindowsマシンへ何らかの問い合わせを行なっているようで少し時間がかかりますが、最終的にはパスワードの変更ができる筈です。できなかった場合は、前述したようにsyslogやイベントログを用いて原因の切り分けを行なってください。

本格的な設定 

 ここまで、必要最低限の設定について説明しましたが、実際の環境で使っていくにあたって行なっておくべき設定について説明します。

パスワード同期を行なうユーザの指定

 ここまでの設定では、基本的にUNIX上に存在する全てのアカウントについてパスワードの変更が可能となっていますが、現実的にはシステムが使っているアカウントなどについてはパスワード同期の対象から外したいと思います。以下その方法について説明します。

UNIX側での制御

 UNIX側で制御を行なう場合は、SYNC_USERSパラメータを使います。デフォルトでは

SYNC_USERS=all

となっているため、全てのユーザのパスワードが同期されます。例えばmonyoとnorikoを許可し、marikoを許可しないといった場合は、以下のように指定します。

SYNC_USERS=+monyo,+noriko,-mariko

 SYNC_USERSに含まれていないアカウントや-が指定されたアカウント(注06)のパスワード同期は無効になり、片側のパスワードのみが変更されます。
 基本的にrootやbin、admなどシステムが使っているアカウントは同期対象に含めるべきではないでしょう。

注06:
+と−が両方指定されたアカウントのパスワード同期も無効になります。
Windows側での制御

 Windows側では、PasswordPropAllowおよびPasswordPropDenyというグループのメンバを構成することで、パスワード同期を有効にするユーザを制御することが可能です。PasswordPropDenyにはパスワード同期を無効にするユーザやグループを、PasswordPropAllowにはパスワード同期を有効にするアカウントをそれぞれ含めます。
 デフォルトではPasswordPropDenyグループのみが作成され、Administratorやその他Administrator権限のあるアカウントがメンバとして自動的に追加されています。PasswordPropAllowグループは作成されていませんが、この場合、全てのアカウントがメンバとして含まれるのと同様の動作になります。
 なお両方のグループに含まれるアカウントのパスワード同期は無効になります。

暗号キーの変更

 デフォルトの暗号キーは既知のもののため、実際に運用を行なう際には必ず変更するようにしてください。変更する場合は、Windows側で図3の画面から「新しいキー」ボタンを押して新しいキーを取得して適用した上で、同期対象のUNIXマシン上においても、値を/etc/sso.confファイル中のENCRYPT_KEYパラメータに設定する必要があります。

NISサーバとの連携

 同期対象のUNIX上でNISマスタサーバが動作しており、NIS上のユーザのパスワードを同期させたい場合は、/etc/sso.confにUSE_NIS=1という指定をいれた上で、NIS_UPDATE_PATHの値を適切に設定するようにしてください。
なお、これ以外にもssod.confには幾つか設定可能なパラメータがありますので、興味のある方はドキュメントやソースを参照してください。

NISサーバ機能 

 次にSFUのNISサーバ機能について説明しましょう。
 NISサーバ機能とは、図11のようにActive Directoryの各DCを(注07)、UNIXで一般的なディレクトリサービスであるNISのサーバとして動作させるようにする機能です。NISはユーザ認証に必要なパスワード情報も一元管理できるため(注08)、SFUのNISサーバ機能を使ってWindowsドメインのユーザ情報をNIS経由で取得できるようにすることで、UNIXマシンの認証をWindowsドメインで統合することが可能になります。

図11:NISサーバ機能の動作概要
nis_server1s.png
注07:
ライセンス上はドメイン内のいずれかのサーバがSFUのライセンスを保持していれば、その他のDCにNISサーバのインストールが可能となっています。詳細はSFUのEULAを参照してください。
注08:
というより、それが最大のニーズだというはなしもあります。

NISの概要 

 最初にNISについて簡単に説明しておきましょう。
 NISを一言でいうと、UNIXマシンの/etc以下の幾つかのファイルの内容を一元管理するディレクトリサービスの一種です。NISはNTドメインなどと同様シングルマスタ構成をとっており、マスタを保持しているサーバをNISマスタ、マスタの複製を保持しているサーバをNISスレーブと呼びます。NISクライアントはNISサーバ(マスタ、スレーブどちらでも可)に接続して、各種情報を受け取ります。
 どのNISサーバに接続しているかを確認するコマンドがypwhich図12で、実際に各種情報を取得するコマンドがypcat図13になります。この他のコマンドについては、NISのドキュメントなどを参照してください。

図12:ypwhichコマンドの例
% ypwhich
shiori ←参照先のNISサーバ名
図13:ypcatコマンドの例
% ypcat passwd
nistest2:ABCD!efgh12345$67890:10000:10000::/home/nistest2:/bin/csh

 セキュリティ面での脆弱性(注09)などが指摘されているNISですが、後継としてSun Microsystems社がリリースしたNIS+がセキュリティの向上や大規模環境への対応を行なった結果非常に複雑となり、他プラットフォームへの移植が進まなかったことなどもあって普及しなかったため(注10)、UNIXマシンのディレクトリサービスとしては、今でもげ根気で用いられています。
 なお、本記事はNISの機能解説が主眼ではないため、NISについての説明はこの辺りにしておきます。NISの詳細については、別途各種ドキュメントやWebサイトなどを参照してください。

注09:
NISが設計された当時の環境を考えればやむを得ない点もあります。
注10:
NTドメインからActive Directoryへの移行が進まない現状と同じジレンマではないかと思っています。

NISサーバのインストール 

 それでは、以下実際にインストールを行なっていきましょう。Windows側で必要なのは図4の画面での「NISサーバ」コンポーネントのインストールになります。繰返しになりますが、NISサーバをインストールするとActive Directoryのスキーマが拡張されます。Active Directoryの仕様上一度拡張したスキーマは元に戻せませんので、充分注意してください。
 NISサーバでは、複数のNISドメインを扱えますが、デフォルトでWindowsドメインのNetBIOS名と同じ名前のNISドメインが作成されていますので、基本的に設定を変更する必要はないでしょう。ただし、UNIX側のパスワード形式がmd5のみの場合は、デフォルトの設定がcryptになっているため、設定の変更が必要です(注11)

注11:
詳細については後述します。

NISマップの作成 

 NISサーバのインストールが完了したら、次はNISマップの作成を行ないます。NISマップの作成は基本的に図14のようにnismapというコマンドで行ないます。この作業はGUIでは行なえません。

図14:nismap コマンドの実行例
C:\>nismap add -e "local4:iJa/W9kDv6lDY:10004:10004::/home/local4:/bin/tcsh" -a W2K2 passwd

動作 = 追加中 マップ = 'passwd'...

成功
オブジェクトを Active Directory に追加します。
オブジェクト = 'local4'
オブジェクト クラス = 'User'
コンテナ = 'LDAP://localhost/CN=Users,DC=W2K2,DC=HOME,DC=MONYO,DC=com'.

 -eに続いてNISのマップ形式に整形したエントリを記述してください。-aオプションでNISドメイン名を指定し、最後に追加対象のマップ名を指定します。図14以外の例を幾つか図15に示します。

図15:nismap コマンドの例
C:\>nismap add -e "192.168.10.10 mayu" -a W2K2 hosts
C:\>nismap add -e "group1::10000:" -a W2K2 group

 nismapコマンドではこの他エントリの修正、削除など様々な操作が行なえます。また、nismapコマンドを使って独自のNISマップを追加することも可能です。これらの詳細はSFUのヘルプを参照してください。

GUIからのNISマップの操作

 一部のNISマップについては、Active Directory上の既存のオブジェクトと対応づけがされているためGUIによる追加も可能になっています。
 NISサーバをインストールすると、図16のように、Active Directoryユーザとコンピュータからユーザ(passwdマップ)、グループ(groupマップ)、コンピュータ(hostsマップ)の各オブジェクトのプロパティを表示した際に「UNIX属性」というタブが現れます。ので、ここからアカウント関連の設定を行なったり、「NISドメイン」を設定することで、NISドメインに所属していなかったオブジェクトを対応するNISマップに追加することも可能になっています。

図16:ユーザのUNIX属性タブ
ad_1.png
NISドメインが「<なし>」の場合、そのアカウントはNIS経由で参照できない。

 nismapコマンドを使ってこれらのマップのエントリを追加した場合は、自動的にActive Directory側にも対応するオブジェクトが作成されるか、すでに存在している場合はUNIX属性の値が設定されます。なおすでにUNIX属性が設定されているオブジェクトを追加しようとした場合は競合が発生します。競合発生時の対処などについてはドキュメントを参照してください。

パスワードの移行について

 パスワードについては特殊な扱いがされます。
 o nismapで追加したアカウントがすでにActive Directoryに存在していた場合、Windowsのパスワードは更新されません。従って、passwdマップのパスワードとWindowsのパスワードが異なることになります。
 o nismapで追加したアカウントがActive Directoryに存在していなかった場合、Window NISマップの両パスワードはランダムな文字列に設定されます。従って、実際にログオンを行なう前に、一度パスワードを変更することが必要になります。

既存のNISサーバからのNISマップの移行

 既存のNISサーバから直接NISマップを移行することも可能です。
 nis2adコマンドを利用することもできますし、メニューにある「NIS サーバの移行」ウィザードを使うことも可能です。詳細はドキュメントを参照してください。

動作確認

 一通りエントリの追加が終了したら、既存のNISクライアント(注12)からログオンしてみましょう。うまく移行ができていれば図17のようにidコマンド、ypwhichやypcatコマンドなどが機能する筈です。NISクライアントからみるとUNIXで構築したNISサーバとみわけがつきません。

図17:NISクライアントへのログイン
SunOS 5.8

login: local4
Password:
No directory! Logging in with home=/
Last login: Sat Feb 8 23:52:03 from mana.home.monyo.
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
> id
uid=10004(local4) gid=10004(local4)
> ypcat passwd
nistest2:1kTZZo3XrOSAE:10000:10000::/home/nistest2:/bin/csh
local2:xpf2uf0nkJ88E:10001:10001::/home/local2:/bin/csh
local4:1UE3aN4XWOFAY:10004:10004::/home/local4:/bin/tcsh
> ypwhich
shiori
注12:
NISクライアントの構成方法についてはOSによって多少異なる点もありますので、ここでは説明しません。
別途ドキュメントなどを参照してください。

NISサーバの運用 

 基本的な日常管理はUNIXベースのNISサーバと同様です。ここではSFUのNISサーバー機能に特有の注意点について記載します。

パスワードの暗号化形式

 デフォルトではパスワードの暗号化形式はcryptになっていますが、最近のLinuxなどではより暗号強度が高いmd5がデフォルトで用いられることが多いと思います。このためSFUでも暗号形式をmd5にすることが可能です。暗号化形式の変更は図18の画面にある「UNIXパスワードの暗号化の方法」で行ないます。

図18:NISドメインの「マップ」画面
nis_1.png

もっとも大半の商用UNIXなどはcryptを使っていますので、基本的にはcryptのままでよいでしょう。md5を利用しているのはLinuxやFreeBSDなどになりますが、これらのOSでもcrypt形式を利用できます。NISを利用する場合パスワードの暗号化形式は揃える必要がありますので(注13)、LinuxやFreeBSD側の設定をcryptに変更する必要があるかも知れません。

注13:
最近のLinuxなどではmd5の設定にしていても、crypt形式のパスワードを扱えますので、この場合暗号化形式が異なっていても相互運用が可能です。

スレーブサーバの追加と構成

 NISサーバをインストールした場合、Active Directoryの残りのDCには自動的にNISマップが複製されますので、SFUのNISサーバ機能をインストールすることで(注14)NISスレーブサーバとして機能することが可能になります。
 UNIXマシンをNISスレーブにする場合は、図19の画面でNISサーバを追加する必要があります。

図19:NISドメインの「NISサーバー」画面
nis_2.png
ここではmayuというUNIXマシンが追加されています。

 NISマップの更新を伝達する間隔は図20で指定する他、図18の「伝達」ボタンにより手動で行なうことも可能です。またnisadminコマンドとyppushというコマンドラインツールも用意されています。

図20:NISドメイン画面
nis_3.png
注14:
NISスレーブサーバ用途のインストールにはSFUのライセンスは不要です。

パスワードの変更

 パスワードの変更については、注意が必要です。
 Windows側のアカウントのパスワードを変更した場合、そのパスワードはWindows側とNISマップの両方に反映されます。しかしNIS経由でパスワードを変更した場合、そのパスワードはNISマップにのみ適用されます。つまりWindows側とNISマップのパスワードが同期しなくなります。またnismap modコマンドでNISマップに格納されたパスワードを直接変更することはできないようになっています。
 UNIX側から両方のパスワードを変更したい場合は、前述したパスワード同期機能を設定してUNIX側のパスワードを変更すると同時にWindows側のパスワードも変更するようにしてください。

まとめ 

 以上、簡単ではありますが、SFUのもつ認証機能について説明しました。
 Windowsドメインが存在している環境にUNIXマシンを導入する場合、認証の統合が問題となるケースは多いと思います。その際の解決策としてWinbindとともにSFUも選択肢の一つに挙げられるのではないかと思います。
 本記事が認証の統合を検討している皆様の参考になれば幸いです。

参考情報 

●Services for UNIX ホーム:
http://www.microsoft.com/japan/windows/sfu/previous/

●Microsoft(R) Windows(R) Services for UNIX Version 3.0 日本語版、12月6日の発売に向け、本日より評価版の提供を開始:
http://www.microsoft.com/japan/presspass/releases02/111402sfu.asp

●@IT:製品レビュー Microsoft Windows Services for UNIX 3.0 日本語版:
http://www.atmarkit.co.jp/fwin2k/productreview/sfu30/sfu30_01.html

●@IT:製品レビュー Windows Services for UNIX 2.0:
http://www.atmarkit.co.jp/fwin2k/productreview/serviceforunix/serviceforunix_01.html

注記・補足 

  1. 2004.04.07 HTMLレベルの整形、図の作成を行いました。
  2. 2004.04.12 2回目のHTMLレベルの整形、図の修正を行いました。
  3. 2004.05.08 3回目のHTMLレベルの整形の修正を行いました。
  4. 本文書は、UNIX USER 2003 年 04 月号の『特別企画』に掲載された『Services for UNIX 3.0 による認証の連携』の草稿をにゃお様の方で HTML 化して掲載しているものです。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2006-07-12 00:00:20 JST
webmaster@monyo.com