## Name

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

## Synopsis

`smbd` [-D] [-F] [-S] [-i] [-h] [-V] [-b] [-d <debug level>] [-l <log directory>] [-p <port number>] [-O <socket option>] [-s <configuration file>]

## 説明

このプログラムは Samba(7)システムの一部である。

`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` がシェルのコマンドラインから 実行されたときはこのスイッチが指定されたと見なされる。

-F

  このパラメータを指定すると、 `smbd` のメインプロセスはデーモン化しなくなる。 つまり、 2 回の `fork(2)` と端末からの切り離しを行なわない。 通常通り接続要求を処理するための子プロセスが生成されるが、 メインプロセスは終了しない。 この動作方式は、 Daniel J. Bernstein 作の `daemontools` パッケージに含まれる `supervise` と `svscan` や、 AIX のプロセスモニターなど、プロセス監視の下で `smbd` を動作させるのに都合がよい。

-S

  このパラメータが指定されると、`smbd` は ファイルではなく標準出力にログを出力する。

-i

  このパラメータが指定されると、 サーバはコマンドラインでデーモンとして実行されていたとしても デーモンではなく、"対話形式"で動作する。 このパラメータを設定することにより、コマンドラインからの起動により暗黙 的にデーモンモードとなることを無効にする。 また、`-S` パラメータが指定されているかのように、 `smbd` は標準出力にログを出力する。

-d|--debuglevel=level

  `level` は0から10までの整数値である。 既定値の値は、パラメータが設定されていなければ0である。

  この値を大きくするほど、サーバの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。

  1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている

  このパラメータの指定は、`smb.conf`ファイル中の、 パラメータの 指定よりも優先する。

-V

  プログラムのバージョン番号を表示する。

-s <configuration file>

  サーバーが必要とする詳細な設定を含む設定ファイルを 指定する。このファイルには、サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。詳細は `smb.conf` を参照のこと。設定ファイルの名前の既定値は、コンパイル時 に決定される。

-l|--log-basename=logdirectory

  ログ/デバッグファイルのファイル名。拡張子として `".progname"` が追加される(例えば log.smbclient, log.smbd,など)。ログファイルはクライアントによって削除されることはない。

-h|--help

  コマンドラインオプションの要約を表示する。

-b

  どのようにSambaがビルドされたか表示する。

-p|--port<port number(s)>

  `port number(s)` は 空白か、コンマで分離された、smbdがリッスンするTCPポート番号のリストである。 既定値は`smb.conf`中のportsパラメータからとられる。

  既定値は 139(NetBIOS over TCP上のSMBを使う場合)と445(TCP上での普通のSMBを使う場合)である。

-P|--profiling-level<profiling level>

  `profiling level` は 収集するプロファイリングデータのレベルを指定する数値である。0はプロファイリングを 停止、1はプロファイリングカウンタのみONにする。2は完全なプロファイリングをONにし、3はすべてのプロファイリングデータをリセットする。

## 関連ファイル

`/etc/inetd.conf`

  サーバを `inetd` メタ・デーモンによって動作させるには、このファイルに メタ・デーモン用の適切な起動情報を含める必要がある。

`/etc/rc`

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

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

`/etc/services`

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

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

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

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

## 制限

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

## 環境変数

`PRINTER`

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

## PAM との相互作用

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

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

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

## バージョン

このマニュアルページは Samba バージョン 3用にである。

## 診断

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

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

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

## TDBファイル

Sambaは通常`/var/lib/samba`にあるいくつかのTDB (Trivial Database) ファイルにそのデータを格納する。

(*) 情報はリスタートをまたがって継続する(しかし、必ずしもバックアップが重要ではない)。

account_policy.tdb*

  パスワードの満了期間などのような、NTアカウントポリシーの設定

brlock.tdb

  バイトレンジロック

browse.dat

  ブラウズリスト

connections.tdb

  共有の接続(最大コネクションの強制などに使う)

gencache.tdb

  汎用キャッシュdb

group_mapping.tdb*

  グループマッピング情報

locking.tdb

  共有モードとoplocks

login_cache.tdb*

  不正なログイン記録

messages.tdb

  Sambaメッセージングシステム

netsamlogon_cache.tdb*

  net_samlogon() 要求 (ドメインメンバとして)からのユーザ net_info_3構造体のキャッシュ

ntdrivers.tdb*

  インストールされたプリンタドライバ

ntforms.tdb*

  インストールされたプリンタのフォーム

ntprinters.tdb*

  インストールされたプリンタの情報

printing/

  キャッシュされたlpq出力のプリンとキュー毎のtdbを含むディレクトリ

registry.tdb

  Windowsレジストリの骨格(regedit.exe経由)

sessionid.tdb

  セッション情報(すなわち'utmp = yes'のサポート)

share_info.tdb*

  共有のacl

winbindd_cache.tdb

  winbinddが使うユーザリストのキャッシュなど

winbindd_idmap.tdb*

  winbinddが使うローカルのidmap db

wins.dat*

  'wins support = yes'の時のwinsデータベース

## シグナル

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

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

smbcontrol(1) を使うと `smbd` のデバッグ・ログ・レベルを上げたり下げたりできる (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), and the およびインターネット 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 が行った。 Samba 3.0 のための DocBook XML 4.2 形式への変換は Alexander Bokovoy が行った。

## 日本語訳

このマニュアルページは Samba 3.2.4-3.2.15 対応のものである。

このドキュメントの Samba 3.0.0 対応の翻訳は、ちかましゅうへいによって行なわれた。

このドキュメントの Samba 3.2.4-3.2.15 対応の翻訳は、太田俊哉(ribbon@samba.gr.jp)によって行なわれた。