# smbd

## Name

smbd -- SMB/CIFS サービスをクライアントへ提供するサーバ

## Synopsis

smbd [-D] [-a] [-i] [-o] [-P] [-h] [-V] [-d <debug level>] [-l <log directory>] [-p <port number>] [-O <socket option>] [-s <configuration file>]

## DESCRIPTION

このプログラムは Samba スイートの一部である。

smbd は Windows クライアントに ファイル共有と印刷サービスを提供するサーバデーモンである。 サーバは SMB (または CIFS) プロトコルを使用するクライアントに ファイル・スペースと印刷サービスを提供する。サーバは LanManager プロトコルと互換性があり、LanManager クライアントに 対するサービスが可能である。クライアントには MSCLIENT 3.0 for DOS、Windows for Workgroups、Windows 95/98/Me、Windows 2000、 Windows NT、OS/2、DAVE for Macintosh、smbfs for Linux が含まれる。

サーバが提供できるサービスについての詳細な記述は、 それらサービスの属性を制御する設定ファイルの マニュアルページにある (`smb.conf(5)` を参照)。このマニュアルページでは サービスについて記述せず、サーバを動作させる上での 管理の面にしぼって記述する。

このサーバを動作させることは 重要なセキュリティーとの関係があること、そして `smb.conf(5)` のマニュアルページはインストールを進める前に 必ず読むべきものであることに注意すること。

セッションはクライアントに要求されるたびに作られる。 各クライアントは各セッション毎にサーバプロセスのコピーを得る。 このコピーはセッションの間、クライアントによるすべての 接続を提供する。クライアントのすべての接続が切断されると、 そのクライアントに対するサーバのコピーは終了する。

設定ファイルとそれに含まれるファイルが変更されると、 1分ごとに自動的に再読込される。サーバに SIGHUP を送ることにより 再読み込みを強制することもできる。設定ファイルの再読込は、 すでに確立されているサービスの接続には影響しない。 ユーザがサービスから切断するか、smbd を終了して再起動するまで設定ファイルの変更は反映されない。

## オプション

-D

  このパラメータが指定されると、 サーバはデーモンとして動作することになる。つまり、自身を分離して バックグラウンドで走らせ、適切なポートに対する要求を 処理するようになる。 臨時にファイルおよび印刷サービスを提供する サーバとして利用する以外の場合は、サーバをデーモンとして 起動するのが smbd の起動方法として推奨される。 smbd がシェルのコマンドラインから 実行されたときはこのスイッチが指定されたと見なされる。

-a

  このパラメータが指定されると、 各々の新しい接続毎に、ログメッセージがログファイルに追加される。 これはデフォルトの動作である。

-i

  このパラメータが指定されたときは、 サーバがシェルのコマンドラインから起動されたのであれば、 サーバはデーモンではなく "対話的に" 動作する。 このパラメータの指定は、コマンドラインから 起動するときに暗黙的にデーモンモードとなることを否定する。

-o

  このパラメータが指定されると、 ログファイルはオープンされるたびに上書きされる。デフォルトでは、 smbd はログファイルに 追加書き込みする。

-P

  パッシブオプション。これを指定すると、smbd はネットワークに対していかなる送信も行なわなくなる。 これは開発者のデバッグ用オプションである。

-h

  smbd のヘルプ情報 (利用方法)を表示する。

-v

  smbd のバージョン情報を表示する。

-d <debug level>

  debuglevel は 0から10の整数である。このパラメータが指定されないときの デフォルト値はゼロである。

  値が大きくなる程、サーバの動作に関する より詳細な情報がログ・ファイルに記録される。 レベル 0 では、重大なエラーや深刻な警告のみ記録される。 レベル 1 は日々動作させるには最適なレベルである - これは動作記録についての概略レベルの情報を生成する。

  1 より大きいレベルはかなりの量の記録データを 生成するため、問題を調査するときのみ使用されるべきである。 3 より上のレベルは開発者によってのみ使用されるように 設計されており、そのほどんどが暗号のような 膨大な量の記録データを生成する。

  このパラメータは、 `smb.conf(5)` ファイルの log level パラメータの値を上書きすることに注意。

-l <log directory>

  log directory には、動作しているサーバからの情報やデバッグメッセージが 書き込まれる "log.smbd" ログファイルが作成されるディレクトリを 指定する。 作成されたログファイルがサーバによって消去されることは決してないが、 `smb.conf(5)` 中の max log size オプションによって最大サイズを制限されることはある。注意: 指定されたディレクトリが存在しないときは、nmbd はコンパイル時に決定されたデフォルトのログの場所にログを記録しようとする。

  デフォルトのログファイル名はコンパイル時に指定される。

-O <socket options>

  詳細は、`smb.conf(5)` ファイルの socket options パラメータを参照のこと。

-p <port number>

  port number は 正の整数値である。このパラメータが指定されていないときの デフォルト値は 139 である。

  この数字は、クライアント・ソフトウェアからサーバへの 接続を確立するときに使用されるポート番号である。 SMB over TCP の標準的な(well-knownな)ポート番号は 139 であり、それ故にこれがデフォルト値である。あなたが root ではないふつうのユーザでサーバを動作させたいならば、 多くのシステムでは 1024 より大きいポート番号を 使わなければならない。- あなたがこの状況にいるかどうかは、 あなたのシステムの管理者に尋ねるとよい。

  たいていのクライアントからサーバを 利用できるようにしたくてもポートを 139 以外に 構成しなければならないときは、ポート 139 にポート・ リダイレクト・サービスが必要になる。詳しくは rfc1002.txt の 4.3.5 節に概略が述べられている。

  このパラメータは、上記の状況を除いては 通常指定しない。

-s <configuration file>

  指定されたファイルはサーバが必要とする 設定の詳細を含んでいる。このファイルには、どの printcap ファイルを使用するかといったようなサーバの詳細な情報を 含んでおり、サーバが提供するすべてのサービスの記述がある。 詳細は `smb.conf(5)` を参照のこと。 デフォルトの configuration file の名前はコンパイル時に 決定される。

## ファイル

`/etc/inetd.conf`

  サーバを inetd メタ・デーモンによって動作させるには、このファイルに メタ・デーモン用の適切な起動情報を含める必要がある。 ドキュメント UNIX_INSTALL.html を参照のこと。

`/etc/rc`

  (あるいは、あなたのシステムが 使用する初期化スクリプト)

  システム起動時にデーモンとしてサーバを動作させるなら、 このファイルにサーバのための適切な起動手続きを 含める必要がある。ドキュメント UNIX_INSTALL.html を参照のこと。

`/etc/services`

  inetd メタ・デーモンを 介してサーバを動作させるなら、このファイルにサービスポート (例:139)とプロトコルタイプ(例:tcp)に対するサービス名 (例:netbios-ssn)のマッピングを含める必要がある。 ドキュメント UNIX_INSTALL.html を参照のこと。

`/usr/local/samba/lib/smb.conf`

  このファイルはサーバの設定ファイルである `smb.conf` のデフォルトの位置である。その他、システムがこのファイルをインストール しそうな場所としては、`/usr/samba/lib/smb.conf` や `/etc/smb.conf` がある。

  このファイルにはサーバがクライアントから利用できるようにする 全てのサービスを記述する。さらなる情報は `smb.conf(5)` を参照のこと。

## 制限事項

いくつかのシステム上において、smbd は setuid() を呼び出した後に uid を root に戻すことができない。 そのようなシステムは「落とし戸(trapdoor)」uid システムと呼ばれる。 そのようなシステムの場合、異なるユーザとして (PC のような) クライアントから同時に接続を行うことができない。 二人目のユーザ接続の試みは、「アクセス拒否」 または類似の結果となる。

## 環境変数

PRINTER

  プリント・サービスでプリンタの名前が 指定されていないとき、多くのシステムでは使用するプリンタ名として、 この変数の値が(もしくは変数が定義されていないなら `lp`が)利用される。しかしながら これはサーバーの特性であるという訳ではない。

## PAM INTERACTION

Samba はアカウントチェック(アカウントが無効か?)や セッション管理のため(平文のパスワードが提供されたときに) 認証に PAM を使う。samba の PAM をサポートする程度は、 SMBプロトコルと smb.conf の obey pam restrictions の制限によって限定される。

- アカウントの妥当性確認: Samba サーバに対するすべてのアクセスは、アカウントが妥当か、無効になっていないか、 その時間にログインが許可されているかを PAM と照らし合わせて チェックされる。これは暗号化されたログインにも当てはまる。

- セッション管理: 共有レベルのセキュリティ (訳注:smb.conf での security = share を指す)を使用していない場合、 ユーザはアクセスが許可される前に PAM のセッションチェックをパスしなくてはいけない。 一方、共有レベルのセキュリティではこれはスキップされることに注意。 また、いくつかの古い pam 設定ファイルではセッションをサポートするために 行の追加が必要かも知れないことにも注意。

## バージョン

このマニュアルページは Samba スイートのバージョン 2.2 用になっている。

## トラブルシューティング

Samba と SWAT をインストールするときの問題に共通する原因のひとつに、 Samba サーバ上のある種のファイアウォールやポートフィルタリングソフト の存在がある。このマニュアルページで説明された然るべきポートが サーバ上で利用可能であるか、iptables や "port sentry" のような セキュリティソフトでブロックされていないか確認のこと。 より多くのトラブルシューティングについては、Samba の配布物に含まれる ドキュメントを参照のこと。

サーバによって出力されたほとんどの診断は、指定されたログファイルに 記録される。ログファイルの名前はコンパイル時に指定されるが、 コマンドラインで変更することもできる。

利用できる診断の数と性質は、サーバで使用されるデバッグ・レベルに 依存する。もし問題を抱えているなら、デバッグ・レベルを 3 に設定してログファイルに目を通すこと。

ほとんどのメッセージは充分に自明であろう。あいにく、 このマニュアルページ作成時にはあまりにもさまざまな診断メッセージが 存在しているため、診断メッセージをすべて記述することを保証できない。 そのような場合にもっともよい方法は、ソースコードを検索 (grep)することであり、着目している診断メッセージを引き起こした条件を 探すことである。

## シグナル

smbd に SIGHUP を送ることで、 `smb.conf` の内容を短時間の内に 再読み込みさせることができる。

smbd のプロセスをシャットダウンさせるのに、 最後の手段として以外には SIGKILL (-9)は 使わないことを推奨する。共有メモリのエリアが不整合なままに なってしまうことがあるためである。 smbd を安全に終了させる方法は、SIGTERM (-15) を送って、smbd 自身が終了するのを待つことである。

smbcontrol(1) を使うと nmbd のデバッグ・ログ・レベルを上げたり下げたりできる (SIGUSR[1|2] シグナルは Samba 2.2 ではもはや使用されない)。 これにより、低いログ・レベルで動作している間に発生する 一時的な問題を診断することができる。

デバッグ書き込みを送る smbd のシグナル・ ハンドラは再入可能になっていない。ゆえにシグナルを発行するときは、 smbd が SMB 待ちの状態になるまで待つ必要がある。 select 呼び出しの前にシグナルのブロッキングを解除し、呼び出しの後で再び ブロッキングすればシグナル・ハンドラを安全にすることができるが、 これはパフォーマンスに影響するだろう。

## 参照

hosts_access(5)、 inetd(8)、 nmbd(8)、 `smb.conf(5)` 、 smbclient(1) 、 testparm(1)、 testprns(1)、およびインターネット RFC の `rfc1001.txt`、 `rfc1002.txt`。 加えて CIFS(公式なSMB)の仕様は以下のWebページから入手できる: http://samba.org/cifs/.

## 著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell によって作られた。Samba は現在 Linux カーネルが 開発されているような方法でのオープンソースプロジェクトである Samba Team によって開発されている。

オリジナルの Samba の マニュアルページは Karl Auer によって書かれた。 マニュアルページは YODL 形式(別の、優秀なオープンソースソフトウェアで、 ftp://ftp.icce.rug.nl/pub/unix/ にある) で変換され、Jeremy Allison によって Samba 2.0 リリースのために更新された。 Samba 2.2 のための DocBook 形式への変換は Gerald Carter が行った。

## 日本語訳

- 佐藤 文優(fumiya@samba.gr.jp)

- 高橋 基信(monyo@samba.gr.jp)

- はせがわ ようすけ