●PAM認証
UNIX/Linuxユーザーは,PAM(Pluggable Authentication Modules。システム管理者が認証プログラムを再コンパイルすることなく認証ポリシーを設定できるようにする方法の一つ)を通して,ユーザー認証を行う。UNIX/Linuxユーザーがパスワードを変更しても,Windowsネットワーク(RID)とUNIXのIDとの同期が崩れることはない。
●SMB認証
Samba/Windowsユーザーは,Windowsドメイン・ユーザーとして認証(SMB認証)される。
●Sambaマシンの認証
Sambaマシンはドメイン・メンバーで,security=domainとして認証される。従来のsecurity=domainの認証とは異なり,PDCにユーザー・アカウントを作成すれば,UNIX/Linuxマシンを含むドメイン・メンバーのマシンにはユーザー・アカウントを作成する必要がない。
●Windbindの制限事項
現時点では,Winbindにはいくつかの制限事項がある(いずれ解消されるだろうが,その時期は未定である)。
●WindowsのRIDからUNIXのIDへのマップは演算的に作られたものではなく,Winbindに与えられ,未使用(未登録)とみなしたユーザーIDやグループIDを割り当てる。従って,ドメイン内のすべてのLinuxでuid,gidが同一になるとは限らない。また,RIDからUNIXのIDへのマップ情報を保持するファイルが改ざんされたり,破壊されると,マップ情報の復旧は困難である*1。
●Linuxのpasswdコマンドでは,Windowsドメインのパスワードを変更できない。この問題に対処するには,
smbpasswd -r ドメイン・サーバー名
によりLinux上でWindowsドメインのパスワードを変更できるので,
alias passwd = smbpasswd -r ドメイン・サーバー名
を一般ユーザーのbash_profileに入れたり,SWATによるパスワード変更をルール付けると良いだろう。
●現状のWinbindのPAMモジュールは,ユーザーごとにログイン可能なワークステーションを制限したり,ログオン時間を制限する機能などを備えていない。
Winbind利用方法
では,これからWinbindの使い方を説明していく。
(1)Samba 2.2.7b以降の日本語版の入手
Winbindは,Samba 2.2.2から提供され始めた。不具合修正およびセキュリティ対策がされているSamba 2.2.7b以降の使用をお勧めする。必ず,ユーザー名やリソース名に日本語を使用した場合に起こる問題が解決されている,日本語版を使用していただきたい。
Sambaを入手する場合には,まずは日本Sambaユーザ会のftpサイト(ftp://ftp.samba.gr.jp/pub/samba-jp/)に,対象OS向けにコンパイル済みのものがないかどうかを確認してほしい。もし,存在しなければソースをコンパイルして導入するか,Red Hat系ならばソースRPM(SRPM)を入手して次のように再構築すると良い。
Red Hat Linux7.xまたはMIRACLE LINUX 2.xの場合は,
# rpm -rebuild samba*.src.rpm
また,Red Hat Linux8.0/9の場合は,
# rpmbuild --rebuild samba*.src.rpm
と入力すると,/usr/src/redhat/RPM/の下にパッケージが作成される。それをインストールする。
(2)Sambaのインストール
前記のFTPサイトで目的のRPMやSRPMが見つかったのなら,それを使ってインストールすれば良い。なお,既に(日本語版でない)Sambaがインストールされている場合は,あらかじめ削除しておく。
(インストール例)
●インストール済みSambaの確認
# rpm -qa | grep samba
●インストール済みのSambaを削除(上記で表示されたものを指定して削除)
# rpm -e samba samba-client samba-common samba-swat
●Sambaのインストール
# rpm -Uvh samba-*ja*.rpm
(3)smb.confの設定
図2●smb.confの設定例 |
Winbind機能を利用するには,従来のsmbdやnmbdデーモンに加え,winbindデーモンも起動させる必要がある。Winbindの設定ファイルは従来のsmbdやnmbdと同じ(/etc/samba/)smb.confである。
Winbindを使用するには,以下の項目を設定する(下記以外のものについては,SWATのドキュメント参照していただきたい)。設定例を図2[拡大表示]に示した。
●winbind use default domain = Yes
このオプションは, Winbindを使ってユーザーがログインするとき,ユーザー名にドメイン名を付けるか(No),付けない(Yes)かを指定する。デフォルトの「winbind use default domain = No」では,ユーザー名が「ドメイン名¥ユーザー名」となるので,sshやftp,電子メールなどを利用する際にいろいろと不都合が起こる。
Samba以外の認証(sshやftp,IMAPなど)でもWinbindを使用するのなら,「winbind use default domain = Yes」とするのが良いだろう。
●winbind separator
Windowsドメインとユーザー名のセパレータを指定する。「winbind use default domain = No」では通常,Windowsドメイン・ユーザーは「ドメイン名¥ユーザー名」と表現され,デフォルトのセパレータは¥記号である。
しかし,UNIXのシェルの中で¥は特殊な意味を持つため,別の記号に変更したいときにこのオプションを指定する。代替記号しては,/などでも悪くはないが,/はディレクトリのセパレータであるため不都合が起きる可能性がある。+記号や_(アンダーバー)記号などの方が良いだろう。
(デフォルト) winbind separator = エ
(使用例) winbind separator = _
●winbind uidWinbindがUNIX/Linuxユーザーに割り当てるuid(ユーザーID)の範囲を指定する。/etc/passwdやNISの中では使用されていない範囲を指定しなければならない。
(デフォルト)winbind uid = なし
(使用例)winbind uid = 10000-20000