名前

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

書式

smbd [-D|--daemon] [-i|--interactive] [-F|--foreground] [--no-process-group] [-b|--build-options] [-p <port number(s)>] [-P <profiling level>] [-d <debug level>] [--debug-stdout] [--configfile=<configuration file>] [--option=<name>=<value>] [-l|--log-basename <log directory>] [--leak-report] [--leak-report-full] [-V|--version]

説明

このプログラムは 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) のマニュアルページはインストールを進める前に 必ず読むべきものであることに注意すること。

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

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

SIGHUP シグナルを送る代わりに、 smbcontrol(1) プログラムを使う事で、 設定ファイルの再読み込み要求を送ることが出来る。

オプション

-D|--daemon

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

-i|--interactive

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

-F|--foreground

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

--no-process-group

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

-b|--build-options

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

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

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

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

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

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

-d|--debuglevel=DEBUGLEVEL

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

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

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

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

--debug-stdout

このパラメータはデバッグ出力を STDOUT にリダイレクトする。既定では、 すべてのクライアントはログを STDERR に出力する。

--configfile=CONFIGFILE

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

--option=<name>=<value>

コマンドラインから smb.conf(5) オプション "<name>" に値 "<value>" を設定する。 これはコンパイル時の既定値と設定ファイルから読み込まれた オプションを上書きする。名前または値に空白が入っていた場合、 引用符で --option=name=value 全体を囲む。

-l|--log-basename=logdirectory

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

--leak-report

終了時の talloc リークレポートを有効にする。

--leak-report-full

終了時の完全な talloc リークレポートを有効にする。

-V|--version

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

-?|--help

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

--usage

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

関連ファイル

/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 バージョン 4.17.0 用である。

診断

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

利用できる診断の数と性質は、サーバーで使用されるデバッグ・レベルに 依存する。もし問題を抱えているなら、デバッグ・レベルを 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ページから入手できる: https://www.samba.org/cifs/.

著者

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

日本語訳

このマニュアルページは Samba 4.15.0 - 4.17.0 に対応する。

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

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