内容とは若干異なります。文中の【リスト】のリンクはJavaScriptを利用して別ウィンドウを開いています。JavaScriptが無効の場合は下記のリンクをご利用ください。Teamより正式リリースされました。前バージョンといえるSamba2.2.0が公開されたのが、2001年4月ですので、Samba3.0は約2年半ぶりのメジャーバージョンアップとなります。Samba2.2のマイナーバージョンアップでもさまざまな機能強化が行われてきましたが、今回のSamba3.0は実装も含めてSamba2.2から大きく変更されました。Samba3.0.0のリリースノートから、主要な機能強化を抜粋すると、以下のような項目があげられています。Directoryのメンバーサーバとなる機能のみ。NT4.0からのアカウント移行ツールのサポートNTドメインとの信頼関係の構築可能これらの機能のターゲットは、より大規模な環境においてSambaを導入するために必要とされてきた機能といえます。したがって、個人ユーザレベルでSamba3.0にバージョンアップするメリットはそれほど感じないかもしれませんが、組織内のファイルサーバやドメインコントローラとして導入する場合には、非常に有用な機能が追加されたいえます。Samba3.0の利用例そこで、Samba3.0を実際に導入したいと考えているユーザのために、Samba2.2から変更された点を中心に、Samba3.0の具体的な利用方法について、解説していきます。本稿では、これまでSamba2.2を利用してきたユーザのための解説を前提としているため、Samba2.2から変更されていない点に関しては詳細な説明は行いません。基本的な設定などは必要に応じて日本Sambaユーザ会(http://www.samba.gr.jp)などから提供されているSamba2.2のドキュメントなどを参照してください。Samba3.0のインストールLinuxディストリビューションでは、SambaはRPMなどのパッケージ形式で提供されていますが、今回はSambaをソースからインストールする方法で説明を行ないます。現在、Samba3.0は活発に開発が行われていて、頻繁にバージョンアップされていますので、ソースから導入する方法を覚えておけば、最新版を試しやすくなります。V2.1でインストールを行ないました。ライブラリの導入Samba3.0は、文字コードの変換にiconv()を利用します。iconvライブラリは、glibcに含まれているので改めて導入する必要は無いように思えますが、実際には日本語版Windowsの文字コードであるCP932とUnicode間のマッピングがWindowsとLinuxで異なるため、Sambaの利用時に問題が生じます。この問題を解決するために、glibcとlibiconv用のパッチが森山氏により提供され、glibcの2.3.2以降に取り込まれています。V2.1をはじめとして、現時点で利用可能なディストリビューションのほとんどで、この修正は取り込まれていませんので、ユーザが各自で導入する必要があります。導入方法としては、glibcを修正する方法と、パッチを適用したlibiconvを導入する方法がありますが、今回は他のアプリケーションへの影響が少ないlibiconvを導入する方法を説明します。iconv、libiconvのパッチhttp://www2d.biglobe.ne.jp/~msyk/software/glibc/http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.htmlまず、森山氏のページより、libiconv-1.8-cp932-patch.diff.gzをダウンロードします。ダウンロードしてください。libiconvの導入は、【リスト1-1】にしたがって行ってください。導入したlibiconvのライブラリは/usr/local/配下にインストールされます。Directoryを利用するには、krb5-libs、krb5-devパッケージが必要ですので、Sambaのコンパイル前に、パッケージがインストールされているかどうか確認しておきます。次にlibiconvライブラリを正常にリンクするためにBugzillaに登録されているパッチ(https://bugzilla.samba.org/show_bug.cgi?id=570)を適用してから、configureスクリプトを生成し直します。V2.1では、autoconf-2.53をインストールする必要がありますので、autoconf253-2.53-3.noarch.rpmを先にインストールしておきます。samba-3.0.2ではlibiconvのリンクの問題は修正されているため、上記パッチの適用が不要であり、あわせてautoconfのインストールも不要となります。次にconfigureを行いますが、本ドキュメントで説明している機能に関しては、特にオプションを付ける必要はありませんが、SWATの認証のために、--with-pamを追加すると良いでしょう。--help"で確認することができます。含まれており、生成される実行プログラムのサイズが大きくなりますので、make時にCFLAGSを指定してコンパイルを行います。samba-3.0.2では-gオプションは含まれませんので、CFLAGSを指定する必要はありません。/usr/local/sambaにインストールされます。Samba3.0のコンパイルsmb.confの設定Sambaの設定は、smb.confファイルで行います。ソースからインストールした場合は、/usr/local/samba/lib/smb.confに作成されます。RPMパッケージの場合は、/etc/samba/smb.confとなります。Samba3.0を日本語環境で利用する場合に設定すべきパラメータは次のものがあります。charsetSamba経由でLinuxに作成するファイル名のエンコーディングを指定します。EUCJP-MSを推奨します。charsetWindowsのファイル名のエンコーディングを指定します。日本語環境では、CP932を指定します。charsetSWATなどの表示で用いられるエンコーディングを指定します。CP932を推奨します。systemのパラメータは削除されました。それ以外の基本的な設定はSamba2.2と同じです。利用できないパラメータが含まれていないかどうかは、testparmコマンドを使うと確認できますので、設定後には必ずtestparmで確認しましょう。smb.confに設定可能なパラメータは大変多いため、詳細に関してはsmb.confのマニュアルを参照してください。前述の基本設定で、Sambaサーバをファイルサーバとして利用可能になりましたので、smbdとnmbdを起動しましょう。Sambaにアクセスするためには、Samba用のユーザアカウントを作成しなければなりません。Linuxのユーザアカウントを作成した後で、pdbeditコマンドに-aオプションを指定してSamba用のユーザアカウントを作成します。これでファイルサーバとしてアクセス可能になりますので、smbclientや、Windowsからアクセスして動作していることを確認します。WindowsからSambaサーバにアクセスグループマッピング機能Samba3.0では、WindowsのグローバルグループとLinuxのグループをマッピングすることが可能です。グループのマッピングは、netコマンドのgroupmapを利用します。groupmapには、add、delete、modify、listの操作があり、さらにマッピング対象を指定するために、ntgroup、unixgroup、sid、ridを指定することができます。TEAM"グループにユーザsuzukiを所属させる例を載せました。TEAMグループが表示されます。Windowsドメインの構築Windowsサーバは、ドメイン管理機能を提供します。ドメインを構築することでユーザ認証の処理をドメインコントローラと呼ばれるサーバに統一することができ、ユーザ管理の一元化が可能になるため、会社などの組織においては、ドメイン運用を行うことで、ユーザ管理コストの低減というメリットがあります。Directory機能の2種類があります。Sambaでは、Samba2.2からドメイン・コントローラの機能がサポートされていますが、Samba3.0ではドメイン関係の機能が特に強化されています。Directoryサーバの機能は提供しません。LDAPサーバとの連携や、Samba3.0で新たに追加されたドメインの信頼関係機能などを組み合わせることで、Samba2.2よりも大規模で柔軟なドメイン管理機能を実現しています。Samba3.0のドメイン関連機能この章では、Samba3.0によるドメインコントローラ構築の基本設定を説明し、さらにLDAPサーバと連携するドメインコントローラの構築方法について解説します。ドメイン・コントローラの基本設定ドメイン・コントローラには、プライマリ・ドメイン・コントローラ(PDC)と、バックアップ・ドメイン・コントローラ(BDC)の2種類があります。PDCはSAMと呼ばれるアカウント情報をBDCに複製しますが、Samba3.0ではWindowsとのSAMの複製はサポートしていません。このため、Samba3.0とWindowsを混在した形で、PDCとBDCを構築することはできません。Samba3.0をPDCとして構築するための設定を【リスト2-1】を参照しながら説明します。Samba3.0をPDCとして構築するためには、[global]セクションに次の設定を行う必要があります。levelローカルマスターブラウザ(LMB)機能(注釈1)を提供するマシンを決定するときの優先順位を決定するためのパラメータとして利用されます。Serverでは"32"が設定されています。SambaサーバをPDCとして構成するときは、"32"以上の数値を設定します。masterSambaのデーモン起動時に、LMB機能を選定する処理を実行するためのパラメータです。ドメインコントローラは、LMB機能を提供する必要があるため、"yes"を設定します。master複数のサブネット間でブラウズリストを交換するためのドメインマスターブラウザ(DMB)機能を提供するためのパラメータです。DMB機能を提供するサーバは、サブネット内のLMBとブラウズリストと呼ばれるコンピュータ一覧を交換しながら、ネットワーク全体のコンピュータ一覧情報を構築します。PDCを構築するときには、"yes"を設定します。securitySambaのユーザ認証の形態を設定するパラメータです。ドメインコントローラとして構成するときは、"user"を設定します。passwords"yes"を設定すると暗号化したパスワードで認証を行ないます。Samba3.0ではデフォルトで"yes"となっています。logonsドメインログオン機能を提供するためのパラメータです。PDCでは"yes"を設定します。backendWindowsのSAMに相当するアカウント情報を管理するためのバックエンドデータベースの形式を指定します。ldapsamなどから選択することが可能です。Samba2.2では、コンパイル時の指定により、smbpasswd形式か、ldapsam形式のどちらか一方しか選択できませんでしたが、Samba3.0では、このパラメータを設定することにより複数のバックエンドデータベースを利用することが可能となりました。Samba3.0でPDCとBDCの構築を行うときは、アカウント情報の複製を実現するために、LDAPのレプリケーション機能を利用することが推奨されており、このときには"ldapsam"を設定することになります。Sambaのドキュメントによるとユーザ数が250以上であれば、スケーラビリティの観点からldapsamを利用するように推奨されています。LDAPサーバの構築は複雑ですので、まずはPDCの基本設定を説明するために、バックエンドとしてtdbsamを利用してPDCを構築する方法について説明します。tdbsam形式には、smbpasswd形式よりも多くのパラメータをユーザごとに設定できるというメリットがあります。したがって、パラメータとして"tdbsam"を設定します。管理者のユーザ名とパスワードが必要になります。root以外のアカウントでドメイン参加が可能になります。"@グループ名"の形式で、グループを指定することもできます。作成することも忘れないようにしましょう。schannelドメインのメンバに対してデジタル署名を行った通信を可能にします。チャネルのデータをデジタル的に暗号化または署名する」という項目を無効にしなければ、Sambaのドメインに参加できませんでした。XPの設定変更は不要になります。デフォルトでは"auto"になっているので、明示的に設定する必要はありません。以上の設定を行ってSambaを起動すれば、Samba3.0をPDCとして利用することができます。ここでは、さらにいくつかのドメイン管理機能の利用を紹介しておきます。homeドメインログオンするユーザのホームディレクトリを指定します。driveドメインログオン時に、ホームディレクトリをネットワークドライブとして接続するドライブレターを指定します。"Z:"や"U:"などを指定します。pathユーザの移動プロファイルを格納する場所を指定します。移動プロファイルを利用すると、ドメインに所属するどの端末でも同じプロファイルを利用することが可能になりますが、ログオン時にプロファイルの転送が発生して、ログオンに時間がかかったりすることもあります。通常は、"\\%N\%U\profile"など、%Uマクロを利用して、ユーザごとに異なるディレクトリとなるように設定します。"と何も指定しない設定を明示的に設定することに注意しましょう。scriptユーザがドメインにログオンしたときに実行するログオンスクリプトを指定します。ログオンスクリプトは、改行がCR/LFとなっているDOSの書式で作成し、NETLOGON共有のディレクトリに配置しておきますPDCの起動これらの設定を完了したら、ユーザに提供する共有フォルダや、共有プリンタの設定を行っておきます。profile用の共有や、NETLOGON共有のディレクトリなども忘れず作成しておきましょう。全ての設定を完了したら、smbdとnmbdを起動します。このとき、ネットワーク内に同じドメイン名が設定されたドメインコントローラが稼働していると、そのドメインコントローラの動作に影響を与えてトラブルのもととなるので、ドメイン名の設定に注意しましょう。ユーザ管理ユーザ情報の管理は、smbpasswdコマンド、pdbeditコマンドのどちらかを利用します。バックエンドデータベースとしてtdbsam形式を選択したときには、smbpasswdで設定できないパラメータもありますので、ユーザ管理にはpdbeditコマンドを利用しましょう。ユーザアカウントの作成tdbsam形式で運用するときには、Linuxのuseraddコマンドでユーザアカウントを作成してから、Sambaのユーザアカウントを作成します。Sambaのユーザアカウント作成は、pdbeditに-aオプションを指定し、ユーザの初期パスワードを設定します。Nameの設定を行ったり、-pオプションでプロファイルの格納パスを指定することができます。homeのデフォルト値は、smb.confに設定したパラメータが設定されます。ユーザアカウントの削除pdbeditに-xとユーザ名を指定して、ユーザアカウントを削除することができます。ユーザアカウントの確認pdbeditに-Lオプションを指定すると、登録されているユーザ一覧を取得することができます。pdbeditに-Lと-vオプションを指定すると、それぞれのユーザアカウントの詳細情報を一覧で取得することができます。特定のユーザの詳細情報だけ取得したいときには、さらにユーザ名を付けることで可能です。-wオプションを指定することで、smbpasswd形式でユーザアカント情報を出力することも可能です。ユーザパスワードの設定ユーザアカウント作成後のユーザパスワードの変更は、従来通りsmbpasswdコマンドを用います。admin"パラメータで指定したドメイン管理者を作成し、パスワードを設定しておきます。ドメイン管理者の登録マシンアカウントの登録ユーザのクライアントをドメインに参加させるには、マシンアカウントをドメインに追加しなければなりません。クライアントがWindows95/98/Meの時は必要ありません。ユーザアカウントと同様で、最初にuseraddコマンドでコンピュータ名をLinuxのユーザ情報に追加します。このときには、ユーザ名として'コンピュータ名$'を登録します。続いて、pdbeditコマンドで、-mオプションを指定してマシンアカウントを登録します。マシンアカウントの登録Windowsクライアントの操作マシンアカウントの登録が完了すれば、それぞれのクライアントをドメインに参加させることが可能になります。Professionalの場合は、次の操作を行ってドメインに参加します。「コントロールパネル」の「システム」から、「コンピュータ名」のタブを選択します。「変更」をクリックして、ドメイン名を入力します。ドメイン名の入力Sambaに設定したドメイン管理者のユーザ名とパスワードを入力します。ドメイン管理者の入力ドメイン参加に成功したメッセージが表示されます。以上の操作を、ドメインに参加する各クライアントごとに実施してください。ユーザのパスワード変更ユーザは、ドメインログオンしているWindowsクライアントから、パスワードの変更を行うことができます。ドメインログオンしている状態で、「CTRL」+「ALT」+「DELTE」を同時に押し、画面2-5を表示します。「パスワードの変更」を選択し、「古いパスワード」、「新しいパスワード」、「新しいパスワード確認入力」にそれぞれパスワードを入力します。パスワードが変更されれば、画面2-6が表示されます。信頼関係の構築Samba3.0の新機能として、ドメイン間の信頼関係の構築が可能になりました。ドメイン間で信頼関係を結ぶことによって、それぞれのドメインに登録されたユーザが、互いのドメインのリソースを利用可能になります。リソースを利用可能にするためには、次の手順にて「信頼される側(trusted)のドメイン」アカウントを作成しなければなりません。リモートのドメイン名(NTTEST)を用いて、Linuxのユーザアカウントを作成します。smbpasswdコマンドの-iオプションを指定して、trustedドメインアカウントを作成します。このときに要求されるパスワードは任意に設定して構いませんが、後程信頼関係を結ぶ操作で必要となります。trustedドメインアカウントをpdbeditコマンドで確認して、Iフラグが設定されていることを確認します。「信頼される側のドメイン」の「追加」ボタンをクリックすると、アカウント名とパスワードの入力画面が表示されますので、Sambaのドメイン名と、trustedドメインアカウント作成時に設定したパスワードを入力します。信頼関係の確立に成功すると、成功したメッセージが表示されます。信頼関係を相互に結ぶためには、「信頼する側(trusting)のドメイン」としてSambaのドメインを登録しなければなりません。ドメインを追加します。「追加」ボタンをクリックすると、ドメイン名と、パスワードの入力画面が表示されるので、Sambaのドメイン名と、任意のパスワードを入力します。「信頼する側のドメイン」にSambaのドメインを追加したら、Sambaサーバ上で、netコマンドを使用して、信頼関係を結ぶ作業を行います。コマンド実行時に要求されるパスワードには、「信頼する側のドメイン」の操作で設定したパスワードを指定します。信頼関係が確立されると、「Success!」のメッセージが出力されます。前述の操作で、ドメイン間の信頼関係を結ぶことができましたが、実際に信頼関係を利用してSambaサーバで別ドメインのユーザ認証を行おうとすると、ユーザ認証に失敗します。Serverに登録されたユーザのLinuxアカウントが、Samba側に登録されていないためです。このままでは、せっかく信頼関係を結んでも、それぞれのドメインにそれぞれのユーザアカウントを作成しなければならなくなり、信頼関係の機能としては不便です。そこで、Samba3.0では、winbindの自動ユーザ作成機能を利用することで、ユーザ管理の手間を削減できるようになっています。Modules)機能といったユーザ情報の管理機能に、winbind用モジュールを追加することで、機能を追加します。そのために、まずライブラリの導入から行います。Samba3.0をコンパイルしたディレクトリのnsswitchディレクトリに、libnss_winbind.soが作成されていますので、/libディレクトリにコピーし、ldconfigコマンドで有効にします。winbindライブラリのインストール続いて、NSSがwinbindモジュールを利用するように/etc/nsswitch.confを修正します。ように行なってください。nsswitch.confファイルの設定smb.confの修正winbindを動作させるために必要ないくつかのパラメータがありますので、smb.confに設定します。uidwinbindによって、自動的に割り当てられるユーザID。重複しない値に設定しておきます。gidwinbindによって、自動的に割り当てられるグループID。重複しない値に設定しておきます。templatehomedir自動的に作成されるユーザのホームディレクトリ。%Uなどを利用して、ユーザごとに別のディレクトリを指定するのが一般的です。shellwinbindによって自動的に作成されるユーザのログインシェル。Linuxにログインする必要が無ければ、/bin/falseを設定しておいても構いません。以上の設定で、winbindを利用するための設定が完了したので、さっそくwinbinddを起動しましょう。Samba3.0では、winbindの性能向上のため、winbinddのデュアルデーモンモードがデフォルトとなっていて、winbinddのプロセスが2つ起動します。winbinddの起動winbind機能の確認winbindが動作していることを確認するには、getentコマンドを利用するのが簡単です。passwd"を実行すると、Linux上で利用可能なユーザ一覧を取得できます。winbind経由で取得したユーザアカウントは、"ドメイン名\ユーザ名"の形式で表示されます。group"で行います。このようにして自動に作成されたWindowsアカウントとLinuxアカウントのマッピング情報は、"/usr/local/samba/var/locks/winbindd_idmap.tdb"ファイルに格納されています。このファイルを削除してしまうと、マッピング情報が失われるので気を付けましょう。後述するLDAP連携機能を利用すると、マッピング情報をLDAPに格納することも可能となります。winbindの動作確認このようにして信頼関係のあるドメインのユーザ情報が取得できるようになれば、他のドメインのユーザであっても、簡単にSambaサーバのリソースを利用できます。システム管理者も、他のドメインのユーザのためにわざわざユーザ登録を行う必要が無くなりますので、信頼関係を利用しようと思った時には、必ずwinbindも一緒に活用しましょう。PAMモジュールの設定ここまでの説明で理解できたと思いますが、winbindの機能のポイントは、LinuxのユーザアカウントをWindowsのユーザ情報から自動で作成できることです。そこで、せっかく作成できたユーザ情報を、Sambaだけではなく、その他のアプリケーションからも活用したいと思います。そのためには、winbindのPAMモジュールを設定して、ユーザ認証を可能にしなければなりません。Sambaのコンパイル時には、PAM用のモジュールが作成されないため、nsswitchディレクトリにモジュールを作成し、PAMのライブラリのディレクトリにコピーを行いましょう。続いて、PAM認証で、winbindが利用されるように、/etc/pam.d/配下のPAMの設定ファイルを変更します。設定ファイルは、PAM認証を利用するアプリケーションごとに用意されていますが、多くのアプリケーションは、system-authファイルを参照するように設定されていますので、今回はsystem-authファイルにpam_winbind.soを利用するように設定します。以上の操作で、例えばsshからのログインで、Windowsのユーザアカウントとパスワードを利用できるようになりますが、このときのユーザ名は"ドメイン名\ユーザ名"を利用しなければなりません。separator"の設定で区切り文字を別の文字に変更することができます。separatorの変更このようにして、winbindを利用することでユーザ管理の手間を減らすことができますが、Samba3.0ではその他のモードにおいてもwinbindの利用範囲が広がっています。前述のプライマリ・ドメイン・コントローラとして動作しているときに、winbindと組み合わせると、ドメインに参加するマシンのマシンアカウントを自動で作成することが可能になりますので、前もってマシンアカウントを作成しておく必要が無くなります。自動で作成されたアカウント情報は、pdbeditコマンドによって操作することが可能です。Protocol)は、データの参照、検索に特化したデータベースであるディレクトリサービスのためのアクセスプロトコルです。ディレクトリサービスとは、DNSや電話帳のように、あるキーをもとに関係する情報を提供するサービスです。v3に準拠したLDAPサーバ製品が多数提供されています。v3に準拠したオープンソースのLDAPサーバであり、多くのLinuxディストリビューションに標準で含まれています。LDAPサーバは、ユーザ情報の統合管理に用いられることが多く、シングル・サインオンと呼ばれるユーザ情報の一元化のための中心として用いられます。Samba2.2からLDAPサーバとの連携によって、SambaのユーザアカウントをLDAPに格納できるようになりましたが、Samba3.0ではさらにLDAPサーバとの連携機能が強化されました。SambaとLDAPサーバを連携すると、SambaによるWindowsのユーザ管理と、LDAPによるLinuxのユーザ管理を統合することができ、システム管理者がユーザ情報の一元管理を実現することを可能にしています。2.0とSamba3.0を連携してドメインコントローラを構築する方法を説明します。今回説明するのは、一番基本的な構成で、1台のサーバに、SambaのPDCとLDAPサーバを構築します。SambaとLDAPの両方を間違いなく設定する必要がありますので、一つずつ確認しながら設定を行ってください。今回のシステム構成LDAPサーバの設定それではまず最初にLDAPの設定を行います。LDAPサーバの設定は、/etc/openldap/slapd.confファイルで行います。Sambaとの連携を行うためには、次の項目を設定してください。スキーマの設定LDAPでは、利用するオブジェクトを定義するために、スキーマを定義する必要があります。LDAPでSambaのユーザ管理を行うためには、Sambaが利用する属性(Windows用のパスワードや、プロファイルの格納場所など)を利用できるように、Samba用のスキーマを定義しなければなりません。OpenLDAP用のSambaのスキーマファイルが、Samba3.0のソースに含まれているので、OpenLDAPのschemaディレクトリにコピーし、OpenLDAPの設定ファイルにスキーマファイルの設定を追加してください。スキーマの設定suffixの設定LDAPのデータはツリー構造で管理しますが、suffixは、その管理構造の頂点を表します。通常は、ドメイン名をベースに命名します。LDAPの各エントリは、識別子(DN)と呼ばれます。今回のLDAPのデータ構造は図4-3のように構成しますので、suffixの設定は、次のようになります。"dc=miraclelinux,dc=com"管理者ユーザの設定LDAPサーバを管理する特権ユーザの設定を行います。rootdnには、特権ユーザの識別子(DN)を指定します。rootpwパラメータに特権ユーザのパスワードを設定します。プレインパスワードも設定できますが、セキュリティの観点からMD5などの形式で暗号化したパスワードを設定するようにしましょう。暗号化したパスワードを生成するには、slappasswdコマンドに、-hオプションと暗号化の形式(MD5やSHAなど)を指定して実行すると、入力したパスワードを暗号化した文字列が表示されます。暗号化パスワードの生成アクセス制限の設定LDAPのユーザ情報には、Windows用のパスワードと、Linux用のパスワードの両方の情報が格納されます。これらのパスワードは同期する必要があるので、パスワードの変更操作をSamba経由に制限しておく必要があります。Sambaは管理者権限でLDAPサーバにアクセスするので、パスワード情報に関しては管理者のみ書き換え可能としておきます。対象となる属性は、Windows用のパスワードを格納するSambaLMPassword属性と、SambaNTPassword属性、そしてLinux用のパスワードを格納するuserPassword属性です。LDAPのアクセス制限は、/etc/openldap/slapd.confファイルにaccessオプションを指定して行ないます。以上の設定を完了したら、LDAPサーバを起動します。マシン起動時にLDAPサーバが開始するように、chkconfigコマンドで起動の設定を行ないます。LDAPサーバの起動Sambaの設定SambaとLDAPを連携するときには、smb.confにLDAPにアクセスするための設定を追加しなければなりません。backendパラメータにldapsamの指定と、LDAPサーバのアドレスを指定します。LDAPサーバの設定を変更して、SambaとLDAPサーバ間の通信を暗号化することも可能です。そのときには、ldap://[LDAPサーバ]のかわりに、ldaps://[LDAPサーバ]として指定します。suffixslapd.confと同じsuffixを指定します。ldap関係の設定の注意点として、パラメータを"(ダブルクオート)などで囲むと正常に動作しませんので、設定値だけを記述してください。suffixSambaのユーザ情報を格納するLDAPツリーの位置を指定します。suffixパラメータを基準とした相対位置を指定します。suffixSambaのグループ情報を格納するLDAPツリーの位置を指定します。suffixマシンアカウント情報を格納するLDAPツリーの位置を指定します。dnSambaがLDAPから情報を取得するときに、このパラメータに設定したLDAPの管理者権限を利用します。dnと同じ識別子を指定しておきましょう。LDAPシステムでは、Linuxアカウントのユーザパスワード(userPassword属性)と、Windows用のパスワード(sambaLMPassword属性とsambaNTPassword属性)をまとめて管理します。ユーザがWindowsクライアントからパスワードの変更を行うと、Windows用のパスワードが変更されます。このままでは、Linuxにログインするときのパスワードと、Windowsにドメインログオンするときのパスワードの不一致が発生するため、利便性を考えるとLinuxアカウントのパスワードも同期すべきです。そこでこのパラメータにYesを設定しておくと、Linuxのパスワードの同期を行うことが可能になります。gidwinbindの設定でも説明しましたが、自動的にアカウントを作成したときに割り当てるuid、gidの範囲を指定します。システムで未使用の領域を割り当てるようにします。groupwinbindでユーザを自動作成したときに、ユーザに割り当てる所属グループの設定です。デフォルト設定ではnobodyグループの所属として作成されますが、別のグループとしたい場合に設定を行ないます。その他、第2章のドメインコントローラの設定、第3章のwinbind関連の設定なども同様に設定しておきます。説明したとおり、SambaはLDAPの管理者権限でLDAPサーバに接続します。そのためLDAPの管理者のパスワードをどこかに設定しておく必要がありますが、smb.confに直接パスワードを記述したくありませんので、smbpasswdコマンドの-wオプションを用いてsecrets.tdbファイルに管理者パスワードを設定する仕様になっています。この操作を忘れるとLDAPサーバから全く情報を取り出せないので必ず実行してください。-wを実行しなければならないことを忘れないでください。以上の設定を完了したら、Sambaを起動します。このときに第3章で説明したwinbindの設定も済ませて、winbinddを起動することも忘れないようにしましょう。Module)の設定を行う必要があります。winbindの場合は手動で設定を行いましたが、LDAPの場合はauthconfigコマンドを利用すると簡単に行なえます。authconfigコマンドでは、winbindの設定が消されてしまうため、LDAPの設定をした後で、NSS、PAMともに設定を一部変更する必要があります。LDAPサーバが停止していると、rootユーザすらログインできなくなってしまうため、PAMのsystem-authにauthinfo_unavail=ignoreの設定を追加しておきましょう。変更点は、【リスト4-7】、【リスト4-8】を参照してください。変更後に、いったんLDAPサーバを停止した状態で、rootでログインできることだけ確認しておきましょう。PAMのLDAP設定smbldap-toolsのインストールSambaとLDAPを連携するときには、Samba3.0に同梱されているsmbldap-toolsを利用すると、LDAPでのユーザ管理操作などを簡単にすることができます。PerlモジュールのインストールSamba3.0のsmbldap-toolsは、PerlのNet::LDAPモジュールを必要とするので、まず最初にPerlのモジュールをインストールします。LDAPモジュールを導入するためには、依存するいくつかのモジュールを導入する必要がありますので、下記の手順で導入してください。http://search.cpan.orgより下記のモジュールを検索し、ダウンロードします。(モジュールによってはバージョンアップしていることもあるでしょう。)Authen-SASL(Authen-SASL-2.04.tar.gz)Convert-ASN1(Convert-ASN1-0.18.tar.gz)IO-Socket-SSL(IO-Socket-SSL-0.95.tar.gz)XML-NamespaceSupport(XML-NamespaceSupport-1.08.tar.gz)XML-SAX(XML-SAX-0.12.tar.gz)perl-ldap(perl-ldap-0.29.tar.gz)次の順番でモジュールをインストールします。IO::Socket::SSLXML::NamespaceSupportXML::SAXAuthen::SASLConvert::ASN1Net::LDAPそれぞれのモジュールは、次の手順でインストールします。smbldap-toolsは、/usr/local/sbinにインストールすることが仮定されていますので、その他の場所にインストールする場合には、何箇所かスクリプト内部を変更する必要があります。smbldap_conf.pmには、LDAPの管理者パスワードを設定する箇所があるので、一般ユーザが参照できないようにモードを変更しておきます。続いて、smbldap-toolsを利用するために、smbldap_conf.pmの設定を行います。以下では、smbldap_conf.pmに登場するパラメータの順番に説明を行います。設定が完了したSambaを起動した状態で、netコマンドによってドメインSIDを取得し、$SIDのパラメータとして設定します。suffixに設定したsuffixを設定します。suffix"に設定した識別子を利用するので、それぞれPeople、Computers、Groupsを設定しておきます。$hash_encryptの設定Linux用のパスワードの暗号化方式を指定します。MD5形式なので、MD5を設定しておきます。dnに設定した管理者の識別子を設定します。$bindpasswdの設定LDAPのslapd.confのrootpwに設定したパスワードを指定します。プレインテキスト形式のみが許されるので、slapd.confにMD5形式などで設定しているとしても、プレインテキスト形式で設定してください。$_userLoginShellの設定ユーザを追加するときの、デフォルトログインシェルを設定します。$_userHomePrefixの設定ユーザを追加するときの、デフォルトホームディレクトリのPREFIXを設定します。takedaのホームディレクトリは、/home/takedaとして作成されます。$_userSmbHome、$_userProfileの設定ユーザを追加したときに、Windowsユーザのデフォルトホームディレクトリ、および移動プロファイルの格納場所として設定されます。$_userHomeDriveの設定ドメインログオン時にホームディレクトリを割り当てるドライブレターを指定します。$smbpasswdのパスの設定デフォルトでは、/usr/bin/smbpasswdに設定されていますので、今回は、/usr/local/samba/bin/smbpasswdに変更します。smbldap_conf.pmの設定例slappasswdのパスの設定smbldap-passwd.plにパスワードの暗号化のために、slappasswdコマンドを利用する箇所がありますが、パスが指定されていないため、実行環境によってはパスワードの変更に失敗することがありますので、次のように修正しておきましょう。'$pass'`;初期ユーザアカウントの登録smbldap_conf.pmの設定を全て完了したあとに、LDAPに初期データを登録します。初期データの登録は、smbldap-populate.plのスクリプトで行ないます。このスクリプトでは、ドメイン管理ユーザや、いくつかのグループなどを登録します。正常に登録できると、【リスト4-12】のように登録されたエントリが表示されます。初期データの登録で、ドメイン管理者用としてAdministratorユーザが登録されています。usersパラメータを設定します。Administratorドメインにマシンを参加させる際に必要となりますので、ドメイン管理者のパスワードを設定しておきます。LDAPシステムの導入は完了です。初期設定は完了しましたので、LDAPを運用することが可能になりました。ユーザの作成・削除・変更ユーザの作成は、smbldap-useradd.plで行います。-aオプションを付けて、Sambaアカウントを作成しましょう。ユーザのパスワードの設定は、smbldap-passwd.plで行います。ユーザ情報の参照は、smbldap-usershow.plにユーザ名を指定することで可能です。ユーザ情報の変更は、smbldap-usermod.plに、パラメータごとのオプションを指定して行います。指定できるパラメータは-hオプションで確認できます。Samba用の属性に関しては、pdbeditで変更することもできますが、Linux用のアカウントに関する属性は変更できないため、smbldapコマンドを利用するほうが便利です。LDAPのユーザ管理マシンアカウントの登録ユーザの端末をドメインに参加させるためには、マシンアカウントを登録しておく必要があります。マシンアカウントの登録は、smbldap-useradd.plに-wオプションと、'コンピュータ名'を指定して行います。一般ユーザはパスワードの変更を、次の2つの方法で行うことができます。syncパラメータを設定しておくことを忘れないようにしましょう。Windowsサーバでドメイン運用しているネットワーク環境にSambaを導入するときには、ドメインメンバーとして参加させます。ドメインメンバーとして参加した場合、ユーザ認証はドメインコントローラで行われるため、ユーザのパスワード管理などをSambaサーバで行う必要が無くなり、ファイルサーバの追加の場合などには便利です。Directoryへの参加が可能になりました。ドメインへの参加NTドメインへの参加まず最初にsmb.confの設定を行ないます。第3章で説明したwinbindの設定も行っておきましょう。workgroup参加するドメイン名を設定します。securityユーザ認証をドメインコントローラに委託するときは、domainを指定します。serverパスワードの認証を行うサーバのIPアドレスか、'*'を指定します。'*'を指定した場合、ネットワーク内のドメインコントローラを検索して認証を行いますので、PDCが停止しているような場合でも、BDCによる認証が可能になります。smb.confのドメインメンバ設定smb.confの設定が完了したら、netコマンドを使って、ドメインに参加しましょう。domain"のメッセージが表示されれば、ドメインの参加は成功しています。ユーザとコンピュータ」の画面で、コンピュータアカウントが登録されていることを確認できます。コンピュータアカウントの確認あとは、smbd、nmbd、winbinddを起動すれば、ファイルサーバとして利用可能になります。Samba3.0では、winbindのアカウント自動作成機能を利用できますので、Sambaサーバ側で特にユーザアカウントを管理する必要が無く、適切な初期設定だけで運用することができます。Directoryにメンバーサーバとして参加できるようになりました。Directoryに参加させる方法を紹介します。Directory機能を利用するためには、Sambaが、KerberosとLDAP機能を有効にしてコンパイルされている必要があります。Directoryの連携を試す前に、lddコマンドなどで、きちんとコンパイルされているか確認しておきましょう。Kerberosや、LDAPライブラリをリンクしていないようであれば、krb5-devel、krb5-libsや、openldap、openldap-develといったパッケージが入っていることを確認してから、再コンパイルしましょう。Directoryと連携するときには、次のパラメータを設定します。Directoryのドメイン名を指定します。レルムは、全て大文字で設定しておきます。Directory連携機能を利用するときには、adsを指定します。DirectoryサーバのIPアドレスを指定します。次にKerberosの設定を行います。設定ファイルは、/etc/krb5.confです。Directoryサーバのドメインを設定します。smb.confのrealmパラメータと同じで、大文字で設定します。relamsレルム内で、チケットの発行を行うサーバを指定します。Directoryのドメインコントローラが該当するので、FQDNで指定しておきます。テスト環境などの理由で、DNSを使ってホスト名を解決できない場合、/etc/hostsにIPアドレスとFQDNの対応を設定しておきましょう。時刻同期の確認Kerberosでは、チケットの有効期限などでシステムの時刻が重要な要素となっています。したがって、Windowsサーバと、Sambaサーバの時刻が同期されていることを確認しておきましょう。smb.confを設定した後であれば、Windowsサーバの時間はnetコマンドで確認することができるので、Linuxのdateコマンド等で時刻を調整しておきましょう。サーバの時刻確認kinitの実行smb.conf、krb5.confの設定が完了したら、kinitコマンドを実行します。kinitコマンドは、Kerberos認証に使われるチケットを受け取るためのコマンドです。ようにエラーとなります。この場合には、Administratorのパスワードをいったん変更してから、kinitを実行してください。チケットの取得を確認するためには、klistコマンドを実行します。Directoryに参加するだけです。Directoryに参加するときには、netコマンドのプロトコルとしてadsを指定することに気を付けましょう。問題無く参加できれば、"Joined"のメッセージが表示されます。ユーザとコンピュータ」から確認すると、コンピュータのプロパティに「DNS名」が設定されていることが、NTドメインの参加と異なることが分かります。Directoryに参加できたら、smbd、nmbd、winbinddを起動しましょう。これまで何度も説明してきたように、winbindのアカウント自動作成機能が有効になっていれば、Linuxアカウントも作成済となっていますので、すぐにSambaサーバを利用可能となります。NT4.0の代替として、ドメイン構成を変更せずにそのまま置き換えることが可能になりました。vampire機能を利用することで、ユーザ情報の移行も大変簡単になっています。vampire機能を使ってNT4.0サーバから、Samba3.0へ移行する手段を紹介します。vampire機能は、Samba3.0をドメインのBDCとして構成し、PDCからアカウント情報のコピーを受け取る機能と思えば良いでしょう。Serverを停止し、SambaサーバをPDCとして構築することで、サーバの置き換えが完了します。Samba2.2でNT4.0のドメインから移行しようとすると以下のような手順が必要でした。Server上でユーザのアカウント情報の収集、グループ情報の収集、パスワード情報の収集Linuxサーバ上で移行先のLinuxアカウントの作成、Sambaアカウントの作成Samba3.0では、移行にかかわる作業を全てLinux側で行うことが可能となり、非常に使い勝手が良くなりました。Serverのアカウント情報を移行するのは非常に簡単です。第2章のドメインコントローラの構築と、第3章のwinbindの導入にしたがって、最終的に構築したいPDCとしてsmb.confのパラメータを設定しておいてください。移行において、winbindも必要となりますので忘れず設定しておいてください。移行時にはBDCとして振舞う必要があるので、次のパラメータの設定に気を付けましょう。Serverが稼働しているドメイン名を設定します。masterのパラメータをnoに設定しておきます。levelは、PDCよりも低くなければならないので、32未満を設定します。Serverのドメインに参加します。このとき、smbdやnmbdは稼働する必要はありません。次にアカウント情報の移行を行いますが、移行のためにLinux用のアカウントを作成する必要があります。Samba3.0ではwinbindによってLinuxのアカウントを自動作成するようにしておけば、簡単にアカウントの移行をすることができます。そこで、winbinddだけ起動しておきましょう。最後に、netコマンドのvampire機能によってユーザ情報を移行します。winbindによって自動作成されるLinuxのユーザアカウント情報は、/usr/local/samba/var/locks/winbindd_idmap.tdbに格納されています。tdbsam形式のSambaのユーザアカウント情報は、/usr/local/samba/private/passdb.tdbに格納されています。アカウントの移行に失敗した時には、winbinddを停止してから、これらのファイルを削除すれば、データの入っていない状態に戻すことができます。tdbsamでのアカウントの移行LDAPへのアカウント情報の移行LDAPにアカウント情報を移行する場合は、第4章で説明したLDAPとSambaの設定を行っておきます。ここではtdbsamの手順と異なる点だけ説明します。ユーザ管理スクリプトLDAPにデータを移行する際に、Linuxのユーザアカウント情報を作成するために、smbldap-toolsのコマンドが実行されるように設定しておきます。ユーザ管理スクリプトの設定アカウント情報の移行LDAPサーバとSambaサーバの設定が完了したら、LDAPサーバだけを起動し、smbldap-populate.plコマンドで、初期データの登録を行います。このとき、-bオプションを指定し、guestアカウントとして、Guestを作成しておきます。Serverからアカウント情報を取得するときに重複してエラーとなりますので、アカウントを削除しておきます。次に、Sambaが動作していない状態で、netコマンドでドメインに参加します。Serverの管理者のパスワードを入力します。最後に、netコマンドのvampire機能を使って、ユーザをLDAPに登録します。以上でデータの移行は完了です。masterを変更して、Sambaサーバを起動します。LDAPサーバのアカウント情報は、/var/lib/ldap/に格納されていますので、やり直したいときは、LDAPサーバを停止してから、/var/lib/ldap/配下のファイルを全て削除してください。その後、LDAPサーバを再起動して、smbldap-populate.plの手順から再度実行します。アカウントの移行ページトップへ■この資料の評価をお願いします。参考になった参考になったどちらでもないあまり参考にならなかったまったく参考にならなかったコメントがある場合は以下に記述してください。技術資料として取り上げてほしいテーマも受け付けています。