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