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, 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-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モードを持つ。仮想サーバを作成するために、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 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