[Chapter 4] ディスク共有
Date: 1999-11-05T21:31:52Z

| ## Using Samba Robert Eckstein, David Collier-Brown, Peter Kelly 共著 第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル ハードコピー版(英語)を購入する 目次

| Chapter 4 |

> # 4. ディスク共有

> Contents:
> Samba 設定ファイルの概要
> 特殊なセクション
> 設定ファイルのオプション
> サーバの設定
> ディスク共有の設定
> Samba のネットワークオプション
> 仮想サーバ
> ロギング設定オプション

> ここまでの3つの章で、Samba を UNIX サーバにインストールし、Windows クライアントに対して単純なディスク共有を利用させる方法について記述を行ってきた。この章ではネットワーク上で Samba をより生産的な役割に利用する方法について解説する。

> Samba のデーモンである smbd および nmbd は、単純な ASCII ファイルである smb.confによって制御される。このファイルには200以上ものオプションが存在する。これらのオプションによって、単純なアクセス権の設定から 暗号化された接続やNT ドメインとの連携まで、すべての動作が設定される。以下の5つの章では、このファイルやオプションについての理解が深まることを目指している。いくつかのオプションは頻繁に用いられたり設定されたりするだろうが、一方全く使われないものもあるだろう - これはクライアントに対して Samba のどのような機能を提供したいかによって大きく異なってくる。

> この章では Samba 設定ファイルの構造について説明し、ディスク共有を作成したり設定変更したりするためにこれらのオプションをどのように用いるべきかについて解説する。以降の章では、ブラウジングや、ユーザ、セキュリティ、ドメイン、プリンタなどの設定、その他ネットワーク上の Samba を設定する上での雑多な話題について順次説明を行っていく。

> ## 4.1 Samba 設定ファイルの概要

> これは Samba 設定ファイルの例である。もし Windows の .INI ファイルを使っているのであれば、 smb.conf ファイルの構造は、それと非常に類似していることに気づくだろう:

>     [global]
>     	log level = 1
>     	max log size = 1000
>     	socket options = TCP_NODELAY IPTOS_LOWDELAY
>     	guest ok = no
>     [homes]
>     	browseable = no
>     	map archive = yes
>     [printers]
>     	path = /usr/tmp
>     	guest ok = yes
>     	printable = yes
>     	min print space = 2000
>     [test]
>     	browseable = yes
>     	read only = yes
>     	guest ok = yes
>     	path = /export/samba/test

> この意味についてはまだ理解できていないかもしれないが、先を急いでいるのであれば、そのまま使うのにも適した設定である(時間があれば、以下ですぐに新しい設定ファイルを一から作成していく)。手短にいうと、この設定ファイルは基本的なデバッグのロギングを、ログファイルサイズが1MBを越えない範囲で行い、 Samba サーバと SMB クライアント間の TCP/IP のソケット接続の最適化を行い、さらに Samba がサーバ上に通常の UNIX アカウントのあるユーザ毎に、ディスク共有を作成するという設定を行うものである。加えてサーバに登録された各プリンタにはだれでも接続可能になっており、同様に /export/samba/test ディレクトリにマップされた、だれでも読み込み専用の共有が一つ設定されている。このファイルの最後の部分は、Chapter 2 UNIX システムへの Samba のインストール 中の Samba の試験で利用したディスク共有と同様の設定である。

> ### 4.1.1 設定ファイルの構造

> より大略的な観点で上記の設定ファイルに目を通してみよう:

>     [global]
>     	...
>     [homes]
>     	...
>     [printers]
>     	...
>     [test]
>     	...

> ブラケットで囲まれた名前は、 smb.conf ファイル中の個々のセクションを定義する; 各々のセクションは、そのセクションが設定する 共有 (サービスともいう) の名前にもなる。例えば、`[test]` および `[homes]` セクションは各々ディスク共有になる; これらのセクションでは、Samba サーバ上のディレクトリにマップするオプションが記述されている。`[printers]` 共有にはサーバ上の様々なプリンタをマップするオプションが記述されている。 smb.conf ファイルで定義された全てのセクションは、`[global]` セクションを除き、Samba サーバがクライアントに提供するディスクもしくはプリンタ共有として機能する。

> その他の行は、共有毎に個別の設定オプションである。 これらのオプションは、新しいブラケットで囲まれたセクションが現れるか、ファイルの終りに到達するかするまで記述される。個々の設定オプションは、以下のような単純なフォーマットになっている:

>     option = value

> smb.conf ファイル中のオプションは、このようにして値を設定される。ところで、Samba のオプション名の一部はよく考慮せずにつけられてしまったことについて、予め注意を喚起しておきたい。例えば、`read` `only` は自明であり、最近の Samba のオプション殆んどの典型というべきものである。`public` は以前のオプションであり曖昧である; 多少混乱のみられる(less-confusing)同義語として `guest` `ok` (ゲストアクセスを許可する)がある。主な機能を説明する中で、この章では一般的に用いられている歴史的な名称のいくつかを記述する。なお Appendix C, Samba 設定ファイルクイックリファレンス には, 全ての設定オプションとその意味がアルファベット順になった索引がある。

> #### 4.1.1.1 ホワイトスペース、quotes およびコンマ

> 設定オプションに関して忘れてはならない重要な点として、`value` 中の全てのホワイトスペース(monyo訳注: 空白、タブなど画面上で空白として見える文字の総称)は有意であることがあげられる。例えば以下のオプション:

>     volume = The Big Bad Hard Drive Number 3543

> Samba は`volume` の最後の`e`から`The` の先頭の`T` の間にあるすべてのスペースを削除する。これらのホワイトスペースは意味がない。残りのホワイトスペースは有意であり、Samba がファイルを読み込む時点で認識されて保存される。(`guest` `ok`のような)オプション名中のスペースには意味がないが、慣例にしたがって、オプション名中の単語間のスペースを残しておくことを推奨する。

> もし設定ファイルのオプションの値の最初と最後を引用符で囲んだ方が安全だと感じるのであれば、そのようにしても構わない。Samba はこれらの引用符があっても無視する。オプション自身に引用符を使わないこと; Samba はこれをエラーとみなす。

> なお、リスト中での各値を識別するためにホワイトスペースかコンマを使うことができる。以下の二行のオプションは同じ意味である:

>     netbios aliases = sales, accounting, payroll
>     netbios aliases = sales accounting payroll

> しかしいくつかの値では、各値の識別にある特定の形式を使う必要がある - ある場合はスペースであり、別の場合はコンマである。

> #### 4.1.1.2 Capitalization

> 大文字小文字の問題は、Samba の設定ファイル中では重要でない。ただし、下位の OS が正しく認識できなくなるファイルシステム上の位置については例外である。 一例として、以下のように /export/samba/simple を指す共有をオプションファイル中に設定してみよう:

>     PATH = /EXPORT/SAMBA/SIMPLE

> Samba は何の問題もなく、全て大文字の `path` の設定オプションを扱うことができる。しかしながら、そのディレクトリにアクセスしようとしても失敗する。これは下位の OS が提供する UNIX のファイルシステム が 大文字と小文字を区別するためである。このため、表記されたパスが見つからず、クライアントは共有に接続することができないことになる。

> #### 4.1.1.3 各行の設定

> 以下のようにバックスラッシュ(\)を用いることで、Samba の設定ファイル中では複数行を継続することができる:

>     comment = The first share that has the primary copies \
>               of the new Teamworks software product.

> バックスラッシュの存在により、この2行はSamba 的には一行として扱われる。2行目は、Samba が最初に見つけたホワイトスペースではない行から開始される; 上記の例では`of` の `o` からになる。

> #### 4.1.1.4 コメント

> 行をシャープ記号(#)やセミコロン(;)から開始することで、 smb.conf ファイル中にコメントを挿入することができる。両方の文字は完全に等価である。 例えば、以下例で最初の3行はコメントと見なされる:

>     #  This is the printers section. We have given a minimum print
>     ;  space of 2000 to prevent some errors that we've seen when
>     ;  the spooler runs out of space.

>     [printers]
>     	public = yes
>     	min print space = 2000

> Samba は設定ファイル中の全てのコメント行を無視する; コメントを示すシャープ記号やセミコロンの後には、どのような文字をコメントとして記述しても構わない。 行の継続を表す文字の (`\`) もコメント行では有効に ならず、その他の文字と同様に無視されることに注意すること。

> #### 4.1.1.5 実行中の設定変更

> smb.conf ファイル中のオプションを、Samba デーモンが実行中に変更することも可能である。デフォルトで、Samba は設定ファイルの変更を60秒毎にチェックする。変更点があると、それは即座に反映される。もし即座に変更を反映したいのであれば、 smbd と nmbd のプロセスに SIGHUP シグナルを送信するか、単純にデーモンを再起動することで、設定を反映させることができる。

> 例えば smbd のプロセスが 893 なら、以下のコマンドで設定ファイルを強制的に再読み込みさせることができる:

>     # kill -SIGHUP 893

> 変更点の全てが即座にクライアントに反映される訳ではない。例えば現在使用中の共有の設定は、クライアントが接続を切断して再度接続するまでは変更されない。また、ワークグループ名や NetBIOS 名のようなサーバ固有のパラメータについても即座には反映されない。これは、接続中のクライアントが突然接続を切断されたり、セッションのオープン中に予期しないトラブルに遭遇しないための措置である。

> ### 4.1.2 変数

> Samba には、サーバ自身や接続してくるクライアントの特徴を示す、いくつかの変数がある。これらの変数はパーセント記号(monyo訳注:%)からはじまり、大文字もしくは小文字一文字で表記される。また変数は、設定オプションの右側でのみ利用可能である(すなわち等号記号の後ということである):

>     [pub]
>         path = /home/ftp/pub/%a

> `%a` というのはクライアントのマシンのアーキテクチャ(例えば Windows NT は`WinNT` 、Windows 95/98もしくは`Windows for Workgroups`は `Win95` である)を示す。これにより、Samba は `[pub]` 共有に対して、Windows NT マシン、Windows 95 マシン、Windows for Workgroups マシン毎に個別のパスを割り当てることができる。言い換えるとクライアントから見えるパスは、クライアントのアーキテクチャにより以下のように異なるということである:

>     /home/ftp/pub/WinNT
>     /home/ftp/pub/Win95
>     /home/ftp/pub/WfWg

> ユーザ個々の特徴や状態によってカスタマイズした設定を適用したい場合は、このように変数を利用することで手軽に実現できる。Samba には 表 4.1で示すように 19 の変数がある。

> 表 4.1: Samba の変数
> 変数名 | 定義
> --- | ---
> クライアント関連の変数
> `%a` | クライアントのアーキテクチャ(例: Samba, WfWg, WinNT, Win95, UNKNOWN)
> `%I` | クライアントの IP アドレス(例: 192.168.220.100)
> `%m` | クライアントの NetBIOS 名
> `%M` | クライアントの DNS 名
> ユーザ関連の変数
> `%g` | `%u`のプライマリグループ
> `%G` | `%U`のプライマリグループ
> `%H` | `%u`のホームディレクトリ
> `%u` | 現在の UNIX 上のユーザ名
> `%U` | クライアントに要求されたユーザ名(Samba によって常に利用されるとは限らない)
> 共有関連の変数
> `%p` | 現在の共有のルートディレクトリに対応するオートマウンタ上でのパス。`%P`と異なる場合に利用する
> `%P` | 現在の共有のルートディレクトリ
> `%S` | 現在の共有名
> サーバ関連の変数
> `%d` | 現在のサーバのプロセスID
> `%h` | Samba サーバの DNS ホスト名
> `%L` | Samba サーバの NetBIOS 名
> `%N` | automount マップによる、ホームディレクトリサーバ
> `%v` | Samba のバージョン
> その他の変数
> `%R` | 現在利用されている SMB プロトコルレベル
> `%T` | 現在の日付と時刻

> ここで変数を利用した例をもう一つあげておく: ネットワーク上に5台のクライアントがあるが、`fred`というクライアントだけは Samba サーバに接続した時に他と少し異なる`[homes]` の設定が必要だとしよう。Samba において、これは簡単に解決できる問題である:

>     [homes]
>     	...
>     	include = /usr/local/samba/lib/smb.conf.%m
>     	...

> この`include` オプションによって、特定の NetBIOS マシン(`%m`)用に、現在のファイルに加えて別の設定ファイルが読み込まれるようになる。クライアントマシンのホスト名が`fred` で smb.conf.fred というファイルが`samba_dir` /lib/ ディレクトリに存在すれば(もしくは設定ファイルで指定されたその他のディレクトリに存在すれば)、Samba はそのファイルをデフォルトのものに追加する形で挿入する。 smb.conf.fred に記述された全ての設定オプションは、すでに記述された全てのオプションを上書きする。 「すでに」という点に注意すること。元々の設定ファイルで `include` オプションの後に何らかのオプションが記述されていた場合、Samba は値が定義されている共有についてはそちらの値を優先する。

> これは重要な点である: 上記のファイルが存在しなくても、Samba はエラーと見なさないし、実際何も起こらない。このため、この方法を用いる場合に、ネットワーク上の個々の NetBIOS マシン毎に設定ファイルを用意する必要はなく、`fred` のために一つの特別な設定ファイルを作成するだけでよいのである。

> マシン固有の設定ファイルを用いることで、特定のクライアント用の設定をカスタマイズするだけでなく、Samba のデバッグを簡単に行うこともできるようになる。 例えば、もし1台のクライアントに問題が発生しているとしたら、そのクライアント専用の詳細なログレベルを設定したログファイルを設定することで、この方式を活用することができる。これにより、全てのクライアントに対しての応答速度を低下させたり、無用のログでディスクを溢れさせたりすることなく、Samba の動作状況をチェックすることが可能になる。大規模なネットワークで Samba サーバを再起動するのが困難な状況でも、デバッグを行うことができることに着目してほしい。

> 表 4.1 に記述した変数は、様々な Samba オプションをカスタマイズするのに利用できる。これらのオプションのいくつかについては、以降の章でより詳細に記述する。

3.3 SMB/CIFS への手引き |  | 4.2 特別なセクション

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.