Directory連携winbind機能を利用するとWindowsサーバに登録されたユーザ情報やパスワードを利用することが可能となるため、Linux側にSamba用のアカウントを作成することなくWindowsのユーザアカウントをLinux上で利用することが可能となります。ActiveDirectoryと連携してドメインメンバーサーバとする手順について以下に説明します。Directoryとしてドメイン参加することが可能です。この場合、ユーザ認証にはKerberosが利用されます。Linuxでは一般的にMITKerberosが実装として利用されています。DirectoryドメインにSambaサーバを参加させるための設定方法に関して説明いたします。Directoryドメインad-domain.localコンピュータ名testIPアドレス192.168.1.200Sambaサーバコンピュータ名SAMBAIPアドレス192.168.1.151まず最初にSambaがActiveDirectoryに対応としてビルドされていることを確認します。OpenLDAPとKerberosのライブラリが必要ですがこれらのライブラリが存在していれば自動的にActiveDrirectory機能が利用可能となります。lddでsmbdにリンクされるライブラリを確認することでActiveDirectory連携が利用可能かどうか判別することができます。(0xb7f3b000)事前準備としてDNSサーバをADに向けておく必要があります。192.168.1.200ADではKerberos認証が機能するため、時刻を正確に合しておく必要があります。AD環境ではクライアントは原則としてドメインコントローラと時刻同期をするらしい。Windows2003において以下のコマンドをDOS窓からたたいて時刻を同期しておきます。/resyncAD連携機能を利用するための基本的な設定例を示します。yes以下にwinbindに関連するsmb.confのパラメータとその意味を示します。realmADのドメイン名を指定します。serverドメインコントローラを指定します。uidwinbindはWIndowsドメインコントローラから取得した情報を元にLinux用のユーザアカウントを自動作成します。自動で作成されるアカウントはwinbindによって管理されており/etc/passwdなどには現れません。winbindはユーザ情報を作成するときにidmapuidにパラメータに指定した範囲のUIDを小さい値から順番に割り当てます。従って既存のユーザアカウントに割り当てられていないUIDの範囲で指定しなければなりません。uidと同様で自動的に作成されるグループに関する値の範囲を指定します。usersドメインコントローラに非常に多くのユーザが登録されている場合、エントリの取得に時間がかかることがありますwinbindはネットワークごしにユーザエントリを取得するためネットワーク帯域幅がせまくユーザ数が多数に渡る場合など、ユーザ一覧取得処理にかかる時間が無視できないものになることもあります。このような環境でユーザ一覧の取得時に一覧の取得を抑制するためのパラメータです。noを設定するとユーザ一覧の取得を抑制します。groupsと同様のパラメータでnoを指定した場合、グループ一覧の取得を抑制します。homedirwinbindによって自動的に作成されたユーザのホームディレクトリの初期パラメータとして割り当てられます。規定値は/home/%D/%Uと設定されているため/home/ドメイン名/ユーザ名がホームディレクトリとして割り当てられます。shellwinbindによって自動的に作成されたユーザのログインシェルの初期パラメータとして割り当てられます。規定値は/bin/falseが設定されているためwinbindによって自動的に作成されたユーザはシステムにログインすることができません。accountsこのパラメータをyesに設定するとwinbindはユーザ作成要求が発生したときにwinbind独自のデータベース内にユーザアカウントを自動的に作成します。scriptなど、ユーザ作成などに関する一部のパラメータは無視されます。separatorwinbind機能を用いいるとWindowsドメインコントローラから取得したユーザ情報はデフォルトでドメイン名\ユーザ名の形式で表現されます。Linuxではバックスラッシュは特別な意味をもつことが多いので運用上あまり好ましくありません。そこでバックスラッシュを他の文字に置き換えたい場合にこのパラメータに置き換える文字を指定します。domainこのパラメータをyesにするとwinbindによって作成されたユーザ名からドメイン名が取り除かれます。その結果、sshなどsamba以外のアプリケーションでwinbind経由で取得したユーザ名を利用する場合にもドメイン名が含まれないため一般的なユーザ名でログインすることが可能となり、ユーザの利便性が向上します。timewinbindは性能向上のためにユーザ情報やグループ情報をキャッシュとして保持しています。このパラメータはキャッシュを保持する時間であり、指定した時間を過ぎて問い合わせがあると再度ドメインコントローラから情報を取得します。Kerberosの設定を行います。Kerberosの設定は/etc/krb5.confにて行います。パラメータを以下に示します。default_realmADのドメイン名を設定します。smb.confのrealmのと同じ値を全て大文字で記載します[realms]Kerberosに関する情報を格納するセクションです。どのれるむに関する設定か指定しますkdcレルムでチケットの発行を行うサーバを指定します。チケットはKerberosのユーザ認証に利用されます。ADのDCに該当しFQDNの形式で利用されます[domain_realms]DNS名とレルムのマッピングを設定しますAD連携に必要なkrb5.confの設定は次のようになります。}/etc/nsswitch.confを編集します。nisplusPAMの設定を行います。system-authは次のコマンドで対話形式に設定を行う事も可能です。細かい部分まで設定できませんの直接編集する必要性はあります。setup最後にKerberos認証に必要なチケットを取得するためにkinitを実行します。チケットの発行はDCで行われるためkinitの引数にWindowsサーバのドメイン管理者を指定します。cachedチケットの取得に成功したらnetでADドメインに参加します。ADドメインに参加するときは利用するプロトコルとしてadsを指定します。'AD-DOMAIN.LOCAL'以下のコマンドでwinbindを起動し、ユーザ情報の取得等を行なってみます。serversAD-DOMAIN+dnsadminsAD-DOMAIN+dnsupdateproxyAD-DOMAIN+passwordpropdenyAD-DOMAIN+unixgroupまたNSSの機能も含めてwinbindの動作を確認するにはgetentなどのコマンドを利用します。getentはシステムで利用可能なユーザ一覧をライブラリ経由で取得し端末上に表示します。ユーザ情報を取得するためにはpasswdオプションを指定します。グループ情報を取得する場合にはgroupオプションを使用します。