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

John H. Terpstra

Samba Team

June 30, 2005

Table of Contents

実装
複数のサーバーのホスティング
複数仮想サーバーの性質(Personalities)
複数の仮想サーバーホスティング

この本の最初の版のリリース以来、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