Table of Contents
この本の最初の版のリリース以来、Samba以外の事についてネットワーク管理者の手助けとなるかもしれない設定テクニックのよりよい資料について、繰り返し要求があった。一部のユーザは、include = file-nameパラメータの使い方に関連する文書を提供した。
2004年の中頃に始まったが、1つのマシン上で複数のSambaサーバをホスティングする機能について、関心が高まってきた。1つのサーバ上複数のSambaサーバの振る舞いをホスティングする事への興味も増えてきた。
テクニカルレビューワからのフィードバックによりこの章を含める必要が出た。そのため、今まで十分に言及してこなかった質問への答えををここに記す。さらに、この章を充実させる、利用者からの追加は歓迎する。ここで提供されているものは、まったくもって、小さなとっかかりである。
単一のSambaサーバ上で複数のサーバをホスト出来る方法はいくつもある。複数のサーバホスティングは1つのマシン上で複数のドメインをホストする事を可能にする。そのような各マシンは独立していて、他に影響を与えずに、起動/停止ができる。
時には、各サーバが固有のセキュリティモードを持つ、複数のサーバをホスティングすることが好ましいことがある。例えば、一般的な匿名印刷サーバのように、単一のUNIX/Linuxホストはドメインメンバサーバ(DMS)になれる。この場合、ドメインメンバマシンとドメインユーザはDMSにアクセスでき、さらにゲストユーザでさえも、一般的な印刷サーバにアクセスできる。他の、汎用(匿名)サーバをホスティングするのに便利かもしれないシチュエーションの例としては、CDROMサーバのホスティングがある。
いくつかの環境では、固有のリソースを持つ、特定のユーザかグループのみからアクセス可能な、分離されたサーバを持つ必要が規定されている。これは、Sambaが多数の物理的なサーバを、1つのSambaサーバに置き換えられる、単純で、とても効果的な方法の1つである。
複数のサーバホスティングの使用は、それぞれ個別の設定ファイルを持っている、複数の分離されたSambaインスタンスを動かす必要がある。この方法は、各nmbd, smbd と winbinddのインスタンスは、完全に分離されたTDBファイルへの書き込みアクセスが出来なければならないという理由で、とても複雑である。nmbd, smbd と winbinddが使うTDBファイルを分離させる事は、ホスティングを行う各Sambaを再コンパイルすることで、各Sambaが、固有のTDBファイルに対する既定値のディレクトリを持つか、nmbd, smbd と winbinddの各インスタンスが、それらの固有のsmb.conf
設定ファイルで起動するようにしなければならない、smb.conf
ファイルを設定することで可能となる。
各インスタンスは固有のIPアドレス(独立したIPアドレスはIPエイリアスで行える)で操作されるべきである。nmbd, smbd とwinbinddの各インスタンスは、その固有IPソケットのみをリッスンすべきである。これはsocket addressパラメータを使うことによって、安全に出来る。Sambaサーバの各インスタンスは固有のSIDも持つべきであり、これは、サーバは互いに独立で、分離されていることを意味する。
複数サーバホスティングのユーザはそれほど特異ではなく、プロセス管理と起動時それぞれの場面において、注意深い設定を要求する。注意深く設定しなければならない、smb.conf
パラメータは以下を含む:private dir, pid directory,lock directory, interfaces, bind interfaces only, netbios name, workgroup, socket address。
複数のSambaサーバを作成する事を選択した人は、Sambaソースコードを読解でき、必要に応じてそれを変更出来る能力を持つべきである。このモードの配置は、この文書の範囲を超えていると考えられる。しかし、もしも誰かがより包括的な文書を寄贈してくれるのであれば、喜んでそれをレビューし、もしもそれが適切であれば、この章のこの節を拡張するだろう。そのような文書が有効になるまで、単一ホスト上での複数Sambaサーバのホスティングは、Sambaチームによって、Samba-3ではサポートされないとみなされる。
Sambaは、固有の設定を持つ、複数の仮想サーバをホスティングできる能力がある。これは、すべてのホスティングされる、個別設定に共通なsmb.conf
ファイルの設定で達成される。各(仮想)サーバの個別設定は、固有のnetbios aliasでホスティングされ、おのおのは、固有の異なった[global]セクションを持つ。各サーバはサービスとメタサービスのために固有のセクションを持っても良い。
複数の仮想サーバをホスティングするとき、おのおのには個別設定が出来、おのおのは異なったワークグループにいる。プライマリサーバのみ、ドメインメンバかドメインコントローラになれる。個別設定は、動作しているsecurityモードと、使っているnetbios aliasesとそれに対して定義されたworkgroupの組み合わせによって定義される。
この設定スタイルは、NetBIOS名を使うか、NetBIOS名なしのTCPサービスのSMBを使う事が出来る。もしもNetBIOSモード(最も一般的な方法)で動かす場合、パラメータsmb ports = 139はプライマリのsmb.conf
ファイル中に指定すべきである。それを間違うと、SambaはTCPポート445で動作することになり、最も良い場合で問題のある動作、最悪の場合は、プライマリのsmb.conf
ファイルで指定された機能を得ることができるのみである。TCPポート139のみを使うNetBIOS over TCP/IPの使用は、%L
マクロの使用が完全に有効になる事を意味する。もしもsmb ports = 139が指定されていない場合(既定値では445 139
)か、もしもこのパラメータの値が139 445
の時は、%L
は無効である。
各サーバの個別設定で、ポート445を使う(NetBIOSなしのSMBポート)複数のサーバをホスティングするのは可能で、この場合、(IPアドレスによって)分離されたサーバを識別するために、%i
が使える。おのおのは固有のsecurityモードを持つ。仮想サーバを作成するために、interfacesとbind interfaces onlyをnetbios nameに追加する必要があるかもしれない。この方法は、TCPポート139のみを使うNetBIOS名を使うよりもより複雑であると考えられる。
スタンドアロンでユーザモードのセキュリティで動くSambaと置き換え対象の、読み取り専用Windows 95ファイルサーバからなる例題環境を考えてみよう。新しいPCでWindows 95マシンを置き換える代わりに、Sambaサーバ上でホスティングされる読み取り専用匿名ファイルサーバとしてこのサーバを追加することが可能である。以下はそれに必要ないくつかのパラメータである:
Sambaサーバの名前はELASTIC
で、そのワークグループ名はROBINSNEST
である。CDROMサーバの名前はCDSERVER
で、そのワークグループ名はARTSDEPT
である。出来うる実装は以下の通り:
マスタサーバに対するsmb.conf
ファイルはElasticのsmb.confファイルである。このファイルは/etc/samba
中に置かれる。nmbd と smbd デーモンのみが必要である。サーバを起動すると、Windowsのネットワークコンピュータ中の、ワークグループROBINSNEST
配下にELASTIC
が現れる。もしも、このサーバにアクセスするWindowsクライアントがまたワークグループROBINSNEST
中にいて、より信頼性の高いブラウジングを行わさせるのに、これは便利である。
Example 34.1. Elasticのsmb.confファイル
CDROMサーバの設定ファイルはCDROMサーバのsmb-cdserver.confファイルである。このファイルはsmb-cdserver.conf
という名前で、/etc/samba
ディレクトリに置かれる。ワークグループARTSDEPT
中にいるマシンはサーバを自由にブラウズできる。
2つのサーバは異なったりソースを持ち、分離されたワークグループ内にいる。サーバELASTIC
は、そのホストサーバ上に適切なアカウントを持つユーザからのみアクセスできる。すべてのユーザは、/export/cddata
ディレクトリ中に格納されるCDROMデータにアクセスできる。ファイルシステムのアクセス許可は、その他
ユーザがディレクトリとその内容に対して読み取り専用アクセスを設定すべきである。ファイルはrootが所有できる(nobodyアカウント以外の任意のユーザでも)。
この例では、要求されていることは、MIDEARTH
というドメインに対するプライマリドメインコントローラに対するものである。PDCはMERLIN
である。その他のマシンとしてSAURON
が必要とされている。各マシンはそれぞれ固有の共有のみ持つ。両マシンは同じドメイン/ワークグループに属している。
マスタのsmb.conf
ファイルはマスタのsmb.conf ファイルのグローバルセクションである。各サーバの共有情報を指定する2つのファイルは、smb-merlin.confファイルの共有セクションとsmb-sauron.confファイルの共有セクションである。3つのファイルはすべて/etc/samba
ディレクトリに置かれる。
Example 34.3. マスタのsmb.conf ファイルのグローバルセクション
Example 34.4. smb-merlin.confファイルの共有セクション