Chapter 34. 詳細設定のテクニック
Prev | Part III. 詳細な設定方法 | Next

## Chapter 34. 詳細設定のテクニック

### John H. Terpstra

Samba Team

`<jht@samba.org>`

June 30, 2005

この本の最初の版のリリース以来、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ではサポートされないとみなされる。

### 複数仮想サーバの性質(Personalities)

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ファイル

# Globalパラメータ
`[global]`
`workgroup = ROBINSNEST`
`netbios name = ELASTIC`
`netbios aliases = CDSERVER`
`smb ports = 139`
`printcap name = cups`
`disable spoolss = Yes`
`show add printer wizard = No`
`printing = cups`
`include = /etc/samba/smb-%L.conf`
`[homes]`
`comment = Home Directories`
`valid users = %S`
`read only = No`
`browseable = No`
`[office]`
`comment = Data`
`path = /data`
`read only = No`
`[printers]`
`comment = All Printers`
`path = /var/spool/samba`
`create mask = 0600`
`guest ok = Yes`
`printable = Yes`
`use client driver = Yes`
`browseable = No`

CDROMサーバの設定ファイルはCDROMサーバのsmb-cdserver.confファイルである。このファイルは`smb-cdserver.conf`という名前で、`/etc/samba`ディレクトリに置かれる。ワークグループ`ARTSDEPT`中にいるマシンはサーバを自由にブラウズできる。

Example 34.2. CDROMサーバのsmb-cdserver.confファイル

# Globalパラメータ
`[global]`
`workgroup = ARTSDEPT`
`netbios name = CDSERVER`
`map to guest = Bad User`
`guest ok = Yes`
`[carousel]`
`comment = CDROM Share`
`path = /export/cddata`
`read only = Yes`
`guest ok = Yes`

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 ファイルのグローバルセクション

# グローバルパラメータ
`[global]`
`workgroup = MIDEARTH`
`netbios name = MERLIN`
`netbios aliases = SAURON`
`passdb backend = tdbsam`
`smb ports = 139`
`syslog = 0`
`printcap name = CUPS`
`show add printer wizard = No`
`add user script = /usr/sbin/useradd -m '%u'`
`delete user script = /usr/sbin/userdel -r '%u'`
`add group script = /usr/sbin/groupadd '%g'`
`delete group script = /usr/sbin/groupdel '%g'`
`add user to group script = /usr/sbin/usermod -G '%g' '%u'`
`add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody '%u'`
`logon script = scripts\login.bat`
`logon path =`
`logon drive = X:`
`domain logons = Yes`
`preferred master = Yes`
`wins support = Yes`
`printing = CUPS`
`include = /etc/samba/smb-%L.conf`

Example 34.4. smb-merlin.confファイルの共有セクション

# グローバルパラメータ
`[global]`
`workgroup = MIDEARTH`
`netbios name = MERLIN`
`[homes]`
`comment = Home Directories`
`valid users = %S`
`read only = No`
`browseable = No`
`[office]`
`comment = Data`
`path = /data`
`read only = No`
`[netlogon]`
`comment = NETLOGON`
`path = /var/lib/samba/netlogon`
`read only = Yes`
`browseable = No`
`[printers]`
`comment = All Printers`
`path = /var/spool/samba`
`printable = Yes`
`use client driver = Yes`
`browseable = No`

Example 34.5. smb-sauron.confファイルの共有セクション

# グローバルパラメータ
`[global]`
`workgroup = MIDEARTH`
`netbios name = SAURON`
`[www]`
`comment = Web Pages`
`path = /srv/www/htdocs`
`read only = No`

Prev | Up | Next
Chapter 33. 大きなディレクトリの取扱い | Home | Part IV. マイグレーションとアップグレード