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

| Chapter 4 ディスク共有 |

> ## 4.8 ロギング設定オプション

> Samba が起動しているかどうかを確認したい時がある。Samba が期待する動作を行っていなかったり、全く動作していなかったりする時は特にそうであろう。何がどうなっているかをきちんと確認するための情報を入手するには、Samba のログファイルを確認する必要がある。

> Samba のログファイルは簡潔にも詳細にもできる。以下は Samba のログファイルがどのようなものかの一例である:

>     [1999/07/21 13:23:25, 3] smbd/service.c:close_cnum(514)
>       phoenix (192.168.220.101) closed connection to service IPC$
>     [1999/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40)
>       Yielding connection to IPC$
>     [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
>       Transaction 923 of length 49
>     [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
>       switch message SMBread (pid 467)
>     [1999/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336)
>       dos_ChDir to /home/samba
>     [1999/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199)
>       read fnum=4207 num=2820 nread=2820
>     [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
>       Transaction 924 of length 55
>     [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
>       switch message SMBreadbraw (pid 467)
>     [1999/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053)
>       readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276
>     [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615)
>       Transaction 925 of length 55
>     [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448)
>       switch message SMBreadbraw (pid 467)

> オプションの多くは Samba のプログラマが利用するためだけのものである。 いくつかの行の意味については、Chapter 9 Samba のトラブルシューティングで、その詳細を解説する。

> Samba には、ログ情報がどこにどのように書き込まれるかを制御するためのオプションが6つ存在する。それらはグローバルオプションであり、共有の定義中には記述できない。 以下に今まで述べてきたロギングオプションと、各共有の設定を含むように更新した設定ファイルを示す。

>     [global]
>     	netbios name = HYDRA
>     	server string = Samba %v on (%I)
>     	workgroup = SIMPLE

>     	#  Networking configuration options
>     	hosts allow = 192.168.220. 134.213.233. localhost
>     	hosts deny = 192.168.220.102
>     	interfaces = 192.168.220.100/255.255.255.0 \
>     					134.213.233.110/255.255.255.0
>     	bind interfaces only = yes

>     	# Debug logging information
>     	log level = 2
>     	log file = /var/log/samba.log.%m
>     	max log size = 50
>     	debug timestamp = yes

>     [data]
>     	path = /home/samba/data
>     	browseable = yes
>     	guest ok = yes
>     	comment = Data Drive
>     	volume = Sample-Data-Drive
>     	writeable = yes

> ここでは、ログファイルにデバッグレベル2までの情報を出力するような設定を追加した。これは比較的低いデバッグレベルである。ロギングレベルは1から10まであり、レベル1は殆んど情報を出力しないが、レベル10は大量の低レベルな情報を出力する。レベル2はサーバのディスクを無駄遣いせず、有用なデバッグのための情報を出力する。通常、Samba の開発者でなければ、ログレベルを 3 以上にすることは避けた方がよいであろう。

> このファイルは `log` `file` オプションの設定にしたがって /var/log ディレクトリに置かれる。

>     log file = /usr/local/logs/samba.log.%m

> 行で`%m`を用いているように、変数を用いることで、個々のユーザやクライアント毎に異なるログファイルを指定することが可能である。

> ログメッセージを分割することは、特定のマシンやユーザで問題が発生していることがわかっている場合、ネットワークエラーの切り分けに非常に便利である。

> ログファイルには、別の予防措置を行っている。それはログファイルが 50キロバイト以上の大きさにならないように、`max` `log` `size` オプションで設定していることである。ログファイルがこのサイズを超過する場合、ログの内容は、ファイル名に拡張子.oldを付加した名前のファイルに移される。 もし、 .old ファイルが既に存在していた場合、その内容は上書きされて失われる。また元々のログファイルの内容は消去され、新しいログ情報を書き込めるようになる。 これによって、Samba のログファイルでハードディスクが埋め尽くされることを防いでいる。

> 見易さの便を考慮し、我々は`debug` `timestamp` オプションによって、ログにタイムスタンプの情報を残すようにした。これはデフォルトの動作であり、ログファイルの全てのメッセージにタイプスタンプが付加されるようになる。もしこれが不要な場合は、このオプションを `no` にする。

> ### 4.8.1 syslog の利用

> Samba 標準のログファイルに加えて、もしくはその代替としてsyslogを利用したいという場合に備えて、Samba は関連するオプションを用意している。ただし、 syslogを利用するには、まず Samba を`configure` `--with-syslog` オプションでビルドしておく必要がある。 Samba の configure とコンパイルについての詳細な情報は、Chapter 2 を参照のこと。

> 次に、 /etc/syslog.conf ファイルを Samba からのログ情報を受け入れるように設定する必要がある。既に`daemon.*` のエントリが`/etc/syslog.conf` ファイルにあれば、以下のように

>     daemon.*        /var/log/daemon.log

> を追加する。これで、システムのデーモンからのログ情報が /var/log/daemon.log ファイルに書き込まれるようになる。 この設定は Samba の情報が書き込まれる場所としても利用される。さらに、設定ファイル中に以下のグローバルオプションを追加する

>     syslog = 2

> これにより、レベル1のログメッセージが syslog と Samba のログファイルの両方に送られる。( syslog 優先度との対応については後述する"syslog."セクションで記述する)。通常の`log` `level` オプションを 4 に設定しているものとしよう。レベル 2, 3, 4 のログメッセージは、Samba のログファイルに送られるが、 syslogには送られない。レベル 1 のログメッセージのみが両方に送られる。もし`syslog` の値が`log` `level` の値を越えていた場合、 syslogには何も書き込まれない。

> メッセージを syslogのみに送り、標準の Samba ログファイルに送りたくないという場合は、以下のオプションを設定ファイルに記述することができる:

>     syslog only = yes

> この場合、`syslog` オプションで指定された番号を越えるログ情報は、`log` `level` オプションの場合と同様に破棄される。

> ### 4.8.2 ログ設定オプション

> 表 4.7 に Samba で設定可能なロギング設定オプションの一覧を示す。

> 表 4.7: グローバル設定オプション
> オプション | パラメータ | 機能 | デフォルト | 範囲
> --- | --- | --- | --- | ---
> `log file` | 文字列 (フルパス名) | Samba が利用するログファイルの名前と位置を指定する。通常の変数を利用できる。 | Samba の Makefile で指定される | グローバル
> `log level` `(debug level)` | 数値 (0-10) | ログファイルに書き込まれるログ/デバッグメッセージの量を指定する。0は全く出力されない。3が妥当な値であろう。 | `1` | グローバル
> `max log size` | 数値 (KB単位のサイズ) | ログファイルの最大のサイズを指定する。ログファイルが指定された容量を超過した場合、ファイルには .bak という拡張子を付加され、以降は新しいログファイルが利用されるようにになる。 | `5000` | グローバル
> `debug` `timestamp (timestamp logs)` | 真偽値 | no の場合、ログファイルにタイムスタンプが付加されない。大量のデバッグ情報が読みやすくなるであろう。 | `yes` | グローバル
> `syslog` | 数値 (0-10) | syslogに書き込まれるメッセージのレベルを指定する。`syslog level` 以下のレベルのメッセージが syslog に送られる。 | `1` | グローバル
> `syslog only` | 真偽値 | yes の場合、 syslog のみを利用し、標準の Samba ログファイルには何も書き込まれない。 | `no` | グローバル

> #### 4.8.2.1 ログファイル

> 我々のサーバでは、Samba のログ情報は、Makefile によって Samba 構築時に設定された Samba のホームディレクトリの下の varサブディレクトリ内のテキストファイルに出力される。`log` `file` オプションにより、ログファイル名を別の場所に設定し直すことが可能になる。例えば、Samba のログファイルの名称と位置を /usr/local/logs/samba.log に設定し直すには、以下のように指定する:

>     [global]
>     	log file = /usr/local/logs/samba.log

> 変数を利用することで、特定のユーザやクライアント個別のログファイルを作成することもできる。

> デーモンが起動するときに、コマンドラインスイッチで`-l` を指定することで、デフォルトのログファイルの位置を強制的に変更することも可能である。しかし、これは`log` `file` オプションの設定を上書きするものではない。このパラメータが指定されていた場合、`-l` (もしくは Samba の Makefile で指定されたデフォルト値)で指定されたファイルには、デーモンが smb.conf ファイルを読み込んで、ログファイルの位置を認識するまでの間のログ情報が書き込まれる。

> #### 4.8.2.2 log level

> `log` `level` オプションは、ロギングされる情報量を指定する。通常これは 0 か 1 に設定される。しかし何らかの問題が発生している場合は、これを 3 に設定する場合があるだろう。 このレベルは、問題を切り分けるのに適した、有用なデバッグ情報を出力する。3 を越えるレベルは、開発者が内部のバグを追跡するために用いることを意図した情報であり、サーバの動作を無視できないほどに遅くする。そのため、このオプションを 3 より大きい値にすることは、避けるべきであろう。

>     [global]
>     log file = /usr/local/logs/samba.log.%m
>     log level = 3

> #### 4.8.2.3 max log size

> `max` `log` `size` オプションは、Samba が保持するデバッグログファイルの最大サイズをキロバイト単位で指定する。ログファイルがこのサイズを超過すると、現在のログファイルは .old という拡張子を付加された名前に変更され、(既にその名前のファイルがあった場合は消去される) 新しいデバッグログファイルが本来の名前で新規に作成される。例えば以下のように設定する:

>     [global]
>     log file = /usr/local/logs/samba.log.%m
>     max log size = 1000

> この設定においてログファイルのサイズが 1 メガバイトを越えた場合、Samba はログファイルの名前を samba.log. `machine-name` .old に変更し、新しいログファイルを作成する。既に .old の拡張子を持つファイルが存在していた場合、Samba はそれを削除する。デバッグ用のロギングは、(たとえ低いレベルであっても)知らないうちにディスクスペースを喰い尽くす可能性があるため、このオプションを設定ファイルに記述することを強く推奨する。このオプションを設定することで、不用心な管理者が突然ディスク容量のほとんどが 1 つの Samba ログファイルによって占められていることに気づくといった事態を回避する。

> #### 4.8.2.4 debug timestamp もしくは timestamp logs

> ネットワークのトラブルをデバッグしていて、Samba のログファイルの各行に付加される日付と時間の情報が邪魔だと感じる時には、`timestamp` `logs` もしくは `debug` `timestamp` オプション(この二つは同義である)を `no`にすることで、これらの情報の出力を抑止できる。 通常の Samba のログファイルが以下のような形式で出力されているとする:

>     12/31/98 12:03:34 hydra (192.168.220.101) connect to server network as user davecb

> このオプションの値を`no` にすることで、以下のように出力が日付と時間を含まないものへと変化する:

>     hydra (192.168.220.101) connect to server network as user davecb

> #### 4.8.2.5 syslog

> `syslog` オプションにより、Samba がログメッセージを UNIX の syslog に送るようになる。送付される情報の種別は、このオプションの引数によって指定される。`log` `level` オプションのように、このオプションは0から10までの数値を指定できる。指定された数字未満のレベルのログ情報が syslog に送られる。また`syslog` レベルと等しいかそれ以上のレベルで、log level より小さいレベルの情報は、標準の Samba ログファイルに送付される。これを抑止したい場合は、`syslog` `only` オプションを利用すること。例えば以下の場合

>     [global]
>     	log level = 3
>     	syslog = 1

> レベル0のログ情報は、標準の Samba のログファイルと syslog に送られ、レベル1, 2, 3は、Samba 標準のログファイルにのみ送られる。3 を越えるレベルの情報はどこにも記録されない。 syslog に送られる全てのメッセージには 表 4.8のように、 syslog プロセスが認識できる優先度(priority level)が付加されることに注意。デフォルトのレベルは1である。

> 表 4.8: Syslog 優先度の対応表
> ログレベル | syslog 優先度
> --- | ---
> 0 | `LOG_ERR`
> 1 | `LOG_WARNING`
> 2 | `LOG_NOTICE`
> 3 | `LOG_INFO`
> 4 以上 | `LOG_DEBUG`

> syslogを利用するときには、Samba をコンパイルするときに `configure` を `--with-syslog` オプションで実行し、 /etc/syslog.conf を適切に設定する必要がある。(本章で既述した Section 4.8.1, syslog の利用を参照のこと)

> #### 4.8.2.6 syslog only

> `syslog` `only` オプションによって、 Samba が通常のログファイルを利用せずに、syslog のみを利用するようにできる。以下のオプションを Samba 設定ファイルのグローバルセクションに指定することで、このオプションが有効になる:

>     [global]
>     	syslog only = yes

4.7 仮想サーバ |  | 5. ブラウジングと高度な共有の設定

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

© 1999, O'Reilly & Associates, Inc.