smbd — SMB/CIFS サービスをクライアントへ提供するサーバ
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ファイル共有と印刷サービスを提供するサーバデーモンである。 サーバは 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 を終了して再起動するまで設定ファイルの変更は反映されない。
このパラメータが指定されると、 サーバはデーモンとして動作することになる。つまり、自身を分離して バックグラウンドで走らせ、適切なポートに対する要求を 処理するようになる。 臨時にファイルおよび印刷サービスを提供する サーバとして利用する以外の場合は、サーバをデーモンとして 起動するのが smbd の起動方法として推奨される。 smbd がシェルのコマンドラインから 実行されたときはこのスイッチが指定されたと見なされる。
このパラメータを指定すると、 smbd のメインプロセスはデーモン化しなくなる。 つまり、 2 回の fork(2) と端末からの切り離しを行なわない。 通常通り接続要求を処理するための子プロセスが生成されるが、 メインプロセスは終了しない。 この動作方式は、 Daniel J. Bernstein 作の daemontools パッケージに含まれる supervise と svscan や、 AIX のプロセスモニターなど、プロセス監視の下で smbd を動作させるのに都合がよい。
このパラメータが指定されると、smbd は ファイルではなく標準出力にログを出力する。
このパラメータが指定されると、 サーバはコマンドラインでデーモンとして実行されていたとしても デーモンではなく、"対話形式"で動作する。 このパラメータを設定することにより、コマンドラインからの起動により暗黙 的にデーモンモードとなることを無効にする。 また、-S パラメータが指定されていたとしても、 smbd は標準出力にログを出力する。
プログラムのバージョン番号を表示する。
サーバーが必要とする詳細な設定を含む設定ファイルを指定する。 このファイルには、 サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。 詳細は smb.conf を参照のこと。 デフォルトの設定ファイルの名前は、コンパイル時に決定される。
デバッグレベルを debuglevel に設定する。 debuglevel は、0 から 10 までの整数である。 このパラメータを指定しないときのデフォルト値は 0 である。
この値を大きくするほど、 サーバーの動作に関するより詳細な情報がログファイルに記録される。 レベル 0 では、致命的なエラーと重大な警告のみが記録される。 レベル 1 は日々の運用に適しており、 少量の稼働状況に関する情報を生成する。
1 より上のレベルは大量のログが生成されるので、 問題解決の時にのみ使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されており、 莫大な量のログデータが生成される。 そのほとんどは非常に謎めいた内容となっている。
ログ/デバッグファイルのファイル名。 拡張子として ".client" が追加される。 ログファイルはクライアントによって削除されることはない。
コマンドラインオプションの要約を表示する。
どのようにSambaがビルドされたか表示する。
このオプションが指定されると、 log directory に指定されたログのディレクトリに、 動作中のサーバからのインフォメーションやデバッグのログが出力される"log.smbd" が作成される。 一度作られたログファイルがサーバ自身によって削除されることはないが、 smb.conf(5) ファイル中の max log size オプションによってサイズの制限を受けることはある。 注意:指定されたディレクトリが存在しなかった場合、 smbd はコンパイル時に定義された デフォルトのデバッグログの場所にログを出力する。
"default log directory"はコンパイル時に指定される。
port number は 正の整数値である。このパラメータが指定されていないときの デフォルト値は 139 である。
この数字は、クライアント・ソフトウェアからサーバへの 接続を確立するときに使用されるポート番号である。 SMB over TCP の標準的な(well-knownな)ポート番号は 139 であり、それ故にこれがデフォルト値である。あなたが root ではないふつうのユーザでサーバを動作させたいならば、 多くのシステムでは 1024 より大きいポート番号を 使わなければならない。- あなたがこの状況にいるかどうかは、 あなたのシステムの管理者に尋ねるとよい。
たいていのクライアントからサーバを 利用できるようにしたくてもポートを 139 以外に 構成しなければならないときは、ポート 139 にポート・ リダイレクト・サービスが必要になる。詳しくは rfc1002.txt の 4.3.5 節に概略が述べられている。
このパラメータは、上記の状況を除いては 通常指定しない。
サーバを inetd メタ・デーモンによって動作させるには、このファイルに メタ・デーモン用の適切な起動情報を含める必要がある。
(あるいは、あなたのシステムが 使用する初期化スクリプト)
システム起動時にデーモンとしてサーバを動作させるなら、 このファイルにサーバのための適切な起動手続きを 含める必要がある。
メタ・デーモンを 介してサーバを動作させるなら、このファイルにサービスポート (例:139)とプロトコルタイプ(例:tcp)に対するサービス名 (例:netbios-ssn)のマッピングを含める必要がある。
このファイルはサーバの設定ファイルである smb.conf(5) のデフォルトの位置である。その他、システムがこのファイルをインストール Other common places that systems しそうな場所としては、 /usr/samba/lib/smb.conf や /etc/samba/smb.conf がある。
このファイルにはサーバがクライアントから利用できるようにする 全てのサービスを記述する。さらなる情報は smb.conf(5) を参照のこと。
いくつかのシステム上において、smbd は setuid() を呼び出した後に uid を root に戻すことができない。 そのようなシステムの場合、異なるユーザとして (PC のような) クライアントから同時に接続を行うことができない。 二人目のユーザ接続の試みは、「アクセス拒否」 または類似の結果となる。
プリント・サービスでプリンタの名前が 指定されていないとき、多くのシステムでは使用するプリンタ名として、 この変数の値が(もしくは変数が定義されていないならlp が)利用される。しかしながら これはサーバの特性であるという訳ではない。
Samba はアカウントチェック(アカウントが無効か?)や セッション管理のため(平文のパスワードが提供されたときに) 認証に PAM を使う。samba の PAM をサポートする程度は、 SMBプロトコルとsmb.conf(5)の obey pam restrictionsの制限によって限定される。
アカウントの妥当性確認: Samba サーバに対するすべてのアクセスは、アカウントが妥当か、無効になっていないか、 その時間にログインが許可されているかを PAM と照らし合わせて チェックされる。これは暗号化されたログインにも当てはまる。
セッション管理: 共有レベルのセキュリティ (訳注:smb.conf での security = share を指す)を使用していない場合、 ユーザはアクセスが許可される前に PAM のセッションチェックをパスしなくてはいけない。 一方、共有レベルのセキュリティではこれはスキップされることに注意。 また、いくつかの古い pam 設定ファイルではセッションをサポートするために 行の追加が必要かも知れないことにも注意。
サーバによって出力されたほとんどの診断は、指定されたログファイルに 記録される。ログファイルの名前はコンパイル時に指定されるが、 コマンドラインで変更することもできる。
利用できる診断の数と性質は、サーバで使用されるデバッグ・レベルに 依存する。もし問題を抱えているなら、デバッグ・レベルを 3 に設定してログファイルに目を通すこと。
ほとんどのメッセージは充分に自明であろう。あいにく、 このマニュアルページ作成時にはあまりにもさまざまな診断メッセージが 存在しているため、診断メッセージをすべて記述することを保証できない。 そのような場合にもっともよい方法は、ソースコードを検索 (grep)することであり、着目している診断メッセージを引き起こした条件を 探すことである。
smbd に SIGHUP を送ることで、 smb.conf の内容を短時間の内に 再読み込みさせることができる。
smbd のプロセスをシャットダウンさせるのに、 最後の手段として以外には SIGKILL (-9) は 使わない ことを推奨する。共有メモリのエリアが不整合なままに なってしまうことがあるためである。smbd を安全に終了させる方法は、IGTERM (-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 によって開発されている。
Tオリジナルの 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 が行った。