Samba の再構築

AD 対応の samba を作る


ActiveDirectory と samba

 我が家のネットワークは Windows Server による ActiveDirectory(以下 AD と表記)が組まれています。FileServer には、Windows 2000 Server を用いていたことから、ドメイン環境による、認証情報の一元管理を行うようにしています。提供している総容量は 1TB となっていましたが、ボリュームセットによる構成としていたため、実際には5台の HDD を合わせてつかっての総容量となっていました。ボリュームセットは、容量を簡単に増加させることが出来る、というメリットもありますが、その一方で、容量を減少させることは出来ない、とデメリットも併せ持ちます。

 一般的にディスク容量は、あればあるほど有難いわけです。では、なぜ容量の減少が必要になるのでしょうか?これは、HDD の交換の際に必要となります。

 ボリュームセットは、拡張することができるため、不足した時点で HDD を買い足しすることで容量を増やせます。しかし、一度ボリュームセットに入れてしまうと、ボリュームセットから外すことが出来なくなります。ボリュームセットを最初に構成した HDD は、使用時間の増加と共に痛んできます。そして、不幸にも飛んでしまった場合、その HDD をボリュームセットから、外すことができません。さらに、ボリュームセット全体としての構成が保てないことにより、他の生きている HDD 上のデータまでも失うことになります。ボリュームセットは、行きはよいのですが、戻ることの出来ない片道切符となってしまうのです。

 ということで、我が家のボリュームセットも、構成している HDD の一台が死亡したことにより、崩壊してしまいました。このため、File Server の組み直しが必要となりました。一般的には、Windows で組み直すのですが、そうはせず、Linux での File Server 構築を行うことにしました。元々、現状の File Server を組むときに、Linux を用いるはずだったのですが、HDD を接続したインターフェイスが SATA を用いたところ、Linux で認識させることが出来なかったため、やむなく Windows Server になったので、リターンマッチ、というところです。基本的に File Server は、初期設定こそ GUI が有難いものの、運用中には必ずしも GUI は必要ではなく、早々変更する部分もありませんので、CUI でも十分対応可能といえます。使用しているハードウェアが古い(苦笑)ため、あまり OS にリソースを割り当てしたくない、という意味もあったりしました。

 File Server として使う時には、ユーザー認証をどうするか、という問題があります。Windows 環境であれば、ドメインコントローラによる認証が使えるわけですが、そのままでは Linux マシンからドメインコントローラにユーザー認証を依頼することはできません。Windows のファイル共有サービスである Samba には、Windows ドメインによるユーザー認証が可能なのですが、Vine Linux 付属の Samba は、AD 対応オプションでコンパイルされていないため、そのままでは使えない、という問題が生じてくることになりました。

 問題はもう一つ、実はこれが非常に深刻でした。それは、Samba を AD 対応にする際に使用するライブラリのうち、kerberos 関係のライブラリが Vine Linux では提供されていない、ということでした。Windows ドメイン認証は kerberos で行われるのに、肝心のライブラリがない、ということで、単に Rebuild するだけではすまない、という問題が、なかなか大きな問題でした。

kerberos の入手

 技術力はない(笑)ので、ひたすら Google さまにお伺いを立てたところ、運の良いことに、Vine Linux 用の kerberos パッケージを公開してくだっている方を見つけることに成功しました。krb5 binary package for Vine 4.1 から入手してください。rpm ファイルとなっていますので、rpm -ivh でインストールします。

Samba の Rebuild

 kerberos が用意できたので、Samba を rebuild するわけですが、そのまま Rebuild しても、配布パッケージと何ら変わりません。やらなければならないことは、AD サポート付きの Samba パッケージの構築ですから、少なくとも、コンパイルオプションについては、変更して Rebuild する必要があります。Vine Linux の Samba ソース(samba-3.0.23d-0vl1.2.src.rpm)を入手します。このときは、ftp サーバーから入手しました。

 入手した src.rpm ファイルを rpm -ivh でインストールします。ソースパッケージは、インストールすると、/usr/src/vine/ 以下にインストールされます。AD サポート付きにするためには、コンパイルオプションに --with-ads を追加する必要があります。rpm ファイルでは、コンパイルオプションは spec ファイルに記述されていますので、これを編集することになります。spec ファイルは /usr/src/vine/SPEC に samba3.spec という名前で存在しています。

 spec ファイルは、RPM システムの根幹を支えるファイルで、RPM コマンドにおいて、ファイルをどう扱うか、ということを制御しています。このため、どこにファイルを保存するか、どのようなパッチを当てるか、どのようなコンパイルオプションを使うか、インストール前に必要な処理はなにか、インストール後に必要な処理はなにか、依存関係にあるファイルはなにか、ということがまとめて記述されています。ある意味、設計図にも匹敵するものといえます。世の中にある rpm ファイルは、この spec ファイルを作成して、rpm コマンドに処理させることで作成されます。従って、rpm ファイルが用意されていないパッケージであっても、spec ファイルを作成し、rpm コマンドで処理すると、rpm ファイル化することができます。

 spec ファイルにはいろいろな情報が含まれていますが、コンパイルオプションは %configure セクションに記述されています。\ 記号は、行の連結することを意味しています。\ を記載することで、一行が長くなってしまうことを防いで、読みやすい記述を可能にしています。記述する順番は、対象となるファイルをコンパイルする際の順に合わせます。今回は、最終のオプションである --enable-cups の直前に追記します。このまま変更した spec ファイルを保存すると、基本的作業は終了するのですが、もう一カ所変更しておきます。それは、パッケージ名の変更です。私家版となったパッケージは、オリジナルパッケージと区別するために、生成されるファイル名を変更しておくことをお勧めします。そうすると、うっかり apt-get update した場合にも、私家版パッケージが残ります。ファイル名は、%define docpkg 1 セクションで定義されています。変更するのは、Release 変数で、私家版パッケージを示すように、自分のイニシャルなどを入れておくと、区別がしやすいと思います。わたしは TK を付記して、

 spec ファイルの編集が終了したならばいよいよコンパイルです。カレントディレクトリを /usr/src/vine/SPECS にセットして、rpm -bb samba3.spec を実行します。必要な環境がそろっていれば、数分後にコンパイルが完了し、/usr/src/vine/RPMS に作成された rpm ファイルが出来ています。samba パッケージをコンパイルすると、次の5つのパッケージが生成されます。

  samba-3.0.23d-0vl1.2TK.i386.rpm
  samba-client-3.0.23d-0vl1.2TK.i386.rpm
  samba-common-3.0.23d-0vl1.2TK.i386.rpm
  samba-doc-3.0.23d-0vl1.2TK.i386.rpm
  samba-libsmbclient-3.0.23d-0vl1.2TK.i386.rpm
  samba-libsmbclient-devel-3.0.23d-0vl1.2TK.i386.rpm
  samba-swat-3.0.23d-0vl1.2TK.i386.rpm

Active Diretory への samba の参加

 パッケージが用意できましたので、インストールすれば作業完了、となるとうれしいところですが、世の中はそうもいかないようです。特に AD の場合は、いろいろと作業が必要となります。なお、samba を使うには、「samba のすべて 高橋基信 著」は手元に用意したいところです。OSC2005 にて、著者サイン入りの一冊がなければ、AD に samba を追加することは出来なかったと思います。

 最初にすべきは、AD に samba マシンを追加することです。ここは、AD にクライアントを追加することと全く変わりません。コンピュータアカウントを作成し、ドメインブラウザリストに samba マシンがきちんと表示されることで確認できます。もちろん、DNS への登録も必要となります。ここまでを DC 上で行います。正しく AD に登録できたところで、いよいよ Samba マシンでの作業となります。

 この先については、「Samba のすべて」の記述どおりに操作をしています。従って、具体的な記述は、本をご覧いただきます。変更が必要になったファイルは krb5.conf smb.conf の二つです。なお、陥りやすいポイントとして、時刻設定をあげておきます。AD では、時刻同期が非常に重要で、DC と5分以上の相違が発生している場合は、DC との通信に失敗してしまいます。設定そのものが完全であっても、時刻の相違が発生していると、DC との通信ができないため、ユーザー認証に失敗してしまいます。正直、かなりはまりましたので、これから設定される場合には注意してください。

 無事、AD に samba を登録することができました。もちろん、ユーザー登録は、DC においてなされていれば良く、Linux ではあまり使用しない、空白を含んだユーザー名も問題なく使用できています。日本語ファイル名はもちろん問題なく使用できており、Linux マシンからも smb でマウントして環境の統一をおこなっています。設定さえ出来てしまえば、Windows Server と全く変わらない使用感となっており、非常に満足しています。


Last Update is 2008/01/27 CopyRights Tazoe Kazuya 2008.