SMB.CONF(5) smb.conf SMB.CONF(5) 名前 smb.conf - smbd の構成ファイル 形式 smb.conf 説明 smb.conf ファイルは Samba スイート用の構成ファイルである。 smb.conf は smbd プログラム用の実行時の構成情報を保持する。smbd は SMB プロトコルを使用して LanManager のようなサービスをクライアントに提供する。 ファイルの書式 ファイルはセクションとパラメータで構成される。一つのセクションは大かっこ([])でくくったセクション名で始まり、次のセクションが始まるまで続く。セクションは '名前 = 値' という形式のパラメータを含む。 ファイルは行を基本としている。そのため、コメント、セクション名、パラメータはそれぞれ別々の行で表す。 セクション名とパラメータ名は大文字小文字を区別しない。 パラメータの最初の '=' だけに意味がある。最初の '=' の前後の空白文字は捨てられて無視される。セクション及びパラメータ名の先頭、途中、末尾にある空白文字は関係ない。パラメータ値の先頭と末尾にある空白文字は無視される。パラメータ値の途中にある空白文字はそのまま受け付けられる。 セミコロンで始まる行は、空白文字だけを含む行と同じように無視される。 \ で終わる行は、慣習的な UNIX の通例のどおり、次の行へと続く。 イコール印 '=' の後にくるパラメータの値は、文字列(引用符は必要としない)、または論理値を意味する yes/no、0/1、true/false のいずれかを記述する。論理値の場合の記述は大文字小文字の差はないが、文字列値では、記述されたままの形式で保持される。いくつかの、たとえばファイルの作成モードの指定値などは数値となる。 サービスの書式 構成ファイル中の各セクションはサービスを記述する。セクション名はサービスの名前であり、セクション内のパラメータはサービスの属性を定義する。 [global]、[homes]、[printers] という特別の3つのセクションが存在する。これらは '特殊なセクション' の節で説明する。以下の説明は、普通のサービスの記述に対して適用する。 1つのサービスはディレクトリからなり、ディレクトリをアクセスするために、サービスをユーザに許可するためのアクセス許可の記述が与えられる。いくつかの補助的なオプションも指定可能である。 サービスはファイル・サービス(ネイティブなファイルシステムの拡張としてクライアントが使用する)またはプリント・サービス(サーバで動作しているプリンタをアクセスするためにクライアントが使用する)である。 サービスはゲスト・サービスにすることができ、この場合、サービスにアクセスするために必要なパスワードはない。この場合、指定されたゲスト・アカウントは、アクセス権を定義するために使用される。 ゲスト・サービス以外のサービスにアクセスするにはパスワードが必要である。クライアントはユーザ名をサーバへ提供する。多くのクライアントはパスワードだけを提供しユーザ名を提供しないため、パスワードチェックをするためのユーザ名のリストを、サービス定義の中で 'user=' オプションを使用して指定する。 サーバより与えられたアクセス権は、ホスト・システムより指定されたユーザまたはゲストのユーザに与えられたアクセス権によってマスクされることに注意しなさい。サーバはホスト・システムが許可する以上のアクセス権を許可をすることはできない。 以下の簡単な節はファイル・サービスを定義している。ユーザはパス /home/bar に対して書き込みアクセスできる。サービスはサービス名 'foo' でアクセス可能である。 [foo] path = /home/bar writable = true 以下の簡単な節はプリント・サービスを定義している。サービスは読み出しのみであるがプリント可能である。すなわち、書き込みアクセス権のみが、スプールファイルへのオープン、書き込み、クローズを行うために許可される。'guest ok' パラメータは既定値のゲスト・ユーザにアクセスを許可することを意味する(どこで定義しても)。 [aprinter] path = /usr/spool/public read only = true printable = true public = true 特殊セクション [global] セクション このセクション中のパラメータは、サーバの全体、またはサービスで、項目が定義していないときの既定値として適用される。詳細情報は、下記の 'パラメータ' の節を参照のこと。 [homes] セクション 'homes' と呼ばれるセクションが設定ファイル中に含まれると、接続するクライアントのホーム・ディレクトリのサービスを、サーバ実行中に作成することができる。 接続要求がされたとき、サービスの存在が調べられる。一致するサービスが見つかったならばそれが使用される。一致するサービスが見つからなければ、要求されたサービス名はユーザ名として処理され、ローカルのパスワードファイルが参照される。名前が存在しパスワードが正しく与えらたなら、サービスは [homes] セクションの複製として作成される。 いくつかの変更が、新たに作成するセクションに対して行なわれる。 サービス名が 'homes' から、登録されているユーザ名に変更される。 パスが与えられていなければ、パスはユーザのホーム・ディレクトリに設定される。 [homes] セクションで 'path=' を使用して決定するなら、%S マクロを利用することが有用であろう。たとえば 'path=/data/pchome/%S' という記述は、 PC からのホーム・ディレクトリが UNIX でアクセスする場合のホーム・ディレクトリと違う場合に便利である。 これは多数のクライアントにホームディレクトリを提供する上で、最小の手間で簡単に早く実現する方法である。 要求されたサービス名が 'homes' ならば同様の処理が行われるが、サービス名が要求したユーザの名前に変更されることはない。[homes] セクションを使用しての方法は、異なるユーザでクライアント PC を共有する場合に有効である。 [homes] セクションは、通常のサービス・セクションで指定可能な全てのパラメータを指定可能であるが、いくつかは他のセクションより強い意味を持つ。次の例は典型的で適切な [homes] セクションである。 [homes] writable = yes 重要な点: ゲストによるアクセスを [homes] セクションに指定した場合、全てのホームディレクトリが全てのクライアントからパスワードなしでアクセス可能となる。とてもまれな形態である。この形態を実際に望むなら、読み出しアクセスのみの指定を記述することが賢明である。 自動ホーム・ディレクトリの browseable フラグは、[global] の browseable フラグから継承され、[homes] の browseable フラグではないことに注意しなさい。これは、[homes] セクション中の browseable=no 設定が [homes] セクションを隠すが、自動ホーム・ディレクトリは可視になるため便利である。 [printers] セクション このセクションは [homes] のように機能するが、プリンタ用である。 [printers] セクションが構成ファイルに記述されているなら、ユーザはローカル・ホストの printcap ファイルに記述されたプリンタに接続可能となる。 接続要求がされたとき、存在するサービスが調べられる。一致するサービスが見つかったならそれが使用される。一致するサービスが見つからないが [homes] セクションが存在するならば、上記で説明したようなサービスが使用される。それでもなければ、要求されたサービス名がプリンタ名として扱われ、それが有効なプリンタの名前であれば確認するため適当な printcap ファイルが調べられる。一致するプリンタ名が見つかったなら、[printers] セクションの複製として新しいサービスが作成される。 いくつかの変更を新たに作成するセクションに対して行う。 サービス名が存在するプリンタ名に設定される。 プリンタ名が与えられていなければ、プリンタ名は存在するプリンタ名に設定される。 サービスにゲストのアクセス許可がなく、ユーザ名が与えられていなければ、ユーザ名は存在するプリンタ名に設定される。 [printers] サービスは、指定してあるならプリント可能(訳註:printable = yes)にする必要があることに注意しなさい。そうでなければサーバは構成ファイルを読み込みを拒否するだろう。 おきまりのように、パスの指定は sticky ビットがセットされた誰でも書き込み可能なスプール・ディレクトリである。典型的な [printers] エントリは次のようになる。 [printers] path = /usr/spool/public writable = no public = yes printable = yes printcap ファイル中にあるプリンタのすべての別名(alias)は、サーバに接続している限り正当なプリンタ名となる。あなたのプリンタ・システムがこのように動作していないのであれば、仮の printcap ファイルを設定する。それは次のような行を1つ、もしくはそれ以上の行を含んだファイルである。 alias|alias|alias|alias... 各 alias は、あなたのプリンタ・システムで処理可能なプリンタ名にする必要がある。[global] セクションにおいて、新しいファイルを printcat として指定すること。サーバは、好みの別名を含んだ仮の printcap から名前を1つ認識する。同様のテクニックは、ひとまとまりのローカル・プリンタに対するアクセス制限を簡単にするために使用できる。 一つの別名は、printcap のレコードの最初のエントリを構成している要素で定義される。レコードは行で分けられており、構成要素は(一つ以上あるなら)縦棒 '|' で分けられる。 パラメータ パラメータはサービスの属性の指定を定義する。 いくつかのパラメータ(たとえば security)は [global] セクションで指定する。いくつかのパラメータ(たとえば create mode)はすべてのセクションで使用できる。ほかのすべては通常のセクションでのみ許される。以下の記述の目的のため、[homes] と [printers] セクションは通常のセクションであるとみなされる。丸カッコで括られた 'G' の文字は、パラメータが [global] セクションでの固有のオプションであることを示す。'S' の文字は、パラメータが特定のサービス・セクションで指定されることを示す。'S' が付いているすべてのパラメータは [global] セクションでも指定可能であることに注意しなさい。[global] セクションで指定された場合、すべてのサービスの既定値として定義する。 以下ではパラメータはアルファベット順で配置されている。これは、最適のは位置とはなっていないが、少なくともそれらを知ることはできる!同義語が存在するところでは、望まれた同義語が記述され、他方では望まれた同義語が参照される。 変数の置き換え 構成ファイル中に設定可能な文字列の多くは、置換することができる。たとえば、オプション "path = /tmp/%u" は、ユーザがユーザ名 "john" で接続したなら "path = /tmp/john" として解釈される。 これらの置換操作は、下記の記述でさらに説明されているが、関係するときに適用される一般的な置換操作が存在する。それらは: %S = 現在のサービス名(常時) %P = 現在のサービスのルート・ディレクトリ(常時) %u = 現在のサービスのユーザ名(常時) %g = %u の本来のグループ名 %U = セッションのユーザ名(ユーザ名はクライアントが要求するが、必ずしもそれが取得した名前と同じものではない) %G = %U の本来のグループ名 %H = %u で与えられたユーザのホーム・ディレクトリ %v = Samba のバージョン %h = Samba が動作しているホストの名前 %m = クライアント・マシンの NetBIOS 名(とても有用) %L = サーバの NetBIOS 名。これはクライアントのサーバの呼び方を基にして構成を変更することが可能となる。サーバは "2つの人格" を持つことができる。 %M = クライアント・マシンのインターネット名 %d = 現在のサーバ・プロセスのプロセス ID %a = リモート・マシンのアーキテクチャ。100% 確実ではなく、いくつかだけが認識される。それらは現状では、Samba、WfWg、WinNT、Windows95 である。それらでなければ "UNKNOWN" と識別される。もし誤った認識をしたなら、レベル3のログを私に送ることにより、修正できるかもしれない。 %I = クライアント・マシンの IP アドレス %T = 現在の日付と時刻 これらの置換操作とほかの smb.conf のオプションにより、いくつかのまったく創造的な動作を設定できる。 名前の変換(NAME MANGLING) Samba は 8.3 形式に従っていないファイル名を DOS や Windows が使用できるように、"名前の変換" をサポートする。それはまた、8.3 形式のファイル名の大文字小文字の調節を設定できる。 変換の実行を制御をするいくつかのオプションが存在し、それらは別々にリストしないで、ここでまとめる。既定値は testparm プログラムの出力を参照しなさい。 これらのオプションの全ては各サービスに分けて設定できる。(もちろん全体にも設定可能) オプションは下記の通り: "mangle case = yes/no" は名前の文字に "default case" に指定された大文字、または小文字以外の文字を含んでいるなら変換を実行するかどうかを制御する。これが yes ならば、"Mail" のような名前は変換される。既定値は no。 "case sensitive = yes/no" はファイル名の大文字・小文字を区別をするかどうかを制御する。区別されないとき、Samba は渡された名前を検索・一致させるときに区別しないようにしなければならない。既定値は no。 "default case = upper/lower" は新しいファイル名における既定の文字の大きさを制御する。既定値は lower。 "preserve case = yes/no" は、ファイルを作成するときに名前が大文字と小文字を含んでいる場合、クライアントから渡された名前を通すか "default case" に指定された文字の大きさに強制的に変換するかを制御する。既定値は no。 "short preserve case = yes/no" は、8.3形式(すべて大文字で適当な長さ)の新しいファイルをすべて大文字で作成するか、"default case" に指定された文字の大きさに強制的に変換するかを制御する。このオプションは、8.3形式の名前を小文字にする一方、"preserve case = yes" によって長いファイル名の状態を維持するのに使用できる。既定値は no。 グローバル・パラメータの全リスト 全てのグローバル・パラメータの一覧である。詳細は各パラメータのセクションを参照しなさい。いくつかは同義語であることに注意しなさい。 auto services config file deadtime debuglevel default default service dfree command encrypt passwords getwd cache hosts equiv include keepalive lock dir load printers lock directory log file log level lpq cache time mangled stack max log size max packet max xmit message command null passwords os level packet size passwd chat passwd program password level password server preferred master preload printing printcap name protocol read bmpx read prediction read raw read size remote announce root root dir root directory security server string smbrun socket address socket options status strip dot time offset username map use rhosts valid chars workgroup write raw サービス・パラメータの全リスト 全てのサービス・パラメータ一覧である。詳細は各パラメータのセクションを参照しなさい。いくつかは同義語であることに注意しなさい。 admin users allow hosts alternate permissions available browseable case sensitive case sig names copy create mask create mode comment default case delete readonly deny hosts directory dont descend exec fake oplocks force group force user guest account guest ok guest only hide dot files hosts allow hosts deny invalid users locking lppause command lpq command lpresume command lprm command magic output magic script mangle case mangled names mangling char map archive map hidden map system max connections min print space only guest only user path postexec postscript preserve case print command printer driver print ok printable printer printer name public read only read list revalidate root postexec root preexec set directory share modes short preserve case strict locking sync always user username users valid users volume wide links writable write ok writeable write list 各パラメータの説明 admin users (G) このパラメータは、共有操作の特権が与えられるユーザのリストである。指定されたユーザは、スーパー・ユーザ(root)のように、すべてのファイル操作を実行できる。 このオプションは十分に注意して使用すべきである。このリストに登録されているユーザは、ファイル・パーミッションに関係なくあらゆる操作を行うことができる。 既定値: admin users なし 例: admin users = janson auto services (G) このパラメータは、自動的にブラウズ・リストに追加したいサービスのリストである。これはホーム・ディレクトリやプリンタなどのサービスにとってはもっとも便利であり、これを利用しないと不可視になる。 printcap に記述した全てのプリンタを指定するなら、"load printers" オプションがより簡単であることに注意しなさい。 既定値: auto services なし 例: auto services = fred lp colorlp allow hosts (S) このパラメータの同義語は 'hosts allow' である。 このパラメータは、サービスへのアクセスが許される、コンマで区切られたホスト名一覧である。[global] セクションに指定された場合、一致するホストは、明確にアクセス除外対象でない、任意のサービスへのアクセスが許可される。特定のサービスが独自のリストを持っているなら、[global] セクションで指定されたものは無視される。 これはホスト名か IP アドレスで指定できる。たとえば、"allow hosts = 150.203.5." のように記述すると、クラス C のサブネットに属するホストにのみアクセスを制限することができる。リストの詳細な記述方法は hosts_access(5) のマニュアルに記述されている。 network/netmaskのペア、さらにシステムがネットグループをサポートするならば、ネットグループ名によってもホストを指定することができる。EXCEPT キーワードはワイルドカードのリストを制限するために使用できる。以下の例はいくらかの手がかりとなるだろう: 例1: 一つを除いて 150.203.*.* 内のすべての IP に許可する hosts allow = 150.203. EXCEPT 150.203.6.66 例2: 与えられた network/netmask に一致するホストに許可する hosts allow = 150.203.15.0/255.255.255.0 例3: 2つのホストに許可する hosts allow = lapland, arvidsjaur 例4: netgroup "foonet" または localhost にのみ許可するが、一つの特定のホスト(pirate)からのアクセスは拒否する hosts allow = @foonet, localhost hosts deny = pirate アクセスにはさらに適当なユーザ・レベルのパスワードが必要なことに注意しなさい。 あなたのホストのアクセスがあなたの期待した動作をするかどうかをテストする方法を知るには testparm(1) を参照しなさい。 既定値: なし (つまり、すべてのホストがアクセスを許可される) 例: allow hosts = 150.203.5. myhost.mynet.edu.au alternate permissions (S) このオプションは、UNIX のファイルに対して DOS の "リードオンリー" 属性を提供する方法に影響する。もし false ならば、リードオンリーのビットが、書き込み可能な共有ファイルに対し設定され、ユーザが書き込みできなくなる。 もしこれが true なら、ファイルに対するユーザの書き込みビットが設定されない。 後者の振る舞いは、ユーザがほかのディレクトリからファイルをコピーするときや、パーミッションを維持するファイル・マネージャを使用するときに便利である。このオプションなしでは、コピーされた全てのファイルが "リードオンリー" ビットを持ってしまい悩ませるであろう。 既定値: alternate permissions = no 例: alternate permissions = yes available (S) このパラメータは、サービスの停止を行う。もし 'available = no' ならば、サービスへ接続するための試行は全て失敗する。その失敗は記録される。 既定値: available = yes 例: available = no browseable (S) これは、ネット・ビューやブラウズ・リスト中の、有効な共有のリストに、この共有が見えるかどうかを制御する。 既定値: browseable = Yes 例: browseable = No case sig names (G) "case sensitive" を参照。 comment (S) このオプションは、クライアントが、ネット・ビューにより共有可能なリストを参照したときに表示されるテキスト・フィールドである。これはまた、ブラウジングが完全にサポートされているときにも使用される。 既定値: コメント文字列はない 例: comment = Fred's Files config file (G) このオプションは、構成ファイルを無効化し、既定(普通は smb.conf)の代わりに使用することを許可する。その構成ファイル中にこのオプションが設定されていると、"鶏と卵問題" が発生する! その理由は、パラメータが読み込まれて構成ファイルの名前が変更されたとき、その名前が新しい構成ファイルから再読み込みされるかもしれないことにある。 このオプションはとても有用な通常の置換操作を行う。 構成ファイルが存在しない場合には読み込まれない。(いくつかのクライアントに適合する特別な構成ファイルを指定することができる) 例: config file = /usr/local/samba/lib/smb.conf.%m copy (S) このパラメータは、サービス・エントリの '複製' を作ることを許可する。指定されたサービスは、単に現在のサービスの名前へと複製される。現在のセクションに指定されたパラメータは、コピーされたセクション中のそれらを無効にする。 この機能は、'ひな型(templete)' となるサービスを設定し、類似のサービスを簡単に作成することができる。コピーされるサービスは、コピーを行うサービスより前に構成ファイル中に配置する必要があることに注意しなさい。 既定値: なし 例: copy = otherservice create mask (S) このパラメータの同義語は 'create mode' である。 このパラメータは、8進数で表すモードで、DOS から UNIX のモードへの変換を行うときに使用される。 Samba が適切に動作するには、少なくともユーザによる読み込み、書き込み、実行許可を持つべきであり、そのためにはこの値を 0700 にすることに注意しなさい。 既定値: create mask = 0755 例: create mask = 0775 create mode (S) create mask を参照。 dead time (G) パラメータの値(10進の整数)は、接続が使われなくなったとみなされてから切断するまでの時間(分)を表す。切断までの時間は、オープンされているファイル数がゼロの場合にのみ経過する。 これは、多くの不活性な接続によって、サーバのリソースが枯渇するのを防ぐのに有用である。 多くのクライアントは、このパラメータをユーザに意識させないように、接続が切れたときに自動で再接続する機能を持っている。 このパラメータを使用して数分でタイム・アウトするように設定することが、多くのシステムに推奨される。 切断時間にゼロを指定することは、自動切断が実行されないことを意味する。 既定値: dead time = 0 例: dead time = 15 debug level (G) パラメータの値(整数)は、smb.conf ファイルにデバッグ・レベル(ログ・レベル)の指示を与える。これはシステムの構成に大きな柔軟性を与えるためにある。 既定では、デバッグ・レベルはコマンドラインで指定される。 例: debug level = 3 default (G) default service を参照。 default case (S) "名前の変換(NAME MANGLING)" の節を参照。また、"short preserve case" をも注意しなさい。 default service (G) このパラメータの同義語は 'default' である。 このパラメータは、実際に要求されたサービスが見つからなかったときに接続される。サービスの名前を指定する。パラメータの値には、大かっこ('[' と ']')が付かないことに注意しなさい(下記の例を参照)。 このパラメータの既定値は存在しない。このパラメータが指定されていない場合、存在しないサービスへの接続の試みはエラーとなる。 一般的に、既定値のサービスは、パブリックでリードオンリーなサービスである。 バージョン 1.9.14 の時点では、外見上のサービス名が要求されたサービスと同じに変更され、このことは、%S のようなマクロを使用してワイルドカード・サービスを作るには非常に有用となる。 既定値のサービスに使用されるサービス名の中の文字 '_' は、'/' にマッピングされることにも注意しなさい。これは興味深いことを可能にする。 例: default service = pub [pub] path = /%S delete readonly (S) このパラメータは、リードオンリー・ファイルの削除を許可する。これは、通常の DOS の文法ではないが、UNIX においては認められる。 このオプションは、UNIX ファイルの所有権がファイルパーミッションの変更を妨げ、DOS の文法がリードオンリー・ファイルの削除を妨げる、rcs のようなアプリケーションを動作させるのに有用であろう。 既定値: delete readonly = No 例: delete readonly = Yes deny hosts (S) このパラメータの同義語は 'hosts deny' である。 'allow hosts' と相反するものであり、ここにリストされたホストは、特定のサービスが、この指定を無効にするため独自のリストを持っていなければ、サービスへのアクセスは拒否される。複数のリストで重複している場合、'allow' リストが優先される。 既定値: なし (明確に除外されるホストはない) 例: deny hosts = 150.203.4. badhost.mynet.edu.au dfree command (G) dfree commnad の設定は、内部ディスクの空き容量の計算に問題があるシステムにのみ使用されるべきである。これは Ultrix において発生することが知られているが、他のオペレーティング・システムでも発生するかもしれない。症状は、各々のディレクトリの一覧表示の終了時に "終了 再試行 無視 (Abort Retry Ignore)" のエラーが発生するときに見られる。 この設定は、総ディスク容量と有効な容量を計算するための内部ルーチンを置き換える外部ルーチンを指定する。下の例は、この機能を果たすであろう可能なスクリプトを示す。 外部プログラムは、調べたいファイルシステム中の、指定されたディレクトリを1つのパラメータとして受け取る。これは一般には "./" という文字列である。スクリプトはアスキー文字で2つの整数を返さなければならない。1つめはブロック単位のディスク総容量でなければならない。そして2つめは利用できるブロック数でなければならない。任意の3番の戻り値は、バイト単位のブロックサイズである。既定のブロックサイズは 1024 バイトである。 注意: スクリプトは setuid または setgid してはならず、root の所有(そして root のみ書き込み可能)にすべきである。 既定値: ディスクの総容量と残容量を測定する既定の内部ルーチンが使用される。 例: dfree command = /usr/local/samba/bin/dfree スクリプト dfree (実行可能にする必要がある)は、次のようなものである。 #!/bin/sh df $1 | tail -1 | awk '{print $2" "$4}' または(Sys V 系 UNIX) #!/bin/sh /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}' いくつかのシステムでは、フルパス名に置き換えなければならないことに注意。 directory (S) path を参照。 dont descend (S) いくつかのシステムでは、特定のディレクトリ(たとえば Linux での /proc)が存在し、それらはクライアントにとって関係がないか、限りなく深い(再帰的)。このパラメータは、サーバが、常にからのように見せるべきディレクトリをコンマで区切って指定する。 Samba は "dont descend" の正確な書式について、非常に曖昧にできることに注意せよ。たとえば、 "/proc" の代わりに "./proc" を必要とするかもしれない。実験はとてもいい手段である。 :-) 既定値: なし (すなわち、全てのディレクトリの中が見える) 例: dont descend = /proc,/dev encrypt passwords (G) この論理値は、暗号化されたパスワードで、クライアントでクライアントとネゴシエーションするかどうかを制御する。このオプションは、DES(= Data Encryption Standard、データ暗号化規格)ライブラリと暗号化コードを指定してコンパイルされていない場合、無効であることに注意。既定値は no である。 exec (S) これは preexec の別名である。 force group (S) このパラメータは、このサービスとのすべての接続が構成されるべきグループ名を指定する。これはファイルの共有に有用である。 既定値: 強制するグループはない 例: force group = agroup force user (S) このパラメータは、このサービスとのすべての接続が構成されるべきユーザ名を指定する。これはファイルの共有に有用である。このパラメータを間違って使用すると、セキュリティ問題を引き起こす原因となるので、慎重に使用すべきである。 このユーザ名は、接続が確立したときのみ使用される。従って、クライアントは有効なユーザで接続し、有効なパスワードを提供しなければならない。一度接続されると、全てのファイル操作は "強制するユーザ(forced user)" によって実行され、クライアントが接続したときのユーザ名は重要ではない。 既定値: 強制するユーザはない 例: force user = auser guest account (S) これは、'guest ok' (下記参照)を指定したサービスにアクセスする時に使用するユーザ名である。このユーザのあらゆるパーミッションは、ゲスト・サービスに接続している任意のクライアントに有効となる。一般的に、このユーザはパスワード・ファイルに存在するだろうが、有効なログインをすることはできない。特定のサービスにユーザ名が指定されている場合、指定されたユーザ名はこのユーザ名を無効にする。 あるシステムでは、アカウント "nobody" は印刷することができない。この場合は別のアカウントを使用しなさい。ゲスト・ユーザでログイン(おそらく "su -" コマンドを使用する)して、lpr を使用して印刷を試すことでこれをテストすべきである。 Samba のバージョン 1.9 では、このオプションは各サービスそれぞれに設定されることに注意。 既定値: コンパイル時の指定 例: guest account = nobody getwd cache (G) これは調整オプションである。これを有効にすると、キャッシュ・アルゴリズムが使用され、getwd() の呼び出し時間を減少させる。これは、wide links パラメータが無効になったとき、パフォーマンスに対して相当な効果がある。 既定値: getwd cache = No 例: getwd cache = Yes guest ok (S) public を参照。 guest only (S) あるサービスの、このパラメータが 'yes' ならば、サービスへの接続はゲストのみ許される。サービスで "guest ok" か "public" が設定されていない場合、このパラメータは効果がない。 このオプションについてのより詳細な情報は、下記の "ユーザ名/パスワード認証について" の節を参照のこと。 既定値: guest only = no 例: guest only = yes hide dot files (S) これは論理値のパラメータであり、ドットで始まるファイルを隠しファイルとするかどうかを制御する。 既定値: hide dot files = yes 例: hide dot files = no hosts allow (S) allow hosts を参照。 hosts deny (S) deny hosts を参照。 group (S) これは "force group" の別名であり、Samba の古いバージョンとの互換性を維持するためにのみある。これは将来のバージョンでは削除されるかもしれない。 hosts equiv (G) このグローバル・パラメータに空白以外の文字列があると、それは、パスワード指定なしでアクセスできるユーザ名とホスト名の名前を読むためのファイル名を特定する。 これは、サービスにアクセスするホストで関係する allow hosts とは混同されず、ゲスト・サービスにさらに有用である。hosts equiv は Samba にパスワードを供給しない NT クライアントに有用であろう。 注意: hosts.equiv の使用は、重大なセキュリティ・ホールが起こりうる。これは、PC が正確なユーザ名を提供すると信頼しているためである。PC に不正確なユーザ名を提供させることは非常に簡単である。hosts.equiv オプションは、あなたが実行することを本当に理解しているか、おそらく家庭ネットワークにおいて妻と子供を信頼している場合にのみ使用することを推奨する :-) 既定値: 相当するホストはない 例: hosts equiv = /etc/hosts.equiv interfaces (G) このオプションは、Samba がすべてのインターフェースで正しくブラウジングを扱うことができるように、複数のネットワーク・インターフェースを構成することを可能にする。 このオプションは、IP アドレス/ネットマスクのペアのリストを受け入れる。ネットマスクはビット・マスク、またはビット長となる。 たとえば、次のような行があるとする。 interfaces = 192.168.2.10/24 192.168.3.10/24 これは、IP アドレス 192.168.2.10 と 192.168.3.10 を持つ2つのネットワーク・インターフェースを構成する。両インターフェースのネットマスクは 255.255.255.0 に設定される。 別の形式を好むなら、次のような行によって同等の結果を作り出すことができる: interfaces = 192.168.2.10/255.255.255.0 192.168.3.10/255.255.255.0 このオプションが設定されていなければ、Samba は最初のインターフェースを探そうとするが、1つ以上のインターフェースは構成しようとしない。 invalid users (S) これは、このサービスへのログインを許可すべきでないユーザのリストである。これは、誤った設定があなたのセキュリティに違反しないことを完全に保証するための、本当に "偏執病的な(paranoid)" チェックである。 @ で始まる名前は、UNIX のグループに解釈される。 現在のサービス名は %S で置き換えられる。これは [homes] セクションで有用である。 "valid users" も参照のこと。 既定値: 無効なユーザはない 例: invalid users = root fred admin @wheel include (G) これは、内部に別の1つの設定ファイルを取り込むことができる。このファイルはまるでその場所に打ち込んだように、実際に含まれる。 これは、%s、%P、%S を除いた標準の置換操作を受け入れる。 keep alive (G) このパラメータの値(整数)は、'keepalive' パケット間の秒数を表す。このパラメータが 0 であると、keepalive パケットは送信されない。keepalive パケットを送信すると、クライアントがまだ存在し応答するかどうかをサーバが知ることができる。 通常 keepalive は、使用されているソケットに SO_KEEPALIVE 属性が設定されている場合には必要ではない("socket options" を参照)。基本的に、あなたが問題にぶつかった場合にだけこのオプションを使用するべきである。 既定値: keep alive = 0 例: keep alive = 60 load printers (G) printcap の全てのプリンタが既定でブラウズされるようにロードされるかどうかを制御する論理値である。 既定値: load printers = no 例: load printers = yes lock directory (G) このオプションは、ロック・ファイルが置かれるディレクトリを指定する。ロック・ファイルは "max connections" オプションの実装で使用される。 既定値: lock directory = /tmp/samba 例: lock directory = /usr/local/samba/var/locks locking (S) これは、クライアントからのロック要求への応答において、サーバによってロックが実行されるかどうかを制御する。 "locking = no" であれば、全てのロックとロック解除要求は成功したように見え、全てのロック状態問い合わせ要求は、問い合わせたロックは解除状態を示す。 "locking = yes" であれば、本当のロックがサーバによって実行される。 このオプションは、ロックが必要ないリードオンリー・ファイルシステム(CD-ROM ドライブなど)において特に有用である。 グローバルであろうとサービス中であろうとロックを無効にすることにより、ロックの欠如がデータ破壊を引き起こすかもしれないことに注意。 既定値: locking = yes 例: locking = no log file (G) このオプションは Samba のログ・ファイル(デバッグ・ファイルとしても知られる)の名前を代替する。 このオプションは、ユーザやマシン毎にログ・ファイルを分割させるために、標準の置換操作を受け入れる。 例: log file = /usr/local/samba/var/log.%m log level (G) "debug level" を参照。 lppause command (S) このパラメータは、特定のプリント・ジョブの印刷停止かスプール実行のためにサーバ・ホスト上で実行されるコマンドを指定する。 このコマンドは、プリント・ジョブを停止するためのプリンタ名とジョブ番号を受け取る、プログラムまたはスクリプトでなければならない。現時点で、簡単なオプションでこれを実行できるプリントスプール・システムは、Trinity College (ppr-dist.trincoll.edu/pub/ppr) の PPR システム以外には知られていない。これを実装する1つの方法は、ジョブの優先権を利用するもので、非常に低い優先権を持つジョブはプリンタに送られない。lpresume command も参照のこと。 %p が与えられると、その場所にプリンタ名が置かれる。%j はジョブ番号(整数)に置き換えられる。HPUX(printing=hpux を参照) において lpq command に -p%p オプションが追加されていると、ジョブは正しい状態を示す。たとえば、ジョブの優先権が設定されたフェンス優先権より低いならジョブは停止状態であるが、優先権が等しいかより高いならスプール状態または印刷中の状態となる。 サーバの PATH環境変数 が利用できないかもしれないことを考慮して、lppause command に絶対パスを含めることはよい習慣であることに注意。 既定値: 現時点で、この文字列に与えられる既定値はない HPUX 用の例: lppause command = /usr/bin/lpalt %p-%j -p0 lpq cache time (G) これは、lpq コマンドが非常に頻繁に呼び出されるのを防ぐため、キャッシュされる lpq 情報の長さを制御する。システムで使用される lpr コマンドのバリエーション毎に個々のキャッシュが保持され、ユーザ別に違う lpq コマンドを使用する場合はキャッシュ情報を共有しない。 キャッシュ・ファイルは /tmp/lpq.xxxx に保存され、xxxx は使用している lpq コマンドのハッシュ値となる。 既定値は 10 秒で、キャッシュされたデータが 10 秒以内のものである場合、前回と全く同じ lpq コマンドの結果が使用される。lpq コマンドが非常に遅いなら、大きな値にすることをお勧めする。 値を 0 にすると、キャッシュは完全に無効になる。 既定値: lpq cache time = 10 例: lpq cache time = 30 lpq command (S) このパラメータは、"lpq" 形式のプリンタの状態情報を得るために、サーバ・ホストで実行されるコマンドを指定する。 このコマンドは、唯一のパラメータとしてプリンタ名を受け取り、プリンタの状態情報を出力する、プログラムかスクリプトでなければはならない。 現在は7種類、BSD、SYSV、AIX、HPUX、QNX、LPRNG、PLP のプリンタ状態情報の形式がサポートされている。これは大部分の UNIX システムを包括する。"printing =" オプションを使用して種類を指定する。 いくつかのクライアント(特に Windows for Workgroups)は、状態情報を要求しているプリンタの接続番号を正確に送らない。これを回避するために、サーバはクライアントに接続されている最初のプリンタ・サービスを報告する。これは送られた接続番号が無効な場合にのみ起こる。 %p が与えらると、その場所にはプリンタ名が置かれる。そうでなければ、プリンタ名はコマンドの最後に置かれる。 サーバの PATH環境変数 が利用できないかもしれないことを考慮して、lppause command に絶対パスを含めることはよい習慣であることに注意。 既定値: "printing =" の設定に依存する 例: lpq command = /usr/bin/lpq %p lpresume command (S) このパラメータは、特定のプリント・ジョブの印刷やスプールを再始動したり続行するためにサーバ・ホスト上で実行されるコマンドを指定する。 このコマンドは、プリント・ジョブを再開するためのプリンタ名とジョブ番号を受け取るプログラムまたはスクリプトでなければならない。lppause command も参照のこと。 %p が与えられると、その場所にはプリンタ名が置かれる。%j はジョブ番号(整数)に置き換えられる。 サーバの PATH環境変数 が利用できないかもしれないことを考慮して、lpresume command に絶対パスを含めることはよい習慣であることに注意。 既定値: 現時点でこの文字列に与えられる既定値はない HPUX 用の例: lpresume command = /usr/bin/lpalt %p-%j -p2 lprm command (S) このパラメータは、プリント・ジョブを削除するためにサーバ・ホスト上で実行されるコマンドを指定する。 このコマンドは、プリンタ名とジョブ番号を受け取り、プリント・ジョブを削除するプログラムかスクリプトでなければならない。 現在は7種類、BSD、SYSV、AIX、HPUX、QNX、LPRNG、PLP のプリンタ制御の形式がサポートされている。これは大部分の UNIX システムを包括する。"printing =" オプションを使用して種類を制御する。 %p が与えられると、その場所にプリンタ名が置かれる。%j はジョブ番号(整数)に置き換えられる。 サーバの PATH環境変数 が利用できないかもしれないことを考慮して、lprm command に絶対パスを含めることはよい習慣であることに注意。 既定値: "printing =" の設定に依存する 例1: lprm command = /usr/bin/lprm -P%p %j 例2: lprm command = /usr/bin/cancel %p-%j magic output (S) このパラメータは、magic script(下の magic script を参照)によって生成される出力を記録するファイルの名前を指定する。 警告: もしも、2つのクライアントが同じディレクトリで 同じmagic script を使用する場合、出力ファイルの中身は不確定となる。 既定値: magic output = .out 例: magic output = myfile.txt magic script (S) このパラメータは、オープンされたファイルがクローズされた時にサーバによって実行されるファイルの名前を指定する。これは、接続したユーザにかわって、UNIX スクリプトが Samba ホストへ送られて実行される。 この方法で実行されたスクリプトは、許可のうえで実行終了と共に削除される。 スクリプトが出力を生成すると、出力は magic output パラメータ(上記参照)に指定したファイルに送られる。 いくつかのシェルは、行端コードとして、ラインフィードの代わりにキャリッジリターン-ラインフィードを含んでいるスクリプトを解釈できないことに注意。magic script は "そのまま" ホストで実行できる必要があり、いくつかのホストといくつかのシェルでは DOS でのフィルタリングが必要であろう。 magic script は実験用であり、あてにするべきではない。 既定値: なし。Magic scripts は無効 例: magic script = user.csh mangled map (S) このオプションは、DOS では表示できない UNIX のファイル名を直接的に変換を要求するものである。名前の変換は常に必要とされるわけではない。実際、DOS と UNIX 間で異なるファイル拡張子をもつドキュメントがあってもよい。たとえば、UNIX においては通常は HTML ファイルは .html が使用されるが、一方 DOS ではより一般的に .htm が使用される。 'html' から 'htm' へ変換するには、次のように記述する: mangled map = (*.html *.htm) あるとても便利な事例としては、いくつかの CD-ROM のファイル名末尾のイライラする ;1 (いくつかの UNIX でのみ見える)を取り除くことである。これを行うには (*;1 *) の変換を使用する。 既定値: mangled map はない 例: mangled map = (*;1 *) mangle case (S) "名前の変換(NAME MANGLING)" の節を参照。 mangled names (S) これは、 UNIX 上の 非 DOS の名前を DOS 互換の名前で表す("変換する")ことで表示可能にするか、非 DOS の名前は単純に無視するかどうかを制御する。 変換処理の制御方法の詳細は、"名前の変換(NAME MANGLING)" の節を参照のこと。 変換が使用されると、変換アルゴリズムは以下のようになる: - ファイル名の、もっとも右のドットより前の先頭から5文字の英数字は、保持されて大文字へと強制的に変換され、変換された名前の先頭から5文字にあらわれる。 - チルダ("~")が変換された名前の最初の部分に追加され、本来のベース名(すなわち、本来のファイル名から、その拡張子を引いたもの)をベースとした2文字の一意シーケンスが続く。最後の拡張子が大文字を含んでいるか3文字より長い場合、その拡張子はハッシュの計算に含められる。 ~ を好まないのならば、"mangling char" オプションを利用して使用する文字を指定できることに注意。 - 最後の拡張子の先頭から3文字の英数字は、保持されて大文字へと強制的に変換され、変換された名前の拡張子となる。最後の拡張子は、本来のファイル名のもっとも右のドットの部分から定義される。ファイル名にドットが存在しない場合、変換された名前は拡張子を持たない(隠しファイルの場合は除く - 下を参照)。 ドットで始まる名前をもつ UNIX のファイルは、DOS の隠しファイルのように見える。変換された名前は別のファイル名のように生成されるが、先頭のドットが取り去られ、実際の本来の拡張子に関係なく "___" (3つのアンダー・スコア)がその拡張子となる。 2桁のハッシュ値は、大文字の英数字から成る。 このアルゴリズムは、ディレクトリ内のファイルが同一の先頭5文字の英数字を割り当てている場合にのみ、名前の衝突が起こる。そのように衝突する確率は、1/1300 である。 名前の変換が有効でると、DOS から、長い UNIX ファイル名を保持したまま UNIX ディレクトリ間のファイルのコピーができる。UNIX のファイルは DOS から新しい拡張子に名前を変更することができ、同じ基本名を保持することができる。変換した名前はセッション間で変化しない。 既定値: mangled names = yes 例: mangled names = no mangling char (S) これは、名前の変換における "マジック" キャラクターとして使用される文字を制御する。既定値は ~ であるが、これはいくつかのソフトウェアに干渉するだろう。呼のみの設定にするため、このオプションを使用しなさい。 既定値: mangling char = ~ 例: mangling char = ^ max disk size (G) このオプションは、ディスクの見かけのサイズに上限を設定することができる。このオプションを 100 に設定すると、すべての共有は 100MB 以上のサイズに見えることはない。 このオプションは、ディスクに置くことができるデータの量を制限しないことに注意。上記の場合、さらに 100MB 以上をディスクに格納することができるが、クライアントがディスクの空き容量や総ディスクサイズを求めると、結果は "max disk size" で指定された量に制限される。 このオプションは、非常に大きいディスク、特に 1GB を越えるサイズをもつディスクを扱えないソフトウェアのバグを回避して動作させるために、主に有用である。 "max disk size = 0" は上限がないことを意味する。 既定値: max disk size = 0 例: max disk size = 1024 max log file (G) このオプション(キロバイト単位の整数)は、増加していくログ・ファイルの最大サイズを指定する。Samba は定期的にサイズを調べて、超過したならファイルの拡張子に .old を追加して名前を変更する。 サイズ 0 は制限がないことを意味する。 既定値: max log size = 5000 例: max log size = 1000 max xmit (G) このオプションは、Samba によって交渉される最大のパケット・サイズを制御する。既定値は 65535 であり、これが最大である。ある場合、より小さい値でより良い性能を得る。2048 以下ではおそらく問題が出るだろう。 既定値: max xmit = 65535 例: max xmit = 8192 mangled stack (G) このパラメータは、Samba サーバでキャッシュすべき圧縮された名前の数を制御する。 このスタックは、最後に圧縮されたベース名のリストである(拡張子は、拡張子が3文字より長いか大文字を含む場合のみ維持される)。 より大きな値のほうが、圧縮された名前を、長い UNIX の名前に修正して上手に変換することができる。しかし、スタック・サイズが大きくなるので、ディレクトリのアクセスが、より遅くなる。より小さなスタックは、サーバのメモリを節約する(それぞれのスタック要素は 256 バイトである)。 正確な長いファイル名を完全に保証することは不可能であり、時々思いがけないこと覚悟させる。 既定値: mangled stack = 50 例: mangled stack = 100 map archive (S) これは、DOS のアーカイブ属性を UNIX の実行ビットに割り当てられるかどうかを制御する。DOS のアーカイブ・ビットは、最後のバックアップ以後にファイルが変更されるとセットされる。このオプション作成の一つの理由は、Samba あるいは あなたの PC が作成するファイルが UNIX 配下で実行可能となるのを防ぐことである。これは、共有しているソースコード、ドキュメント、その他での悩みを解消できる。 既定値: map archive = yes 例: map archive = no map hidden (S) これは、DOS の隠し形式ファイルが UNIX の実行ビットに割り当てられるかどうかを制御する。 既定値: map hidden = no 例: map hidden = yes map system (S) これは、DOS のシステム形式ファイルが UNIX の実行ビットに割り当てられるかどうかを制御する。 既定値: map system = no Example: map system = yes max connections (S) このオプションは、サーバへの同時接続数を制限させる。もし "max connections" が 0 より大きいならば、この数のサーバの接続がすでにオープンされている場合には接続は拒否される。値が 0 の場合は、接続できる数は無制限であることを意味する。 レコードロックファイルが、この役割を実装するために使用される。ロックファイルは、"lock directory" オプションによって指定されたディレクトリに保存される。 既定値: max connections = 0 例: max connections = 10 only user (S) これは論理値のオプションであり、user= リストにないユーザ名の接続を許可するかどうかを制御する。既定値では、このオプションは無効になっていて、クライアントはサーバによって使用されるユーザ名を供給することができる。 これはまた、Samba がサービス名からユーザ名を導き出すことを試みないことを意味する。これは [homes] セクションを悩ますことができる。これを回避するために、"user" リストをサービス名と一致させることを意味する "user = %S" を使用でき、ホーム・ディレクトリがユーザ名となる。 既定値: only user = False 例: only user = True message command (G) これは、サーバが WinPopup 形式のメッセージを受信したとき、実行すべきコマンドは何かを指定する。 これは、標準的には、何らかの形でメッセージを提供するコマンドである。これをどのようにして実行させるかは、あなたの想像力次第である。 私の使用例: message command = csh -c 'xedit %s;rm %s' & これは xedit を使用してメッセージを伝え、その後に削除する。このコマンド実行後すぐに(コマンドプロンプトに)戻ることは、とても重要であることに注意せよ。最後に & を付けた理由はそれである。もしこのコマンドを実行してもすぐに(コマンドプロンプトに)戻らないと、あなたの PC はメッセージを送った時に停止するであろう(できれば、30 秒後に回復すべきである)。 全てのメッセージはグローバルなゲストユーザからとして伝わる。このコマンドは、標準の置換操作を使えるが、%u は機能しない(この場合 %U がもっとも適切だろう)。 標準の置換文字の他に、いくつか追加の置換文字が使用可能である。 %s = メッセージを含むファイル名 %t = メッセージを送った場所(おそらくサーバ名) %f = 誰からメッセージが送られてlきたか このコマンドは、メールを送るか、そうでなければ、好みによって何でもできる。あなたが持っている本当におもしろいアイデアを、私に連絡してほしい。 これはルートへのメールとしてメッセージを送る方法である: message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s message command がないならばメッセージは伝えられず、Samba は送信者にエラーがあったことを通知する。あいにく WfWg はエラー・コードを完全に無視し、何も考えずに運び、メッセージが伝わったと言う。 もし、表示なしにメッセージを削除したいなら、"message command = rm %s" を試せ。 本当に冒険好きならば、このようなものを試せ: message command = csh -c 'csh < %s |& /usr/local/samba/smbclient -M %m; rm %s' & これは、サーバ上でスクリプトとしてコマンドを実行し、それらの結果を WinPopup メッセージに渡す。サーバから smbclient を使用してメッセージを送った場合、ループを発生させることに注意せよ!。このことにひっかからないために、上記のスクリプト内に包むのが良い。 :-) 既定値: message command はない 例: message command = csh -c 'xedit %s;rm %s' & min print space (S) この値は、ユーザのプリントジョブがスプール可能となる前に、利用可能になっている空きディスクスペースの最小容量を設定する。キロバイト単位で指定する。既定値は 0 で、制限がないことを意味する。 既定値: min print space = 0 例: min print space = 2000 null passwords (G) パスワードがないアカウントのアクセスを許すか拒否するかを制御する。 既定値: null passwords = no 例: null passwords = yes os level (G) この整数値は、どのレベルの Samba advertises を閲覧選択するかを制御する。細部は BROWSING.txt を参照のこと。 packet size (G) raw読み出し時の最大パケットサイズである。このオプションはバージョン1.7.00以降はインプリメントされておらず、古いコンフィギュレーションファイルが無効にならないように残っているだけである。 passwd chat (G) この文字列は、ユーザパスワードの変更時に、 smbd とローカルなパスワード変更プログラムとの間での "チャット" による会話を制御する。文字列は一連の応答-受信文字列ペアからなり、smbd が、何をパスワード変更プログラムに送り、何が帰って来るかを期待するかを記述する。もし、予期されるアウトプットが受信されない場合ば、パスワードは変更されない。 このチャットシーケンスは、しばしばサイト固有であり、パスワード制御(NIS+ やその他)に利用される固有の方法に依存する。 文字列は、旧/新パスワードにそれぞれ置き換わるマクロ %o と %n を含んでもよい。改行、復帰、タブ、およびスペースを使う時には、標準のマクロ \n \r \t と \sも含んでいてもよい。 文字列は、文字のどのようなシーケンスとでも一致する * も含んでいてもよい。 二重引用符は、スペースがある文字列を単一の文字列とするために利用できる。 もし、チャットシーケンスの送信文字列のどこかに fullstop を意味する "." があると、文字列は何も送信されない。同様に、予期される文字列が fullstop であれば、何の文字列も期待されない。 例: passwd chat = "*Enter OLD password*" %o\n "*Enter NEW password*" %n\n \ "*Reenter NEW password*" %n\n "*Password changed*" 既定値: passwd chat = *old*password* %o\n *new*password* %n\n *new*password* %n\n *changed* passwd program (G) これは、ユーザパスワードを設定するために使用するプログラムの名前である。 もし、コンパイル時に 「リモートパスワード変更」を「可」にしたときのみ、これが必要である。 %u はいつでもユーザ名と置換される。 また、大小文字併用、および数字の混在、最小長などの "穏当な"パスワードを、多くのパスワード変更プログラムが強く要求することに注意。このことは、ある種のクライアント(Windows for Workgroupsなどの)が、パスワード送信前に大文字化してしまうと、問題を引き起こす。 既定値: passwd program = /bin/passwd 例: passwd program = /sbin/passwd %u password level (G) ある種のクライアント/サーバの組合せでは、大小文字混在パスワードの相性が悪い。その種のクライアントのうちの1つは Windows for Workgroups であり、LANMAN1プロトコルを使用する時に、ある理由のためにパスワードの大文字化を強制するが、それを、COREPLUSを利用する時だけ分離している! このパラメーターは、パスワード中の最大大文字数を定義する。 たとえば、与えられたパスワードが“FRED”であったとする。もし password level が1 (壱) に設定されると、もし "FRED" という文字列の認証が失敗しても "Fred", "fred", "fRed", "frEd", "freD" が試される。 もし password level が2 (弐) に設定されるならば、 "FRed", "FrEd", "FreD", "fREd", "fReD", "frED" が試される。あとは同様である。 このパラメーターの最大値は、大文字あるいは小文字のみのパスワードに対して、大小文字混在パスワードに一致するのと同じように設定される。しかし、このパラメーターを使用すると、セキュリティが減少することと、新規接続を処理するために必要な時間が増大することに注意すべきである。 値を 0 にすると、パスワードそのままと 全て小文字にしての2回の比較のみを行なう。 もし、このオプションを使って、接続に長時間かかっていると思ったなら、たぶん、crypt()ルーチンが遅い事が考えられる。現在の Samba は、Makefileで 高速の "ufc crypt" ルーチンを選択することができる。また、システム中の local.h と includes.h の PASSWORD_LENGTH の選択を正確にすべきである。 ほとんどのシステムでは、PASSWORD_LENGTH が 8 であり、パスワードの最初の8文字だけが有効だが、より長いパスワードが重要である。inlcudes.h には、システム上での正しい長さを選択する事を試している。 既定値: password level = 0 例: password level = 4 password server (G) このオプションを使って、別のSMBサーバ(WinNT boxのような)の名前を特定し、かつ、 "security = server" を使用すると、Samba はリモートのサーバを経由した username/password 認証を使う事ができる。 このオプションでは、使用するパスワードサーバの名前を設定する。それは netbios 名でなければならず、マシンの netbios 名が internet名と違っている時は、/etc/hots ファイルに netbios名 を付け加える可能性がある。 パスワードサーバは、 "LM1.2X002" または "LM NT 0.12" プロトコルを使える能力があるマシンであり、ユーザレベルセキュリティモードなっていなければならない。 参考:パスワードサーバを利用することは、UNIX box(Samba が動いている)がパスワードサーバと同じ位安全であるということのみ意味している。完全に信頼していないパスワードサーバを選んではならない。 Samba サーバ自身をパスワード保存用利用してはならない。ループを起こし、Samba サーバをロックさせてしまう! パスワードサーバの名前には、標準の置換操作が使えるが、事実上唯一使えるのは %m であり、それは、Samba サーバが、到着したクライアントをパスワードサーバとして取り扱うことを意味している。もし、このことを利用するならば、クライアントをより信頼し、認められるホストと一緒に限定する方が良い。 path (S) このパラメーターの同義語は 'directory' である。 このパラメーターは、ユーザがアクセスできるディレクトリを特定する。印刷サービスの場合は、印刷データが、印刷用ホストに送られるためにスプールする所である。 印刷サービスはゲストアクセスでも使えるよう、サービスは 読みだし専用 にすべきであり、パスは 全ユーザ書き込み可とし、sticky ビットをセットすべきである。これはもちろん義務ではないが、それ以外の方法ではたぶん期待する結果を得ることはできないだろう。 パスの中で、%u が現れたら、いつでもクライアント接続時の username と置換される。また、%m は、いつでも接続されるマシン名に置換される。これらの置換操作は、ユーザの、仮想のホームディレクトリを設定するのに非常に便利である。 もしも、このパスが指定された場合には、'root dir' がベースであることに注意しなさい。 既定値: なし 例: path = /home/fred+ postexec (S) このオプションは、サービス接断時に起動されるコマンドを指定する。通常の置換操作も使える。コマンドはいくつかのシステムにおいては root 権限で動く。 興味深い例は unmount server リソースかもしれない。たとえば、 postexec = /etc/umount /cdrom である。preexec も参照のこと。 既定値: なし (なにも実行されない) 例: postexec = echo postscript (S) このパラメーターは、印刷するファイルがポストスクリプトファイルであると解釈することをプリンタに強制する。 これは、%! を印刷出力開始時に付加することによって行なわれる。 たくさんのPC(Ctrl-Dを、印刷の開始時に出力してプリンタの動作を不正にする)がある時には、これが最も便利である。 既定値: postscript = False 例: postscript = True preexec (S) このオプションは、サービス接続時に常時起動されるコマンドを指定する。これは通常の置換操作も使える。 興味深い例としては、ログインするたびごとに、1つの歓迎メッセージをユーザに送ることである。たぶん、その日用のメッセージになるか? 例: preexec = csh -c 'echo /usr/local/samba/smbclient -M %m -I %I' & もちろん、これはしばらくの間悩むだろう:-)。 postexecも参照のこと。 既定値: none (何も実行されない) 例: preexec = echo preferred master (G) この論理パラメータは、Samba が、そのワークグループのマスタブラウザとして機能させるかどうかを制御する。この設定はマスタブラウザを選択するわずかな機会を Samba に与え、起動時に自動的に選択を開始することを意味する。 既定値はオンである。 preload これは"auto services"の別名である。 preserve case (S) これは、新しいファイル名がクライアントパスで作成されるか、"既定値" で作成されるかを制御する。 既定値: preserve case = no 詳細は“NAME MANGLING”セクションを参照のこと。 print command (S) 印刷ジョブサービスがスプールし終わった後に、ここで指定するコマンドが、スプールされたファイルを処理するために、system()コールを経て用いられる。主に、指定されたコマンドはスプールファイルをホストの印刷サブシステムに渡すが、そうしなければならないという必然性はない。 サーバはスプールファイルを削除しないので、指定したコマンドはすべて、処理後にスプールファイルを削除をすべきである。さもなければ、古いスプールファイルを手動で削除することが必要となる。 印刷コマンドは単なるテキスト文字列である。それは2つの例外はあるが全く指定通りに使用される。すべての "%s" は適切なスプールファイル名に変換され、 すべての "%p" は適切なプリンタ名に変換される。スプールファイル名は、サーバにより自動的に生成されて、プリンタ名についてはこのあと説明する。 %s の先頭に / がない場合、ファイル名はフルパス名に変換される。これが気に入らないならば(lpq 出力を短くできる)、代わりに %f を利用しなさい。%f は、どのような場合でも、先頭にフルパスがないスプールファイル名に置換される。 print command は 最低限 "%s" か %f のどちらかを含んでいなければならない。 "%p" はあってもなくてもよい。ジョブが提供された時にプリンタ名が設定されていないと、"%p" はプリンタコマンドから暗に取りさられる。 [global] セクションに指定すると、print command は、固有の print command をもたない任意のプリントサービスを利用する時にも与えられる。 もし、プリントサービスのために指定された print command か、グローバル print command のどちらもないなら、スプールファイルは作成されるが処理されず、そして(これが最も重要だが)削除されない。 ある種の UNIX において、"nobody" アカウントからの印刷が失敗するかもしれないことに注意しなさい。もしこの状態が発生したら、印刷可能な代替のゲストアカウントを作成し、"guest account" を [global] セクションに設定しなさい。 シェルに渡す形で、複雑な print command を組み立てることができる。たとえば、以下はプリントジョブを記録し、ファイルをプリントし、最後にそれを削除する。 注意すべき点は、 ; はシェルスクリプトのコマンドの通常のセパレータである。 print command = echo Printing %s >> /tmp/print.log; lpr -P %p %s;rm %s 使っているシステムで、いかに通常ファイルをプリントするかに依存する形で、このコマンドを適当に変更してもよい。 既定値: print command = lpr -r -P %p %s 例: print command = /usr/local/samba/myprintscript %p %s print ok (S) printableを参照。 printable (S) このパラメーターの同義語は 'print ok' である。 もし、このパラメーターが 'yes' ならば、クライアントはオープン、書込み、サービスのために、指定されたディレクトリにスプールファイルを送り込むことが可能になる。 印刷可能サービスは必ず、印刷データをスプール経由で(ユーザ特権が許可されている)サービスパスに書き込む事を許可していることに注意しなさい。'read only' パラメータは、資源に対しての印刷以外のアクセスだけを制御する。 既定値: printable = no 例: printable = yes printing (G) このパラメーターは、プリンタのステータス情報がどのように解釈されるかを制御し、かつ、"print コマンド"、"lpq コマンド" および "lprm コマンド" の既定値にも影響する。 現在、6つの印刷スタイルがサポートされている。それらは "printing = bsd"、 "printing = sysv"、 "printing = hpux" 、 "printing = aix" 、 "printing = qnx" と "printing = plp"である。 "testparm" プログラムを利用時に使われる3つのオプションを使うその他のプリントコマンドのための既定値が何であるかをみること。 printcap name (G) このパラメーターは、サーバ(通常 /etc/printcap)が使う、コンパイル時の printcap名を無効にするために使われる。なぜこれを使いたいかという理由は、前述の [printers] セクションを参照のこと。 printcap がない場合(SysVにおいては)、printcap もどきの最小ファイルを作ることができ、[global] の "printcap name =" でそれを指定する。 最小の printcap ファイルは下記のようなものである。 print1|My Printer 1 print2|My Printer 2 print3|My Printer 3 print4|My Printer 4 print5|My Printer 5 | はプリンタの別名を分離するセパレータである。 2番目の別名中にスペースがあると、Sambaにそれがコメントであるというヒントを与える。 注意: AIX下では、既定値の printcap 名は "/etc/qconfig" である。Samba は、もし printcap 名中に、文字列 "/qconfig" が見つかると、ファイルが AIX "qconfig" 型式であると仮定する。 既定値: printcap name = /etc/printcap 例: printcap name = /etc/myprintcap printer (S) このパラメーターの同義語は 'printer name' である。 このパラメーターは、印刷可能サービス経由でスプールされた印刷ジョブに送られるプリンタ名を指定する。 もし、 [global] セクションで指定されると、指定されたプリンタ名は、プリンタ名が指定されない任意の印刷可能サービスのプリンタ名として使われる。 既定値: なし (ただし、 lp が多くのシステムで使われている) 例: printer name = laserwriter printer name (S) printer を参照。 protocol (G) パラメーター(文字列)の値は、サーバがサポートする最も高いレベルのプロトコルである。 指定可能な値は、CORE、COREPLUS、LANMAN1、LANMAN2、およびNT1である。それぞれの相対的な長所はREADMEファイルに記述がある。 既定値: protocol = NT1 例: protocol = LANMAN1 public (S) このパラメーターの同義語は 'guest ok' である。 もし、このパラメーターがサービスのために 'yes' になっているならば、パスワードなしでサービスに接続可能になる。特権はゲストアカウントの設定に準じる。 この後のセクションで、このオプションのための、ユーザ/パスワード認証について、付加情報があるので参照のこと。 既定値: public = no 例: public = yes read list (S) これは、読取り専用アクセスサービスが与えられるユーザのリストである。もし、接続したユーザがこのリスト中にあるならば、たとえ "read only" オプションが何にセットされても、書き込みアクセスを与えられない。リストは @group 記述を利用したグループ名を含んでもよい。 "write list" オプションも参照のこと。 既定値: read list = 例: read list = mary, @students read only (S) writable と write ok を参照のこと。writable と write ok の逆の同義語であることに注意。 read prediction (G) このオプションは、サーバからの読み出しを高速化するための先読みコードを、有効あるいは無効にする。有効にすると、サーバは、パケットを待っている時間に、リードオンリとしてオープンされ、最後にアクセスされたファイルからデータを先読みする。 既定値: read prediction = False 例: read prediction = True read raw (G) このパラメータは、データをクライアントに転送する時に raw 読み出しをサーバがサポートするか否かを制御する。 もし有効にするならば、raw読み出しは、1パケットで65535バイトを読むことを可能にする。このことは、たいていの場合、性能の向上に大きく貢献する。 しかし、ある種のクライアントでは有効ブロックサイズを取り違えたり、大きなブロックサイズを取り扱えないので、その種のクライアントでは、raw 読み出しを無効にする必要があるだろう。 一般的に、このパラメーターはシステム調整ツールと見て、完全に触れないでおくべきである。write rawも参照のこと。 既定値: read raw = yes 例: read raw = no read size (G) この "read size" オプションは、ネットワークの入出力と同時のディスク入出力のオーバラップに影響する。 もし、SMB のある種のコマンド(現在は SMBwrite、SMBwriteX、およびSMBreadbraw)によって転送される大量のデータがこの値より大きければ、サーバは、パケット全体をネットワークから受け取る前にデータを書きはじめるか、SMBreadbraw の場合は、すべてのデータをディスクから読み出す前に、ネットワークに送信し始める。 このオーバーラッピング動作は、ディスクとネットワークのアクセスのスピードが同様な時に最適であり、片方のスピードが大幅に他方より大きい場合にはごくわずかの影響しかない。 既定値は 2048 であるが、最適値を決めるための試験は、ごくわずかしか行なわれておらず、システム間で、最適値が大きく変わることはありえる。 65536 以上の値はあまり差がなく、メモリーを不要に割り当てさせるだけである。 既定値: read size = 2048 例: read size = 8192 remote announce (G) このオプションは、 任意のワークグループ名と一緒の任意のIPアドレスに、定期的にアナウンスするように nmbd をセットアップすることを指定する。 Samba サーバを、通常のブラウズ伝搬ルールが正常に動かないリモートのワークグループに見えるようにするのに便利である。リモートのワークグループは、IPパケットが届く範囲のどこにあっても良い。 例: remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF この上の行は、ワークグループ名が与えられている2つのIPアドレスを nmbd それ自身に通知する。もしも、ワークグループ名を取り去ると、それは、"workgroup" オプションがその代わりとして使われる。 選択したIPアドレスは、通常リモートネットワークのブロードキャストアドレスであるが、あなたのネットワークの定義が安定しているのであれば、わかっているブラウズマスタのIPアドレスでも良い。 このオプションは、nmbd の lmhosts ファイルで実現していた機能を置き換える。 revalidate (S) このオプションは、Sambaが、前もって有効にした username/password ペアを、共有して使うかどうかを制御する。従って、もし、 \\server\share1 に接続し、\\server\share2 に接続するなら、クライアントに対して、1番目のと同じユーザ名を、パスワードなしで2番目の共有時に自動的使うことを許可しない。 もし "revalidate" が真ならば、クライアントは、同じユーザ名での自動アクセスを拒否される。 既定値: revalidate = False 例: revalidate = True root (G) root directoryを参照。 root dir (G) root directoryを参照。 root directory (G) このパラメーターの同義語は 'root dir' と 'root' である。 サーバは、スタートアップ時にこのディレクトリへ chroot() を行なう。これは安全を確保する動作に絶対に必要ではない。これなしでも、サーバはサービスエントリのどれかで、ファイルへのアクセスを拒否できる。また、チェック、アクセス拒否、および他のファイルシステムの部分へのソフトリンクを行うか、他のディレクトリ(" wide link" パラメータの設定状態に依存する)にアクセスするために .. を使おうとする。 "/" を除いた "root dir" エントリを付加することは、コストの問題点を除いてセキュリティを強化する。それは、サーバのオペレーションに必要ないくつかのファイルを含んだ "root dir" オプションで指定されたサブディレクトリ以外へのアクセスを拒否することを完全に保証する。サーバの完全な操作性を維持するためには、"root dir" ツリー構造に、いくつかのシステムファイルをコピーすることが必要である。特に、/etc/passwd (またはそのサブセット)をコピーすることは必要であり、任意のバイナリまたはコンフィギュレーションファイルも、印刷のために(必要ならば)コピーすることが必要である。コピーしなければならないファイルは、オペレーティングシステム依存である。 既定値: root directory = / 例: root directory = /homes/smb security (G) このオプションは、どのようにクライアントが Samba に応答するかを決める。 このオプションは、"セキュリティモードビット" を、共有レベルのセキュリティを ON/OFF するために、プロトコルのネゴシエーションへのリプライ中にセットする。クライアントは、このビットをベースにして、どちらの(といかに)サーバに転送するユーザとパスワード情報を渡すかについて決める。 既定値は "security=SHARE" であり、それは、1つのステージでの唯一のオプションだからである。 別の選択肢は、 "security = user" あるいは "security = server" である。 もし、パソコンが、UNIX マシンのユーザ名と同じユーザ名を使うならば、"security = user" を利用したいはずだ。が、たいていの場合、UNIX マシン上にユーザ名がなければ、"security = share" を使いなさい。 ところが、オプション決定に影響するバグが WfWg にある。ユーザレベルのセキュリティ時には、WfWg クライアントは、"ドライブ接続" ダイアログボックスでタイプしたパスワードを完全に無視するのだ。これは、WfWg に接続するユーザを除いた誰でも、Samba のサービスに接続することを(もしも不可能でないならば)非常に難しくしている。 もし、 "security = server" を利用するなら、Samba は、それを別の SMB サーバ、たとえば NT box に渡して ユーザ/パスワード認証を有効にしようとする。もし、これが失敗するなら、 "security = USER" に戻る。 詳細については "password server" オプションを参照のこと。 既定値: security = SHARE 例: security = USER server string (G) これは、プリントマネージャーの、プリンタコメントboxと、"net view" の IPC コネクションの隣に表示される文字列を制御する。ユーザに表示したい任意の文字列をとることができる。 また、マシン名の隣に表示されるブラウズリスト中にも表示される。 %v は Samba バージョン番号と置換される。 %h は ホスト名にかわる。 既定値: server string = Samba %v 例: server string = University of GNUs Samba Server smbrun (G) これは、smbrun バイナリのパス名を設定する。この既定値は、Makefile にある。 このパス名は、多くのサービスを正常に動作させるために、正確に記述しなければならない。 既定値: taken from Makefile 例: smbrun = /usr/local/samba/bin/smbrun short preserve case (S) これは、新しいショートファイル名が、クライアントパスで作成されるか、あるいは、"既定値" のケースで強制的になるかを制御する。 既定値: short preserve case = no くわしくは "NAME MANGLING" セクションを参照。 root preexec (S) これは preexec と、コマンドが root として動かされる以外は同じである。これは、コネクションが完了する前に、ファイルシステムをマウントする(cdromなど)に便利である。 root postexec (S) これは、postexec と、コマンドが root として動かされる以外は同じである。これは、コネクション切断後に、ファイルシステムをアンマウント(cdromsなど)に便利である。 set directory (S) もし、'set directory = no' ならば、サービスの利用者は、ディレクトリ変更のための setdir コマンドを使えない。 setdir コマンドは Digital Pathworks クライアントにおいてのみインプリメントされる。細部については、Pathworks の説明書を参照のこと。 既定値: set directory = no 例: set directory = yes share modes (S) このオプションは、ファイルオープン時に、 "share modes" を有効か、無効にする。それらのモードは、ファイルへの排他的な読み出しまたは書き込みアクセスを得るために、クライアントにより使用される。 オープンモードは、 UNIX で直接サポートされるのではなく、"ロックディレクトリ" 中のロックファイルを利用してシミュレーションされる。smb.conf において指定された"ロックディレクトリ" は、すべてのユーザに読取り可能でなければならない。 このオプションによって有効になるシェアモードは下記の通り。 DENY_DOS, DENY_ALL, DENY_READ, DENY_WRITE, DENY_NONE と DENY_FCB. このオプションを有効にすると完全な共有機能を得られるが、UNIIX サーバは若干の処理時間を必要とするようになる。既定値では有効になっている。 既定値: share modes = yes 例: share modes = no socket options (G) このオプション(-O コマンド行オプションでも設定可能)は、クライアントとの通信時に利用されるソケットオプションを設定することができる。 ソケットオプションは、OSのネットワーク層の接続部分の最適化を制御する。 このオプションは、通常、ローカルなネットワークの性能の最適化のために、Samba サーバを調整するために使用される。Samba は、ネットワークの最適パラメータが何であるかを知るすべはないので、自分自身で実験し、設定しなければなければならない。まず最初に使用するOSの適当な資料(たぶん "man setsockopt" が役に立つだろう)を読むことを強く推奨する。 いくつかのシステムにおいては、Samba は "Unknown socket option" をオプション指定時に表示してくるかもしれない。これは、ミスタイプしたか、使用しているOSで includes.h にインクルードファイルを追加することが必要かのどちらかである。もし後者ならば、パッチを私に送ってほしい(samba-bugs@anu.edu.au)。 サポートされているソケットオプションのどれでも、OSが許す限り、任意の方法で組み合わせることができる。 下記は、現在のソケットオプションで利用可能なもののリストである。 SO_KEEPALIVE SO_REUSEADDR SO_BROADCAST TCP_NODELAY IPTOS_LOWDELAY IPTOS_THROUGHPUT SO_SNDBUF * SO_RCVBUF * SO_SNDLOWAT * SO_RCVLOWAT * * マークは、整数の引数を取る。その他は、1 または 0 の引数を有効/無効の指定のために任意に取ることができるが、既定値は、もしあなたが 1 または 0 を指定しないならば、有効 に設定される。 引数を使用するために、SO_SNDBUF=8192 という例のように、SOME_OPTION=VALUE という書式で指定する。=記号の後に空白を入れてはいけないことに注意。 もし、ローカルなネットワークを使用しているならば、体感的なオプションは下記のようになる。 socket options = IPTOS_LOWDELAY もし、ほとんどアンロードされたローカルなネットワークがあり、サーバのCPUを沢山使うことを気にしないならば、下記のオプションをトライできる。 socket options = IPTOS_LOWDELAY TCP_NODELAY もし広域ネットワークを使っているならば、下記の設定を試すと良い。 IPTOS_THROUGHPUT. オプションのいくつかは、Samba サーバを完全に停止させるかもしれないことに注意。注意しながらこれらのオプションを使用すること! 既定値: ソケットオプションなし 例: socket options = IPTOS_LOWDELAY status (G) これは、smbstatus が読み出せるステータスファイルに、接続状態ログの採取を有効/無効にする。 無効にすると、smbstatus は、どのコネクションがアクティブであるかを表示できなくなる。 既定値 status = yes 例: status = no strip dot (G) これは、ファイル名の終わりのドットを削るかどうかを制御する二値変数である。これは、1つのドットが末尾に付いたファイル名を持ついくつかのCDROMを救済する。 参考: このオプションは現在旧式であり、将来なくなる。通常は代わりに、"mangled map" オプションを使用するべきである。 strict locking (S) これは、サーバ上でのファイルのロック方法を制御する二値変数である。これが yes に設定されると、サーバはすべての読み出しと書き込みアクセスをファイルロック時にチェックし、もしロックされているならば、アクセスを拒否する。いくつかのシステムではスピード低下になることもある。 厳密なロックを "no" にすると、サーバはファイルロックのチェックをクライアントが明示的に要求するときのみ行なう。 きちんと動いているクライアントは、それが重要な時には必ずロックチェックを問い合わせる。従って、大多数の場合は "strict locking = no" のほうがよい。 既定値: strict locking = no 例: strict locking = yes sync always (S) これは、write システムコールが戻って来る前に、常に書き込みが確実に記憶装置に行われたかどうかを制御する二値変数である。もし false ならば、サーバは個々のライトコールについてクライアントからの要求により制御される(クライアントは、特定の書き込み動作を同期式に指示するビットをセットできる)。もし、 true ならば、データがディスクに書かれることを保証するために、すべての write コールの後には fsync()コールが続く。 既定値: sync always = no 例: sync always = yes time offset (G) このパラメーターは、GMTからローカル時間への変換時に追加する時間を設定する。これは、もし、間違った夏時間処理をしているPCを管理しているならば有益である。 既定値: time offset = 0 例: time offset = 60 user (S) usernameを参照。 username(S) このパラメーターの同義語は 'user' である。 複数のユーザを、境界がコンマで分離されたリストでて指定でき、入力したパスワードが(左から右に)個々のユーザ名に対して次々テストされる。 PCがその固有のユーザ名を供給できない時にだけ、username= 行が必要である。これは、coreplus プロトコルのためのケースか、またはユーザが、UNIX のユーザ名と違うWfWg ユーザ名をもっている場合である。両方のケースとも、 \\server\share%user 記述をかわりに利用することが好ましい。 username= 行は、Samba が、入力されたパスワードに対して username= 行の各々に対して、次々に検証するので、通常よい解決策ではない。遅いし、重複したパスワードを多数のユーザが持つことは悪い方法である。このパラメータを不用意に使うと、タイムアウトまたはセキュリティ違反を発生させる事になる。 Samba は、基礎にしている UNIX のセキュリティを信頼している。このパラメーターは、誰かがログインできることを制限せず、Samba サーバに対して、任意のユーザ名が入力されたパスワードと一致しているかのヒントを提供する。ユーザは、誰としてでもログインでき、もし、telnet セッションを始めるなら、それ以上の被害を全然うけないことができる。デーモンは、ユーザがユーザとしてログインしたのと同じようにログインするので、ユーザがすることができないように何もできない。 サービスをユーザの一部に限定するためには、 "valid users=" 行を利用することができる。 もし ユーザ名のうちのどれかが @ で始まるならば、その名前はグループファイルを検索し、その名に対応するグループのすべてのユーザリストに拡張する。注意すべきは、グループファイルを通じて検索することは、少々時間を使うかもしれないので、いくつかのクライアントは検索中にタイムアウトするかもしれない。 このパラメーターが、サービスへのアクセスをいかに決定するかについての補足情報は、この後の username/password 認証を参照すること。 既定値: ゲストサービスならゲストアカウント、そうでなければサービスの名前 例: username = fred username = fred, mary, jack, jane, @users, @pcgroup username map (G) このオプションは、クライアントからサーバへの、ユーザ名マッピングを含んだファイルを指定することを可能にする。これは、いくつかの目的のために使う。最も一般的な使用法は、dos または windows マシン上のユーザ名を、UNIX マシンが使うものにマップすることである。その他には、ファイルをより簡単に共有できるように、複数のユーザを単一のユーザ名にマップすることである。 マップファイルは各行ごとに評価される。各々の行は、最左端に UNIX のユーザ名を含んでいなければならず、次に '=' が来て、その後にユーザ名のリストが続いている。ユーザ名のリストの右には、グループ内のすべてのユーザ名に一致するフォーム @group を含んでいてもよい。特別なクライアント名 '*' はワイルドカードであり、任意の名前と一致する。 ファイルは、個々の行ごとに、供給されたユーザ名を、'=' 記号の右側のおのおののユーザ名と比較して処理される。もし、供給された名前が右側のどれかに一致するならば、それは左側の名前に置き換わる。そして次の行の処理へと続行していく。 もし行の先頭が '#' または ';' によって始まっていると、その行は無視される。 たとえば、"admin" または "administrator" から UNIX 名の "root" にマップさせたいならば、下記のように記述する。 root = admin administrator または、UNIX のグループ "system" の誰でも UNIX 名 "sys" にマップするには、下記のように記述する。 sys = @system ユーザ名マップファイル中には、好きなだけマッピングを記述することができる。 再マッピングが、すべてのユーザ名の定義に適用されることに注意すること。従って、もし "\\server\fred" に接続し、 "fred" が "mary" に再マッピングされるならば、実際には "\\server\mary" に接続することになり、"fred" ではなく "mary" に必要なパスワードを入力することが必要となる。唯一の例外は(もしも存在するならば)、"パスワードサーバ" にユーザ名を送る時である。パスワードサーバは、修正せずにクライアントが供給するどのようなユーザ名でも受け取る。 また、逆マッピングは行われないことに注意。これの主な効果は印刷に影響する。WfWg 下のプリントマネージャは、それらがプリントジョブを所有しないと認識するので、マッピングされたユーザは、プリントジョブ削除時にトラブルに会う。 既定値 ユーザ名マップなし 例 username map = /usr/local/samba/lib/users.map valid chars (S) このオプションは、ファイル名としてサーバが有効と認める付加的な文字を指定することができる。これは特に、u-ウムラウトまたはa-リングなどの、国別の文字集合に有益である。 オプションは、スペースによって区切られた、整数または文字形式での文字リストである。もし、コロンによって分離された2文字があると、それは小文字:大文字ペアとして扱われる。 もし、文字を config ファイルに書き込められるエディタがあれば、この方法を利用することが最も簡単である。さもなければ、通常のC言語記述方式を使った、8進数、10進数、あるいは16進数で文字を指定できる。 たとえば、単一文字 'Z' を、文字セット(それがそこにすでにあるのでする鈍いことである??)に付加するためには、下記のうちのどれかを行えばよい。 valid chars = Z valid chars = z:Z valid chars = 0132:0172 実際、上記の例の後の2つは、2文字を付加し、大/小文字のマッピングを適切に変更する。 既定値 Sambaは、英語環境における穏当な有効文字セットを利用することを既定値としている。 例 valid chars = 0345:0305 0366:0326 0344:0304 上記の例は、ファイル名に、それらのスウェーデン文字を使う事ができる。 注意: これは、実際、特定のシステム用に "valid chars" 行を正しく生成することは非常に難しい。この作業を自動化するために、tino@augsburg.net は 与えられたクライアントシステム用に、完全な "varid chars" 行を自動的に生成する "validchars" パッケージを書いた。このパッケージのサブディレクトリの例を見よ。 valid users (S) これは、サービスに login できるユーザのリストである。 @ によって始まる名前は、UNIX のグループと解釈される。 もし、これが空白ならば(既定値)、どのようなユーザでも login できる。もし、ユーザ名が、このリストおよび "invalid users" リスト両方にあると、そのユーザのアクセスは拒否される。 現在のサービス名は %S で置き換えられる。[homes] セクションで使うのに便利である。 "invalid users" をも参照のこと。 既定値 有効なユーザなし(だれでもloginできる)。 例 valid users = greg, @pcusers volume (S) これは、共有するために、ボリュームラベルをオーバーライドすることができる。特別のボリュームラベルが必要な CDROM のインストールプログラムに便利である。 既定値は共有名である。 wide links (S) このパラメータは、サーバによってフォローされている UNIX のファイルシステムにリンクするかしないかを制御する。サーバによってエクスポートされているディレクトリ構造内部へポイントする領域のリンクは、いつでも許されている。このパラメータは、エクスポートされているディレクトリ構造外部にある領域のアクセスを制御する。 既定値: wide links = yes 例: wide links = no wins proxy (G) これは、もしもnbmd が、その他のホストのために、ブロードキャスト名の問い合わせに応じるかどうかを制御する論理値である。いくつかの古いクライアントに対しては、これを no にセットする必要がある。 既定値: wins proxy = no wins suport (G) この論理値は、 Samba が WINS サーバとして振る舞うかを制御する。ネットワーク上に他の WINS サーバがすでに存在していないのであれば、通常はこの値を真にセットすべきである。 既定値: wins support = yes wins server (G) これは、 Samba が登録すべきである WINS サーバの名前を DNS 名に指定する。もしも、ネットワーク上に WINS サーバがあるならば、これを WINS サーバの名前にセットすべきである。 このオプションは、Samba がそれ自身 WINS サーバとして振る舞わない場合にのみ影響する。 既定値: wins server = workgroup (G) これは、クライアントから問合せがあった時に、どんな workgroup をサーバが見せるかを制御する。これは、nmbd のコンフィギュレーション中で指定された workgroup とは異なってもよいが、もし、それらを同じ値に設定することは、最もよい方法である。 既定値: Makefileにおいて設定される。 例: workgroup = MYGROUP write ok (S) writable and read onlyを参照。 writable (S) このパラメーターの同義語は 'write ok' である。 逆の同義語は 'read only' である。 もし、このパラメーターが 'no' ならば、サービスに対応するユーザは、サービスのディレクトリ中のファイルの作成も修正もできない。 印刷可能なサービス('printable = yes') は、いつも(ユーザ特権が許可されている)ディレクトリに書くことを認めるが、それは単にスプール操作経由だということに注意しなさい。 既定値: writable = no 例: read only = no writable = yes write ok = yes write list (S) これは、サービスに対して、読み書きアクセスが与えられるユーザのリストである。もし、接続しているユーザがこのリストにあれば、たとえ "read only" オプションがセットされていても、書き込みアクセスを得られる。このリストは @group 形式を利用したグループ名を含むことができる。 ユーザがリードリストとライトリスト両方に存在すると、書き込みアクセスを与えられる事に注意。 "read list" オプションも参照のこと。 既定値: write list = 例: write list = admin, root, @staff write raw (G) このパラメータは、クライアントからのデータ転送時に、サーバが raw 書き込みをサポートするかどうかを制御する。 既定値: write raw = yes 例: write raw = no ユーザ名/パスワード認証について ユーザがサービスに接続方法にはいくつかある。サーバは特定のサービスに対して接続を許可する場合、決定の際に以下のステップを実行する。もしも、すべてのステップでコネクション要求に失敗すると、接続は拒否される。もし、以下のステップのどれか1つにパスすれば、その後のステップはチェックされない。 もし、サービスが "guest only = yes" になっているならば、ステップ1から5まではスキップされる。 Step 1: もし、クライアントが username/password ペアをパスし、その username/passwordペア が UNIX システムパスワードプログラムによって検証されたならば、そのユーザ名で接続が行われる。このことは、ユーザ名をパスするための \\server\service%username メソッドを含んでいることに注意。 Step 2: もし、前もってクライアントが、システムによってユーザ名を登録し、そのユーザ名の正しいパスワードを与えるならば、接続は許可される。 Step 3: クライアントの netbios 名と、以前に使われた何らかのユーザ名が、与えられたパスワードとチェックされ、もし、一致するならば、対応するユーザ名で接続が許可される。 Step 4: もし、クライアントが以前にサーバによって username/password ペアの検証が行われていて、クライアントが認証トークンをパスしたなら、そのユーザ名が使われる。このステップは、もし、このサービスに対して "revalidate = yes" になっていれば省略される。 Step 5: もし、そのサービス用に smb.conf ファイル中に "user = " フィールドがあり、クライアントがパスワードを供給し、そのパスワード が "user=" フィールド中のユーザ名のどれか1つと一致して(UNIX システムのパスワードチェックに従って)いるならば、"user=" 行中のユーザ名で接続が行なわれる。もし、user= リストのユーザ名の1つが @で始まっているならば、同じ名のグループ名の名前のリストに展開される。 Step 6: もし、サービスがゲストサービスならば、"guest account =" で与えられたユーザ名で接続が行なわれ、供給されたパスワードは関係なくなる。 警告 コンフィギュレーションファイルは、サービス名にスペースを含んでいてもよいが、クライアントソフトウェアではだめである。スペースは、比較時には無視され、従って、それは問題になることはないが、その可能性に気をつけなさい。 同様な注意事項として、多くのクライアント −特にDOSクライアント− は、サービス名を8文字に制限する。Smbd はそのような制限がないが、そのようなクライアントから接続される場合には、サービス名が丸められるために、失敗するであろう。 この理由のため、サービス名の長さを最大8文字に制限すべきである。 [homes] と [printers] という特別なセクションは管理者の設定を楽にできるが、省略時属性の多様な組合せはトリッキーになるかもしれない。これらのセクションをデザインする時には、特別に注意をはらいなさい。特に、スプールディレクトリのパーミッションが正確であることを確認しなさい。 バージョン この man ページは、(大部分) Samba バージョン 1.9.00 一式用になっていて、さらに、それへの最近のパッチのうちのいくつかが追加されている。これらの注意事項はソフトウェア開発の動向におくれることが必然的であるため、使っているサーバのバージョンが、拡張されたりパラメータの文法がちがう、あるいはこのマニュアルページではカバーされていないことがありうる。間違いがあったら、下記のアドレスに通知してほしい。 Samba バージョン 1.5.21 以降は、コンフィグレーションファイルは(多くのプリミティブが)根本的に変更された。もし 1.8.05 より以前のバージョンを利用しているなら、グレードアップすることを強く推薦する。 オプション なし。 ファイル なし。 環境変数 なし。 参照 smbd(8), smbclient(1), nmbd(8), testparm(1), testprns(1), lpq(1), hosts_access(5) 診断 [この節は工事中] サーバから出力される大部分の診断メッセージは、指定されたログファイルにロギングされる。 ログファイル名はコンパイル時において指定されるが、smbd (smbd (8) を参照) コマンド行で無効化できる。 利用可能な診断メッセージの番号と実体は、サーバが使うデバッグレベルに依存する。もし、トラブルが生じたならば、デバッグレベルを 3 に設定し、ログファイルを熟読しなさい。 ほとんどのメッセージは適度に自明である。あいにく、このマニュアルページ作成時には、ソースコードがかなり流動しているので、すべての各々の診断メッセージを記述することが保証できない。このステージでもっともよい方法は、ソースコードを grep することであり、着目している診断メッセージを引き起こした条件を探すことである。 バグ わかっているものはない。 バグリポート、コメントなどは下記まで samba-bugs@anu.edu.au (Andrew Tridgell) またはメーリングリスト samba@listproc.anu.edu.au もちろん、下記のアナウンスチャンネルに参加しても良いだろう。 samba-announce@listproc.anu.edu.au これらのリストに参加する為には、 listproc@listproc.anu.edu.au に、メール本体が "subscribe samba Your Name" または "subscribe samba-announce Your Name" のメールを送れば良い。 エラーまたは Samba man page 改良への提案は、下記までどうぞ。 samba-bugs@anu.edu.au (Andrew Tridgell) 日本語訳 太田俊哉 (oota@pes.com1.fc.nec.co.jp) 佐藤文優 (fumiya@cij.co.jp, fumiya@yk.rim.or.jp) 補訳 Samba 1.9.16p9版 1997年1月1日