Name

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

Synopsis

smbd [-D|--daemon] [-F|--foreground] [-S|--log-stdout] [-i|--interactive] [-V] [-b|--build-options] [-d <debug level>] [-l|--log-basename <log directory>] [-p <port number>] [-P <profiling level>] [-s <configuration file>] [--no-process-group]

説明

このプログラムは 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|--daemon

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

-F|--foreground

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

-S|--log-stdout

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

-i|--interactive

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

-d|--debuglevel=level

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

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

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

このパラメーターの指定は、smb.conf ファイル中の、 log level パラメーターの 指定よりも優先する事に注意。

-V|--version

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

-s|--configfile=<configuration file>

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

-l|--log-basename=logdirectory

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

-?|--help

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

--usage

簡単な使用法を表示する。

--no-process-group

smbdに対して新しいプロセスグループを作成しない。

-b|--build-options

どのように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

ブラウズリスト

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経由)

smbXsrv_session_global.tdb

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

smbXsrv_tcon_global.tdb

共有接続(最大接続数を強制するのに使われるなど)

smbXsrv_open_global.tdb

オープンファイルのハンドラー(継続性のあるハンドラーに使われるなど)

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 4.1.4 - 4.1.22 に対応する。

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

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