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

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, smbdwinbindd のインスタンスは、完全に分離されたTDBファイルへの書き込みアクセスが出来なければならない という理由で、とても複雑である。nmbd, smbdwinbinddが使うTDBファイルを分離 させる事は、ホスティングを行う各Sambaを再コンパイルすることで、各Sambaが、固有のTDB ファイルに対する既定値のディレクトリを持つか、nmbd, smbdwinbinddの 各インスタンスが、それらの固有のsmb.conf設定ファイルで起動するようにしなければ ならない、smb.confファイルを設定することで可能となる。

各インスタンスは固有の IP アドレス(独立した IP アドレスは IP エイリアスで行える)で操作される べきである。nmbd, smbdwinbinddの各インスタンスは、その固有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 ではサポートされないとみなされる。

複数仮想サーバーの性質(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 モードを持つ。仮想サーバーを作成するために、interfacesbind interfaces onlynetbios nameに 追加する必要があるかもしれない。この方法は、TCPポート139のみを使うNetBIOS名を使うよりも より複雑であると考えられる。

スタンドアロンでユーザーモードのセキュリティで動くSambaと置き換え対象の、 読み取り専用Windows 95ファイルサーバーからなる例題環境を考えてみよう。新しいPCでWindows 95 マシンを置き換える代わりに、Sambaサーバー上でホスティングされる読み取り専用匿名ファイル サーバーとしてこのサーバーを追加することが可能である。以下はそれに必要ないくつかのパラメーター である:

Sambaサーバーの名前はELASTICで、そのワークグループ名はROBINSNESTである。 CDROMサーバーの名前はCDSERVERで、そのワークグループ名はARTSDEPT である。出来うる実装は以下の通り:

マスターサーバーに対するsmb.confファイルはElasticのsmb.confファイルである。 このファイルは/etc/samba中に置かれる。nmbdsmbd デーモンのみが 必要である。サーバーを起動すると、Windowsのネットワークコンピューター中の、ワークグループ ROBINSNEST配下にELASTICが現れる。もしも、このサーバーに アクセスするWindowsクライアントがまたワークグループROBINSNEST中にいて、 より信頼性の高いブラウジングを行わさせるのに、これは便利である。

Example 33.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 33.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 33.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 33.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 33.5. smb-sauron.confファイルの共有セクション

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