smb.conf ファイルは Samba システムの設定ファイルである。smb.conf には、 Samba システムの各プログラムが実行時に参照する設定情報が記述される。 smb.conf ファイルは、 swat(8) プログラムによって設定、管理されるように設計されている。 以下ファイルの形式と設定可能なパラメータに関して網羅的に記述する。
ファイルはセクションとパラメータから構成される。 セクションは、「[」と「]」文字で囲まれたセクション名で始まり、 次のセクションが始まるまで続く。 セクション内には以下の形式でパラメータが記述される。
パラメータ名 = パラメータ値
ファイルは行を基本単位とし、改行で終了する各行は、 コメント、セクション名、パラメータのいずれかを表す。
セクション名およびパラメータ名は大文字と小文字を区別しない。
パラメータを示す行では、最初の「=」文字に重要な意味がある。 最初の「=」文字の前後の空白文字は破棄される。 セクション名およびパラメータ名の先頭、 途中、末尾にある空白文字は無視される。 パラメータ値の先頭と末尾にある空白文字も無視される。 ただし、パラメータ値の途中にある空白文字はそのまま意味を持つ。
セミコロン(「:」)、シャープ(「#」)文字で始まる行や、 ホワイトスペースのみの行は無視される。
「\」文字で終わる行は、 UNIX の慣習通り次の行へ継続する。
「=」文字に続くパラメータの値には、 文字列(引用符で囲む必要はない)、または真偽値を表す、yes/no、0/1、 true/false のいずれかを記述する。 真偽値の場合、大文字と小文字は区別されないが、文字列の場合は、記述されたままの形で解釈される。 ファイルのパーミッションなど、幾つかのパラメータの値は数値となる。
設定ファイル中の([global] セクションを除く)各セクションでは、 共有リソース(単に「共有とも呼ぶ(訳注: 「サービス」とも呼ばれる)」)の設定が行なわれる。 セクション名は共有リソース名となり、 セクション内のパラメータは共有の設定に利用される。
[global、[homes]、[printers] という3つの特殊なセクションについては、 特殊なセクションで説明する。 以下の説明は、通常のセクションについてのものである。
共有の設定としては、 アクセスを許可するディレクトリの指定と それを利用するユーザに対するアクセス権の指定がある。 その他いくつかの補助的なオプションの指定も可能である。
セクションは、 ファイル共有サービス(クライアントからファイルシステムの延長として利用される)と プリントサービス(クライアントからサーバ上で動作している印刷サービスにアクセスするために利用される) のいずれかに分類される。
セクションは、パスワードなしでアクセスできる ゲスト サービスとして構成することもできる。 この場合、UNIX側で指定されたゲストアカウントの 権限でアクセスが行なわれる。
ゲストサービス以外のセクションにアクセスするにはパスワードが必要である。 通常クライアントからはユーザ名も提供されるが、 年代物のクライアントはパスワードのみでユーザ名を提供しないため、 「user =」で指定したユーザのリストを用いてパスワードの検証を行なうことも可能である。 Windows 95/98/Me/NT/2000 のような最近のクライアントでは、 この機能は不要である。
サーバより与えられたアクセス権は、 ホストシステムよりユーザ(またはゲストユーザ)に与えられたアクセス権によって制限されることに注意して欲しい。 サーバはホストシステムが許可する以上のアクセス権を許可することはできない。
以下の簡単なセクションは、ファイル共有を定義するものである。 ユーザは/home/bar に対して書き込み可能である。 共有は、「foo」という共有名でアクセス可能である:
[foo] path = /home/bar writeable = true
以下の簡単なセクションは印刷サービスを定義するものである。 共有は読みとりのみであるが、印刷可能である。 これは、スプールファイルのオープン、書き込み、クローズという 作業についてのみ書き込みが許可されるということである。 guest ok パラメータは、 (別途定義された)デフォルトのゲストユーザとしてアクセスが許可されていることを意味する:
[aprinter] path = /usr/spool/public writeable = false printable = true guest ok = true
homes セクションが設定ファイル中にあると、 クライアントのホームディレクトリを共有するサービスが 必要時にサーバによって作成されるようになる。
接続要求が行なわれると、存在するセクションが検索される。 要求に合致するセクションが見つかった場合はそのセクションが利用される。 見つからなかった場合は、要求されたセクション名をユーザ名とみなして ローカルのパスワードファイルが検索される。 ファイル中に名前が存在して、パスワードが適切だった場合、 [homes] セクションの設定を引き継ぐ形で共有が作成される。
新しく作成される共有に対しては、 幾つかの変更が行なわれる:
共有名は、 homes からユーザ名に変更される。
パスが指定されていなかった場合、 パスはユーザのホームディレクトリに設定される。
path = 行を [homes] セクションに記述した場合、 %S マクロを用いると便利になる場合があるかも知れない。 例えば:
path =/data/pchome/%S
のようにすることで、 UNIX からのアクセスと PC からのアクセスとでホームディレクトリが別の場合に便利である。
これは多数のクライアントに対するホームディレクトリの提供を 最小の手間で素早く簡単に早く実現する方法である。
要求されたセクション名が「homes」の場合にも同様の処理が行われるが、 共有名が要求したユーザの名前に変更されることはない。 [homes] セクションを使用する方法は、 複数のユーザがクライアント PC を共有する場合に便利である。
[homes] セクションでは、 通常のサービスで指定可能なすべてのパラメータを指定できるが、 幾つかのものは他のセクションと少し違った意味になる。 以下は典型的な [homes] セクションの例である:
[homes] writeable = yes
重要な点として、[homes] セクションでゲストアクセスを許可した場合、 全てのホームディレクトリが全てのクライアントから パスワードなしで アクセス可能になるという点が挙げられる。 ほとんどあり得ないと思うが、もし この設定を実際に行なうのであれば、 読みとり専用アクセス の設定にしておくことが好ましいであろう。
自動的に作成されるホームディレクトリの browseable パラメータの値は、 [homes] セクションの browseable パラメータからではなく、 [global] セクションの browseable パラメータより継承される。 これは、[homes] セクションでbrowseable = noを指定して [homes] 共有を不可視にしても、 自動的に作成されるホームディレクトリを表示させるようにするための仕様である。
このセクションは、プリンタ用の [homes] セクションに相当する。
[printers] セクションが設定されていると、 ユーザは、ローカルホストの printcap ファイルで設定されている各プリンタに接続することが可能となる。
接続要求が行なわれると、存在するセクションが検索される。 要求に合致するセクションが見つかった場合はそのセクションが利用される。 見つからなかった場合、[homes] セクションがあれば前述した処理が行なわれる。 それでも要求が解決できない場合は、 要求されたセクション名をプリンタ名とみなして、 要求されたセクション名が適切なプリンタ共有名とみなすかどうかの確認が行なわれる。 ファイル中に名前が存在した場合は、 [printers] セクションの設定を引き継ぐ形でプリンタ共有が作成される。
新しく作成される共有に対しては、 幾つかの変更が行なわれる:
共有名には、実際のプリンタ名が設定される。
プリンタ名が設定されていない場合、 プリンタ名として実際のプリンタ名が設定される。
共有がゲストアクセスを許可しておらず、 username パラメータも指定されていない場合、username に 実際のプリンタ名が設定される。
[printers] サービスは、必ず printable にすること。 それ以外の設定を行なうと、 サーバが設定ファイルの読みとりを拒否してしまう。
通常指定されるパスは、sticky ビットが設定され、 誰でも書き込み可能になっているスプールディレクトリである。 典型的な [printers] のエントリは次のようになる :
[printers] path = /usr/spool/public guest ok = yes printable = yes
printcap ファイル中で定義されている すべてのプリンタのエイリアス(別名)は、プリンタ名として認識される。 印刷システムが printcap ファイルのような機構を使用していないのであれば、 仮の printcap ファイルを設定できる。 このファイルは以下のような形式の行で構成される:
alias|alias|alias|alias...
各エイリアスは、印刷システムが処理可能なプリンタ名である必要がある。 [global] セクションで、このファイルを printcap ファイルとして指定する。 これにより、仮想的な printcap ファイル中にある名前のみがサーバに認識される。 もちろんこのファイル中には任意のエイリアスを記述することが可能である。 このテクニックは、ローカルプリンタの一部のみにアクセスを 制限する機能を簡単に実現するためにも利用できる。
なお、エイリアスとは printcap ファイル中の各レコードの 最初のエントリに続く各要素をさす。 各レコードは改行コードで区切られ、各要素は(複数個存在する場合) 縦棒('|')で区切られる。
注意: lpstat コマンドによりシステムで定義されている プリンタの一覧を取得可能な SYSV 系のシステムでは、 "printcap name = lpstat" とすることで、プリンタの一覧を 取得することが可能である。 詳細は、"printcap name" オプションを参照のこと。
パラメータはセクションの属性を定義するものである。
幾つかのパラメータ(securityなど) は、[global] セクションで指定する。また幾つかのパラメータ( create modeなど)は、すべてのセクションで利用可能である。 それ以外のパラメータは、「通常の」セクションでのみ利用できる。 以下の説明では、[homes] と [printers] セクションを「通常の」 セクションとして扱う。(G) がついたパラメータは、 [global] セクションでのみ指定できる。 (S) がついたパラメータは、 個々のサービスを表すセクションで指定できる。 ただし、(S) がついたパラメータは、 [global] セクション中で指定することも可能である。この場合、 それらはすべてのサービスに対するデフォルト値として機能する。
パラメータはアルファベット順に説明されている。 最良の順序とはいえないが、少なくとも目的のパラメータを 見つけることはできるだろう。同義語がある場合は、 主として利用される表記の部分で説明が行なわれ、他はその表記への参照になっている。
設定ファイルに記述可能な文字列の多くには、変数置換を利用できる。 たとえば、「path = /tmp/%u」は、john というユーザ名で ユーザが接続すると、「path = /tmp/john」として 解釈される。
これら変数置換の詳細については、各々のパラメータの説明にて解説するが、 どのパラメータに対しても適用される共通の変数置換もいくつか存在する: どこであっても必ず適用される一般的な変数置換について
現在のサービス名(存在する場合)
現在のサービスのトップディレクトリ (存在する場合)
現在のサービスのユーザ名(存在する場合)
%u のプライマリグループ
セッションのユーザ名(クライアントが接続時に送信したものであるが、 実際に接続したユーザ名と同じであるとは限らない)。
%U のプライマリグループ
%u で指定されたユーザのホームディレクトリ
Samba のバージョン
Samba が動作しているマシンのインターネットホスト名
クライアントマシンの NetBIOS 名(とても便利)
サーバの NetBIOS 名。これを用いることで、 クライアントから呼ばれた名前に応じて設定を変更することが可能となる。 これによりサーバは「2 つの顔」を持つことができる。
Samba をポート 445 で稼働させる場合、 クライアントから情報が送付されないため、このパラメータは利用できない。
クライアントマシンのインターネットホスト名
NIS のホームディレクトリサーバの名前。 これは NIS の auto.map エントリから取得される。 Samba が --with-automount オプションをつけて コンパイルされていない場合、このオプションは%Lと同じになる。
NIS auto.map エントリから取得された サーバのホームディレクトリのパス。NIS auto.map エントリは "%N:%p" のように分割されている。
プロトコルのネゴシエーションを経て選択された プロトコルレベル。これは CORE、COREPLUS、LANMAN1、LANMAN2、NT1 のいずれかの値をとる。
サーバプロセスのプロセスID
リモートマシンのアーキテクチャ。 100% 確実ではなく、一部のアーキテクチャだけが識別される。 現在、認識されるものは、Samba、WfWg、Win95、WinNT、Win2k であり、 それ以外のものは "UNKNOWN" となる。誤認識する場合は、 レベル 3 のログを samba@samba.org に送ってくれれば修正できるだろう。
クライアントマシンの IP アドレス
現在の日付と時間
環境変数 envar の値
これらの置換操作とその他の smb.conf のオプションを組み合わせると、 非常に凝った動作を設定できる。
Samba は、DOS や Windows クライアントが 8.3 形式に準拠しない名前のファイルを扱うことができるように「名前の変換」機能を提供している。 この機能により、8.3 形式のファイル名についても文字の case(大文字、小文字) を調整可能である。
短縮時の動作を制御するパラメータが幾つか存在しており、 それらは個々に解説を行なわず、ここでまとめて説明を行なう。 デフォルト値は testparm コマンドの出力を参照のこと。
以下のオプションは、すべて共有毎に設定できる (もちろん全体に対しても設定できる)。
オプションは以下の通りである:
短縮名を生成する際に利用するアルゴリズムを指定する。 「hash」と「hash2」という2つの値を指定することが可能である。 「hash」はデフォルトの値であり、長年 Samba で利用されてきた方式である。 「hash2」は、新しい方式であり、 (名前の重複の発生が低減される点で)より優れたアルゴリズムといえる。 Win32 アプリケーションの多くが短縮名を記憶しているため、 新しいアルゴリズムへの変更は、 こうしたアプリケーションの再インストールが必要になる可能性があるという点で、安易に行なうべきではない。 Samba を新規インストールした場合は、デフォルトを hash2 に設定するのもよいであろう。 デフォルトは hash である。
デフォルトの case でない文字が含まれているファイル名を 短縮するかどうかを制御する。これが yes の場合、 「Mail」のような名前は短縮される。 デフォルトはnoである。
ファイル名の case を識別するかどうかを制御する。 識別を行なわない場合、Samba は指定された名前に合致するファイル名を 検索することが必要になる。デフォルトはnoである。
新規ファイル名のデフォルトの case を制御する。 デフォルトは lower である。
新規ファイル名について、クライアントから渡された case で作成するか、デフォルトの case で作成するかを制御する。 デフォルトは yes である。
すべて大文字で適切な長さの 8.3 形式に 適合可能な新規ファイル名について、大文字で作成するか、 デフォルトの case で作成するかを制御する。 このオプションにより、「preserve case = yes」により長いファイル名が case を保持する設定の時であっても、短いファイル名は小文字で作成するといったことが可能になる。 デフォルトは yes である。
Samba 2.2 のデフォルトは、Windows NT のサーバと同様の動作である。 すなわち、case を識別しないが case は保持する。
ユーザがサービスに接続するための方法は幾つかある。 サーバは、以下のステップを踏んでサービスに対して接続を許可するかどうかを確認する。 すべてのステップが失敗した場合、接続要求は拒否される。 いずれかのステップで成功した場合、それ以降のステップは行なわれない。
サービスが「guest only = yes」となっており、 サーバが共有レベルのセキュリティ(「security = share」)で構成されている場合、 ステップ 1 から 5 は省かれる。
クライアントからユーザ名とパスワードが提供されており、それが UNIX システムのパスワード機構によって認証された場合、 そのユーザ名を使った接続が行なわれる。 このステップは \\server\service%username 形式で ユーザ名が提供された場合にも行なわれることに注意。
クライアントからシステムに登録されているユーザ名が提供された場合、 そのユーザ名に対する適切なパスワードが提供されれば、 接続が許可される。
クライアントの NetBIOS 名および以前に使われたユーザ名について 提供されたパスワードとの確認が行なわれ、 合致すれば、接続は、対応するユーザ名を使った接続が許可される。
クライアントが既にユーザ名とパスワードを提供してサーバに認証されており、 その際の認証トークンが提示された場合、 そのユーザ名が使われる。
「user =」フィールドが smb.conf ファイルの該当サービスに対して設定されており、 クライアントから提供されたパスワードが (UNIX システムのパスワード認証により) 「user =」行に記述されたユーザ名のいずれかのものと合致した場合、 接続は、「user =」行で設定されたユーザ名で行なわれる。 「user =」リスト中のユーザ名の中に「@」ではじまるものがあった場合、 それは、その名前のグループに所属するユーザ名のリストに展開される。
サービスがゲストサービスの場合、 提供されたパスワードがなんであっても、 そのサービスの「guest account = 」で指定されたユーザ名で接続が行なわれる。
Samba 2.2における Windows NT/2000 クライアントに対応した MS-RPC ベースの印刷サポートの実装にともない、 共有の一覧に表示される"Printers... " フォルダ中の 「プリンタの追加」ウィザード(Add Printer Wizard (APW))アイコンを利用することが可能になった。 APWにより、SambaやWindows NT/ 2000プリンタサーバに 別のマシンからのプリンタの追加が実現された。
Sambaホストの場合、このことは、下位のOSにおいて、 プリンタが物理的に追加されるということを意味する。 parameter>add printer command は、 印刷システムにプリンタを追加するとともに、 smbd(8) によって利用される smb.conf ファイルに対して 適切なサービスのエントリを追加するのに必要な処理を行なうスクリプトを設定する。
add printer command は 以下のパラメータを(順番に)付加して自動的に実行される:
printer name
share name
port name
driver name
location
Windows 9x driver location
すべてのパラメータは、一つの例外を除き、 Windows NT/2000 クライアントから送信される PRINTER_INFO_2 構造体から取得される。 "Windows 9x driver location" パラメータは、下位互換性を保ためにのみ提供される。 それ以外の構造体のフィールドは、APWの質問に対する回答から生成される。
add printer command が実行されると、 smbd はsmb.conf を再度読み込んで、 APWで設定される共有がすでに存在していないかを確認する。 共有名が不正な場合、smbd は、 クライアントに対して ACCESS_DENIED エラーを返却する。
delete printer command、printing、 show add printer wizardも参照のこと。
デフォルト: none
設定例: addprinter command = /usr/bin/addprinter
Samba 2.2.0 では、 Windows NT 4.0 のサーバーマネージャーを用いて 動的に共有を追加したり削除したりする機能が追加されている。 add share command は 新しいサービスの設定を smb.conf に 追加する外部のプログラム、もしくはスクリプトを設定するための パラメータである。add share command を実行するため、管理者はsmbdに対して root アカウント(uid = 0)を利用して接続する必要がある。
コマンド実行時に、smbd は自動的に以下の引数を付加して add share commandを実行する。
configFile - smb.confファイルの場所
shareName - 新しい共有名
pathName - ディスク上に**存在する**ディレクトリへのパス
comment - 新しい共有に対するコメント文字列
このパラメータは、ファイル共有の追加にのみ使われる。 印刷共有の追加については、 add printer commandを参照のこと。
change share command、delete share commandも参照のこと。
デフォルト: none
設定例: add share command = /usr/local/bin/addshare
このパラメータは、以下に記述する特別な条件の場合に、 smbd(8)によって、 ROOT 権限で実行されるスクリプトのフルパス名である。
通常は、Samba サーバでは、 サーバ上のファイルにアクセスするすべてのユーザに対して、対応する UNIX ユーザが存在している必要がある。 しかし、Windows NT のアカウントデータベースをユーザデータベースのマスタとして使うサイトでは、 Samba サーバ上のユーザの作成や保守をWindows NT の PDC に同期して行なうのは骨の折れる作業である。 このオプションにより、Samba サーバに対してユーザがアクセスした時点で smbd が UNIX のユーザを 必要に応じて作成することが可能になる。
このオプションを使うためには、smbd が security = share で構成されておらず、 add user scriptに作成される UNIX のユーザ名を表す唯一の引数%u で指定された UNIX のユーザを作成するスクリプトのフルパスが設定されている必要がある。
Windows のユーザが Samba サーバにアクセスしようとして、 ログイン(SMB プロトコルの session setup) を行なう時に、 smbdは、送信されたユーザ名とパスワードを認証するために、 password server と通信を行なう。 認証が成功すると、smbd は UNIX 上のパスワードデータベース中から対応する UNIX のユーザを検索して Windows のユーザに割り当てようとする。 この検索が失敗し、add user script が設定されていると、smbdは、 %u 引数を作成するユーザ名に展開した上で、 指定されたスクリプトをROOT権限で呼び出す。
スクリプトによってユーザが作成されると、smbdは、 その UNIX のユーザがすでに存在していたかのようにして処理を継続する。 このようにして、存在する Windows NT のアカウントに対応する UNIX のユーザが動的に作成される。
security、 password server、 delete user scriptも参照のこと。
デフォルト: add user script = <空文字列>
設定例: add user script = /usr/local/samba/bin/add_user %u
このパラメータは、共有上で管理者権限が与えられるユーザのリストである。 指定されたユーザは、すべてのファイル操作を スーパーユーザ (root) として実行できる。
このリストに登録されているユーザは、 ファイルのパーミッションに関係なくあらゆる操作を行うことができてしまうため、 このオプションは十分に注意して使用すべきである。
デフォルト: admin users はいない
設定例: admin users = jason
hosts allowの同義語である。
このオプションは、 security オプションが、server もしくは domainに設定されている時のみ有効である。 no の場合、smbd が動作しているドメインもしくはワークグループ外からのリソースへの接続要求は、失敗する。 これは、たとえそのドメインが認証を行なうサーバによって信頼されている場合であっても同様である。
このオプションは、Samba サーバが所属するドメインのユーザのみに リソースを提供させたい場合に便利である。 一例として DOMA と DOMB という 2 つのドメインがあって、 DOMA は Samba サーバを含み、DOMB を信頼している場合を想定する。 通常の条件では、DOMB中にアカウントを持つユーザは、 Samba サーバに同じ名前の UNIX アカウントがあれば、 DOMA にアカウントがなくてもリソースにアクセスできるため、 セキュリティ境界の区分けが困難である。
デフォルト: allow trusted domains = yes
このパラメータは、 nmbd が、 自身を「ネットワークコンピュータ」中のブラウズリストにアナウンスする際のサーバの種類を指定する。 デフォルトでは Windows NT に設定されている。有効な値は: 「NT Server」(これは「NT」と表記することもできる)、 "NT Workstation"、"Win95"、"WfW" であり、各々 Windows NT Server、 Windows NT Workstation、Windows 95、Windows for Workgroups を意味する。 Samba サーバを NT サーバとして表示させたくない特別な理由がない限り、 このパラメータを変更しないこと。 変更を行なうと、Samba サーバがブラウザサーバ(訳注: ポテンシャルブラウザの意?)に 正しく参加できなくなるかも知れない。
デフォルト: announce as = NT Server
設定例: announce as = Win95
このパラメータは、 nmbd が自身をサーバとしてアナウンスする際に指定するメジャーおよびマイナーバージョン番号を指定する。 デフォルトは 4.5 である。 Samba サーバをより下位のサーバとして設定する特別な必要性がない限り、このパラメータは変更しないこと。
デフォルト: announce version = 4.5
設定例: announce version = 2.0
これは、 preload の同義語である。
このパラメータにより、サービスを「無効」とすることが可能である。 available = no の場合、すべての サービスに対する接続は失敗する。これらの失敗は記録される。
デフォルト: available = yes
この global パラメータにより、 Samba 管理者が SMB 要求を受け付けるインタフェースを制限できるようになる。 この影響は、ファイルサービス smbd(8) とネームサービス nmbd(8) とで 多少異なる。
このパラメータを指定すると、ネームサービス nmbd は、 interfaces パラメータで指定されたインタフェースのポート 137 と 138 にバインドするが、 nmbd は、ブロードキャストメッセージを受信するために、 「すべてのアドレス」となるインタフェース (0.0.0.0) のポート 137 と 138 にもバインドする。このオプションが設定されていない場合、 nmbd は、これらすべてのソケットに対してネームサービスを提供する。 bind interfaces only が設定されていると、 nmbd はブロードキャストパケットの送信元アドレスを確認して、 interfaces パラメータで指定されたインタフェースを経由しないアドレスからのパケットを破棄する。 ブロードキャスト以外のソケットからユニキャストパケットを受信した場合、 nmbd は interfaces パラメータで指定されたインタフェースを経由せずにパケットを送出したマシンに対してはサービスを行なわないようになる。 IP ソースアドレスを偽造 (spoofing) することで、この単純なチェックは破られてしまう。 そのため、このパラメータを nmbd のセキュリティ機能と位置付けて本格的に利用すべきではない。
ファイルサービスの場合、このパラメータを指定すると、 smbd(8) が interfaces パラメータで指定されたインタフェースのポート 139 にのみバインドするようになる。 これにより、 smbd がサービスを提供するネットワークを 指定したインタフェース経由のものに制限することが可能である。 PPP などの間欠的なネットワークインタフェースや、非ブロードキャストなネットワークインタフェースにサービスを提供している場合は、 これらの非永続的なインタフェースをうまく処理できないため、このパラメータを使わないこと。
bind interfaces only が設定されているが、 127.0.0.1 のネットワークアドレスが interfaces パラメータに指定されていない場合は、 以下に示すような理由のため、smbpasswd(8) や swat(8) などが 期待したように動作しないことがある。
ユーザの SMB パスワードを変更するために、smbpasswd はデフォルトで localhost - 127.0.0.1 のアドレスに SMB クライアントとして接続を行ない、パスワード変更要求を送信する。 bind interfaces only が設定されているにも関わらず、 127.0.0.1 のネットワークアドレスが interfaces パラメータに含まれていなかった場合、 smbpasswd のデフォルト動作では接続に失敗してしまう。 smbpasswd については、 remote machine にホストのプライマリインタフェースのIPアドレスを設定して -r remote machine を実行することにより、強制的にホストのプライマリIPインタフェースを利用させることも可能である。
swat のステータス(status)ページは、 smbd と nmbd が実行されているかを確認するために、 127.0.0.1 から接続を行なおうとする。 そのため、127.0.0.1を追加していない場合、 smbd と nmbd は実際には動作している場合でも、 常に「not running」と表示される。更に、 swat から smbd と nmbd の開始/停止/再起動を行なうこともできなくなる。
デフォルト: bind interfaces only = no
このパラメータは、ディスクの空き領域を報告する際の smbd(8) の動作を制御する。 デフォルトでは、ディスクのブロックサイズを 1024 バイトとして報告が行なわれる。
このパラメータを変更した場合、 クライアントからの書き込みに影響がでることが予想されるが、確認されていない。 このパラメータは、熟練した管理者が(通常より大きい値に)変更を行なうことで、 再コンパイルを行なうことなく、 クライアントからの書き込みパフォーマンスへの影響をテストすることを可能とするために追加された。 これは実験的なオプションのため、将来のリリースでは削除されるかも知れない。
このオプションを変更しても、報告されるディスクの空き容量自体は変わらない。 クライアントに報告されるディスクのブロックサイズが変更されるだけである。
デフォルト: block size = 1024
設定例: block size = 65536
このパラメータは、クライアントから オープンされているファイルの領域に対して、タイムアウト値が指定された バイト範囲のロック(byte range lock)が 要求された際の smbd(8) の動作を制御する。
このパラメータが設定されている場合に ロック範囲の要求が即座に処理できない場合、 Samba 2.2 は内部的にロック要求をキューイングして、タイムアウトが来るまで 定期的にロックを取得する動作を行なう。
このパラメータが false の場合、 Samba 2.2 は以前のバージョン(Samba 1.9.x以前)の Samba と同様に振舞い、 ロックが取得できない場合にただちにロック要求を失敗させる。
デフォルト: blocking locks = yes
browseable を参照のこと。
このパラメータは、クライアントからの NetServerEnum コールに対して smbd(8) がブラウズリストを提供するかどうかを制御する。 通常trueに設定されている。 これを変更する必要はまずないであろう。
デフォルト: browse list = yes
このパラメータは、net view コマンドやブラウズリスト中に現れる 利用可能な共有の一覧に共有を表示させるかどうかを制御する。
デフォルト: browseable = yes
名前の短縮 での説明を参照のこと。
デフォルト: case sensitive = no
case sensitiveの同義語である。
この SMB 要求により、クライアントは指定したディレクトリが変更されていないかをサーバに「監視」させ、 なんらかの変更が発生した際にのみ、その SMB 要求に返答させるということが可能になる。 こうした定常的なディレクトリの監視は、UNIX では高負荷な作業になるため、 smbd(8) デーモンは、 change notify timeout で設定された秒毎に、要求された各ディレクトリを監視する。
デフォルト: change notify timeout = 60
設定例: change notify timeout = 300
これは、スキャン時間を5分ごとに変更する。
Samba 2.2.0 では、Windows NT 4.0 のサーバマネージャから 動的な共有の追加や削除を行なう機能が実現されている。 change share command は smb.conf に存在しているサービスの定義を修正するための 外部のプログラムやスクリプトを指定するために用いられる。 change share command を適切に実行するためには、 管理者は root アカウント(uid == 0) で smbd に接続しておく必要がある。
スクリプト実行時には smbd が以下の4つのパラメータを設定して自動的に change share command を実行する。
configFile - グローバルな smb.conf ファイルの位置
shareName - 新しい共有名
pathName - ディスク上に 「存在している」ディレクトリのパス名
comment - 新しい共有に設定するコメント文字列
このパラメータは、既に存在するファイル共有の設定を修正するためにのみ用いられる。 印刷共有の設定を修正する場合、Samba ホストをブラウズすると表示される「Printers...」フォルダから行なうこと。
add share command、delete share commandも参照のこと。
デフォルト: なし
設定例: change share command = /usr/local/bin/addshare
このパラメータにより、smbd が受けとったファイル名を DOS コードページ (client code page パラメータを参照のこと) から UNIX 側で定義済の文字セットに変換することが可能になる。 定義済のコードページ変換は、以下のとおり:
ISO8859-1 : 西ヨーロッパの UNIX 文字セット UNIX の文字セットを適切に変換するために character set パラメータを ISO8859-1 に設定する場合、 client code page パラメータは 必ず 850 に設定すること。
ISO8859-2 : 東ヨーロッパの UNIX 文字セット UNIX の文字セットを適切に変換するために character set パラメータを ISO8859-2 に設定する場合、 client code page パラメータは 必ず 852 に設定すること。
ISO8859-5 : ロシアのキリル文字 UNIX 文字セット UNIX の文字セットを適切に変換するために character set パラメータを ISO8859-5 に設定する場合、 client code page パラメータは 必ず 866 に設定すること。
ISO8859-7 : ギリシア UNIX 文字セット UNIX の文字セットを適切に変換するために character set パラメータを ISO8859-7 に設定する場合、 client code page パラメータは 必ず 737 に設定すること。
KOI8-R : もう一つのロシアキリル文字 UNIX 文字セット UNIX の文字セットを適切に変換するために character set パラメータを KOI8-R に設定する場合、 client code page パラメータは 必ず 866 に設定すること。
バグ: これらのMS-DOSのコードページとUNIXの文字セットとの マッピングはMS-DOSのコードページのロードのように、 静的ではなく動的に行なわれるべきである。
通常このパラメータは設定されておらず、ファイル名の変換は行なわれない。
デフォルト: character set = <空文字列>
設定例: character set = ISO8859-1
このパラメータは、Samba にアクセスするクライアントが利用している DOS コードページを指定する。 Windows や DOS クライアントで利用されているコードページを確認するには、 DOS コマンドプロンプトを開いて、chcpコマンドを入力する。 これによりコードページが表示される。 USA 版の MS-DOS、Windows 95、Windows NT のデフォルトは 437 である。 西ヨーロッパ版のこれら OS のデフォルト値は 850 である。
このパラメータは、 smbd(8) の起動時に 動的に読み込まれる codepage.XXX ファイルを指定する。このファイルについては make_smbcodepage(1) マニュアルページで網羅的な説明が行なわれているが、Windows クライアントの実装に合わせて、 case を区別しないファイル名を提供するための大文字と小文字の対応づけの情報を smbd に提供している。
Samba は現在以下のコードページのファイルを提供している:
Code Page 437 - MS-DOS Latin (米国)
Code Page 737 - Windows 95 ギリシア語
Code Page 850 - MS-DOS Latin 1(西欧言語)
Code Page 852 - MS-DOS Latin 2(東欧言語)
Code Page 861 - MS-DOS アイスランド
Code Page 866 - MS-DOS キリル文字
Code Page 932 - MS-DOS 日本語 SJIS
Code Page 936 - MS-DOS 簡体字中国語
Code Page 949 - MS-DOS 韓国ハングル
Code Page 950 - MS-DOS 繁体字中国語
このパラメータは、437、737、850、852、861、932、936、949、950 のいずれかの値をとる。 必要なコードページが存在しない場合は、 いずれかのコードページファイルのコメントと make_smbcodepage(1) のマニュアルページを参照した上で、作成して欲しい。 Samba ユーザのコミュニティへの寄贈をお忘れなく。
このパラメータとvalid chars パラメータにより、大文字と小文字の対応付けや、 ファイル名として有効な文字の指定が行われる。 このパラメータと valid chars パラメータの両方を指定する場合は、smb.conf ファイル中で、必ず、 client code page パラメータを valid chars パラメータよりも先に指定する必要がある。 そうすることで、valid chars パラメータの設定が、 client code page パラメータで指定された文字の設定に追加される。
設定されていない場合の client code page のデフォルトは 850 である。
valid chars、 code page directoryも参照のこと。
デフォルト: client code page = 850
設定例: client code page = 936
client code page 関連のファイルの置き場所を指定する。
client code pageも参照のこと。
デフォルト: code page directory = ${prefix}/lib/codepages
設定例: code page directory = /usr/share/samba/codepages
このパラメータは、 Samba が受けとった Shift-JIS の日本語文字を、 クライアントが使っている client code page から UNIX ファイルシステムのファイル名にどのように対応づけるかを指定する。 このパラメータは、client code page が 932(日本語 Shift-JIS)の時のみ有効である。オプションは以下のとおり:
SJIS - Shift-JIS 受けとったファイル名を変換しない
JIS8, J8BB, J8BH, J8@B, J8@J, J8@H - 受けとった Shift-JIS を各々異なる shift-in、 shift-out コードを利用して 8 bit JIS コードに変換する
JIS7, J7BB, J7BH, J7@B, J7@J, J7@H - 受けとった Shift-JIS コードを各々異なる shift-in、 shift-out コードを利用して 7 bit JIS コードに変換する
JUNET, JUBB, JUBH, JU@B, JU@J, JU@H - 受けとった Shift-JIS コードを各々異なる shift-in、 shift-out コードを利用して JUNET コードに変換する
EUC - 受けとった Shift-JIS の文字を EUC コードに変換する
HEX - 受けとった Shift-JIS の文字を 3 バイトの HEX 形式に変換する。これは :AB のような形式になる。
CAP - 受けとった Shift-JIS の文字を Columbia AppleTalk Program (CAP) で用いられている 3 バイトの形式に変換する。 これは :AB のような形式になる。 これは Samba と CAP の間の互換性を保つのに有用である。
デフォルト: coding system = <空文字列>
これは、クライアントからnet view や「ネットワークコンピュータ」経由でサーバ上の利用可能な共有を一覧する際に、 共有名の隣に表示される文字列である。
コンピュータ名の隣に表示される文字列を設定したい場合は、 server string パラメータを参照のこと。
デフォルト: コメント文字列はない
設定例: comment = Fred's Files
このオプションを指定することで、デフォルトの設定ファイル (通常smb.conf)の代わりのファイルを利用して、 設定を上書きすることが可能になる。このオプション自身が config file 中に記述されるため、これには「鶏と卵」問題がある。
そのため、このパラメータによって設定ファイルが変更されると、 新しい設定ファイルの内容が先頭からロードされる。
このオプションには、通常の変数置換が適用されるので、 うまく使えばとても便利であろう。
指定された設定ファイルが存在しない場合は読み込まれない (これにより、特定クライアントに対して、 特別な設定ファイルを指定するということが可能となる)。
設定例: config file = /usr/local/samba/lib/smb.conf.%m
このパラメータにより、サービスエントリの「複製」 が可能となる。指定されたサービスの設定が単純に現在のサービスへと複製される。 現在のセクションに設定されているパラメータは、 複製元のセクションの設定を上書きする。
この機能を使うと、「ひな型(template)」となるサービスを作成した上で、 同様の設定のサービスを単純に作成するということが可能となる。 複製元のサービスは、 設定ファイル内で複製先のサービスより前に記述する必要があることに注意。
デフォルト: 値はない
設定例: copy = otherservice
このパラメータの同義語は create mode である。
ファイル作成時に付与されるパーミッションは、 DOS の属性を UNIX のパーミッションに変換することにより生成されるが、 最終的には、このパラメータとビット単位の AND 演算が行なわれる。 このパラメータは、ファイルの UNIX のパーミッションに対するビットマスクと 考えることができる。ここで設定されないビットは、 ファイル作成時のパーミッションから削除される。
このパラメータのデフォルト値は、 「グループ」と「その他」の書き込みおよび実行権を UNIX のパーミッションから取り除いた値である。
この処理に引続き、Samba はこのパラメータにより生成されたパーミッションを force create mode パラメータの値とビット単位の OR 演算を行なう。 なおパラメータの値はデフォルトで、000 に設定されている。
このパラメータは、ディレクトリのパーミッション生成には関与しない。 詳細は、directory mode パラメータを参照のこと。
作成されるファイルに対して特定のパーミッションのビットを 強制的に設定するには、 force create mode パラメータを参照のこと。 作成されるディレクトリに対するパーミッションのビットマスクについては、 directory mode パラメータを参照のこと。 inherit permissions も参照のこと。
このパラメータは、Windows NT/2000 の ACL により設定されるアクセス権には 関与しない。管理者が ACL に対するビットマスクも同様に設定したいと考えている場合は、 security mask の設定が必要である。
デフォルト: create mask = 0744
設定例: create mask = 0775
これは create maskの同義語である。
このパラメータは、クライアントサイドにのキャッシングポリシーを規定し、 オフラインキャッシュ機能を持つクライアントが、 共有上のファイルをどのようにキャッシュするかを規定する。 有効な値は、manual、documents、programs、disable である。
これらの値は、Windows のサーバで利用されている設定に対応している。
例えば、移動プロファイルが格納されている共有では、 csc policy = disableとすることで、 オフラインキャッシュを無効にできる。
デフォルト: csc policy = manual
設定例: csc policy = programs
このパラメータの値(10進の整数)は、 接続が利用されなくなったとみなされて切断が行なわれるまでの経過時間(分)を表す。 deadgtime はオープンされているファイルが存在しない時のみ有効である。
このパラメータは、多くの利用されていない接続によって、 サーバ上のリソースが枯渇するのを防ぐのに有効である。
多くのクライアントは、このパラメータをユーザに意識させないように、 接続が切断されていた際に、自動で再接続を行なう機能を持っている。
ほとんどのシステムでは、このパラメータを利用して、 数分でタイムアウトが発生するようにすることを推奨する。
deadtime が 0 の場合、タイムアウトによる自動的な切断は行なわれない。
デフォルト: deadtime = 0
設定例: deadtime = 15
ログメッセージに秒単位以上のタイムスタンプが必要な場合、 この真偽値のパラメータを有効にすることにより、 マイクロ秒単位のタイムスタンプがメッセージに付加される。
このパラメータを有効にする際は、 debug timestamp が有効になっている必要があることに注意。
デフォルト: debug hires timestamp = no
fork されて生成された smbd プロセスが同一のログファイルを共用している場合、 どのプロセスがメッセージを出力しているかを識別することは非常に難しい。 この真偽値パラメータを有効にすることで、ログファイル中の タイムスタンプメッセージのヘッダにプロセスIDが付加されるようになる。
このパラメータを有効にする際は、 debug timestamp が有効になっている必要があることに注意。
デフォルト: debug pid = no
Samba 2.2 の debug log messages には、 デフォルトでタイムスタンプが付加される。 高い debug level を設定している場合、 このタイムスタンプが目障りに感じることもあるだろう。 この真偽値パラメータにより、タイムスタンプの付加を抑止することができる。
デフォルト: debug timestamp = yes
Samba は root 権限で動作する時もあれば、 接続したユーザの権限で動作する時もある。 このパラメータを有効にすると、現在の euid、egid、uid、gidを ログファイル中のタイムスタンプメッセージに付加する。
<このパラメータを有効にするには、 debug timestamp が有効になっている必要がある。
デフォルト: debug uid = no
log levelの同義語である。
default serviceの同義語である。
名前の短縮セクションを参照のこと。 short preserve case パラメータも参照のこと。
デフォルト: default case = lower
このパラメータは、printable サービスにのみ適用される。 smbd が、Windows NT/2000/XP クライアントに対してプリンタドライバを提供する際に、 Samba サーバ上の各プリンタでは、用紙サイズ、 orientation 、duplex settings といった情報が定義されたデバイスモード(device mode)という値を設定する必要がある。 デバイスモードの適切な値は、プリンタドライバ自身のみが生成することができる (この処理は、Win32 プラットフォームでのみ実行することができる)。 smbd はデバイスモードを生成するドライバのコードを実行できないため、 このフィールドのデフォルト値としては、NULL が設定される。
Windows NT/2000/XP クライアントに対してプリンタドライバを提供する上での問題点の多くは、 デバイスモードの生成に関するものである。 ドライバによっては、デバイスモードとして NULL を設定すると、 クライアント側の Explorer.exe をクラッシュさせるものがある。 また、デバイスモードがドライバ自身によって生成されていないと、 クライアントのスプーラサービス(spoolsv.exe)を停止させてしまうものもある。
このパラメータは、熟慮の上、プリンタドライバのテストを行なった上で用いること。 デバイスモードを NULL のままにしておき、Windows クライアントに適切な値を設定される方が好ましい。 ただし、ドライバが常にこの処理を行なうとは限らないため、 default devmode = yes の設定を行なうことで、smbd にデフォルトのデバイスモードを生成するような指示を行なうことができるようになっている。
Windows NT/2000 の印刷システムやデバイスモードに関する詳細な情報については、 MSDN documentation を参照のこと。
デフォルト: default devmode = no
このパラメータは、 要求されたサービスが存在しなかった場合に接続されるサービス名を指定する。 パラメータの値には大括弧('[' と ']')は不要であることに注意 (設定例を参照のこと)。
このパラメータにデフォルト値はない。 このパラメータが設定されていない場合、 存在しない共有に対する接続は失敗する。
default service は guest okで、 read-only のサービスにするのが一般的である。
外面的なサービス名はクライアントから要求されたサービス名に変換される。 これは、%S のようなマクロをワイルドカードサービスに適用する際に、非常に有用である。
default service のサービス名に現れる「_」文字は、「/」にマッピングされる。 これにより、いろいろと面白いことができるだろう。
設定例:
[global] default service = pub [pub] path = /%S
Samba 2.2における Windows NT/2000 クライアントに対応した MS-RPC ベースの印刷サポートの実装にともない、 DeletePrinter() RPC呼び出しを発行することにより、 実行中にプリンタを削除することが可能になった。
Samba ホスト上では、 実際の印刷システム上から物理的にプリンタが削除される。 deleteprinter command パラメータには、 プリンタを印刷システムとsmb.confから削除するために 必要な操作を実行するためのスクリプトを設定する。
delete printer command は 「プリンタ名」のみをパラメータに設定されて呼び出される。
delete printer command が実行されると、 smbd は削除対象のプリンタを無効にするために、 smb.conf を読み直す。 共有名が依然として有効な場合、smbd はクライアントに ACCESS_DENIED エラーを返却する。
add printer command、printing、 show add printer wizardを参照のこと。
デフォルト: なし
設定例: deleteprinter command = /usr/bin/removeprinter
このパラメータにより、読みとり専用のファイルの削除が可能になる。 これは DOS の仕様ではないが、UNIX では可能な処理である。
このオプションは、rcs のようなアプリケーションを動作させるのに有用で、 UNIX ファイルの所有者に関する仕様がファイルのパーミッション変更を妨げたり、 DOS の仕様が読み取り専用ファイルの削除を妨げたりする問題を回避する。
デフォルト: delete readonly = no
Samba 2.2.0 では、Windows NT 4.0 のサーバマネージャから 動的な共有の追加や削除を行なう機能が実現されている。 delete share command は smb.conf に存在しているサービスの定義を削除するための 外部のプログラムやスクリプトを指定するために用いられる。 delete share command を適切に実行するためには、 管理者は root アカウント(uid == 0) で smbd に接続しておく必要がある。
スクリプト実行時には smbd が以下の2つのパラメータを設定して自動的に delete share command を実行する。
configFile - グローバルな smb.conf ファイルの位置
shareName - 存在しているサービス名
このパラメータはファイル共有を削除する際にのみ利用される。 印刷共有の削除については、 delete printer commandを参照のこと。
add share command、change share commandも参照のこと。
デフォルト: なし
設定例: delete share command = /usr/local/bin/delshare
このパラメータは、以下に記述する特別な条件の場合に smbd(8) によって ROOT 権限で実行されるスクリプトのフルパス名である。
通常は、Samba サーバでは、 サーバ上のファイルにアクセスするすべてのユーザに対して、対応する UNIX ユーザが存在している必要がある。 しかし、Windows NT のアカウントデータベースをユーザデータベースのマスタとして使うサイトでは、 Samba サーバ上のユーザの作成や保守を Windows NT の PDC に同期して行なうのは骨の折れる作業である。 このオプションにより、 Samba サーバに対してユーザがアクセスした時点で、対応する Windows NT ユーザが存在しなかった場合は、 smbd が UNIX のユーザを 必要に応じて削除することが可能になる。
このオプションを利用する場合は、 smbd が security = domain か security = user で構成されており、 delete user script に 唯一の引数として削除対象の UNIX ユーザ名に展開される %u が指定された際に、 その UNIX ユーザを削除するスクリプトのフルパスが設定されている必要がある。
Windows のユーザが Samba サーバにアクセスするための ログイン(SMB プロトコルの session setup) を行なう際に、 smbd は、送信されたユーザ名とパスワードを認証するため password server と通信を行なう。 ユーザが存在しないというドメインエラーコードにより認証が失敗すると、 smbd は、UNIX パスワードデータベース中から Windows のユーザアカウントに対応する UNIX のユーザを検索する。 この検索が成功し、delete user script が設定されていると、 smbd は、 %u 引数を削除対象のユーザ名に展開した上で、 指定されたスクリプトを ROOT権限で呼び出す。
このスクリプトにより、指定された UNIX ユーザが削除される。このようにして、 UNIX ユーザが動的に削除され、 Windows NT アカウントとの同期が行われる。
security = domain、 password server 、add user script も参照のこと。
デフォルト: delete user script = <空文字列>
設定例: delete user script = /usr/local/samba/bin/del_user %u
このオプションは、アクセスが禁止(veto)されたディレクトリ (veto files オプションを参照のこと)を含むディレクトリを削除しようとする際に影響する。 このオプションが false (デフォルト) の場合、 アクセスが禁止されたディレクトリ内にアクセスを禁止されていないファイルやディレクトリが含まれていても、 ディレクトリ内の削除は失敗する。これは通常期待されている動作であろう。
このオプションを true に設定すると、 Samba はアクセスが禁止されたディレクトリ内でも 再帰的にすべてのファイルやディレクトリを削除しようとする。 これは NetAtalk のようなサーバを併用する際は、 通常 DOS/Windows ユーザからの参照するのを禁止しているディレクトリ内にメタファイル (たとえば .AppleDoubleなど)を作成するため、このオプションが有用である。
delete veto files = yes を指定することで、 これらのディレクトリは、親ディレクトリが削除された際に、自動的に削除される (ただし、ユーザはディレクトリを削除するパーミッションを持っている必要がある)。
veto files パラメータも参照のこと。
デフォルト: delete veto files = no
hosts denyの同義語である。
dfree command パラメータは、 Samba のディスク空き容量の計算で問題が発生するシステムでのみ利用すること。 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 ベースのシステムの場合):
#!/bin/sh /usr/bin/df -k $1 | tail -1 | awk '{print $3" "$5}'
システムによっては、コマンド名をフルパスで記述する必要がある 場合があるので注意。
path の同義語である。
このパラメータは、パーミッションを示す8進数の数値であり、 UNIX側のディレクトリ作成時に DOS の属性からUNIXのパーミッションが生成される際に使われる。
ディレクトリ作成時に付与されるパーミッションは、 DOS の属性と UNIX のパーミッションとのマッピングにしたがって、 DOS の属性を UNIX のパーミッションに変換することにより生成されるが、 最終的には、このパラメータとビット単位の AND 演算が行なわれる。 このパラメータは、ディレクトリの UNIX のパーミッションに対するビットマスクと 考えることができる。ここで設定されないビットは、 ディレクトリ作成時のパーミッションから削除される。
このパラメータのデフォルト値は、 「グループ」と「その他」の書き込み権を UNIX のパーミッションから取り除き、ディレクトリの所有者のみが変更可能にしたものである。
この処理に引き続いて、Samba はこのパラメータで生成された UNIX のパーミッションとforce directory mode パラメータの値との OR 演算を行う。 このパラメータは既定では 000 に設定されている(つまり、 追加されるパーミッションはない)。
このパラメータは、Windows NT/2000 の ACL エディタで設定される アクセス権には適用されない。ACL に対しても強制的にマスクを適用したい場合は、 directory security mask パラメータを設定することが必要である。
作成するディレクトリに対して特定のパーミッションビットを常に付加したい場合は、 force directory mode パラメータを参照のこと
作成するファイルに対するパーミッションビットのマスクは、 create mode パラメータ、および directory security mask パラメータを参照のこと。
inherit permissions パラメータに付いても参照のこと。
デフォルト: directory mask = 0755
設定例: directory mask = 0775
directory maskの同義語である。
このパラメータは、 Windows NT クライアント上のセキュリティダイアログボックスを使って、 UNIX ディレクトリのパーミッションを操作する時に、 設定可能な UNIX 側のパーミッションを指定する。
このパラメータは、変更されるパーミッションビットに対して、 マスクとして適用され (AND 操作が適用され)るため、 このマスクにないビットは変更操作から保護される。 言い替えれば、マスク中で 0 と指定されたビットは、 ユーザが変更できないビットと見なされる。
このパラメータが明示的に指定されなかった場合は、 0777 に設定される。これにより、ディレクトリに対する全ての user/group/world パーミッションが変更可能となる。
注意 : 他の方法を使って Samba サーバにアクセスすることが可能なユーザは、この制限を簡単に回避できてしまう。 そのため、このパラメータの主な用途はスタンドアロンで動作するアプライアンスシステムになるだろう。 通常のシステムの管理者のほとんどは、 このパラメータをデフォルトの 0777 のままにしておきたいと考えるだろう。
force directory security mode、security mask、 force security mode パラメータも参照のこと。
デフォルト: directory security mask = 0777
設定例: directory security mask = 0700
このパラメータを有効にすることで、 Samba の SPOOLSS MS-RPC サポートを無効にし、Samba 2.0.x と同様の動作をさせることが可能となる。 Windows NT/2000 クライアントは、Lanman 形式の印刷コマンドを利用することも可能である。 Windows 9x/Me は、このパラメータに影響されない。 なお、このパラメータを有効にすると、NT のプリンタプロパティを利用した、 Windows NTのプリンタ追加ウィザードによる Sambaマシンへのプリンタドライバのアップロード機能が無効になる。 また、Windows NT/2000 クライアントが、必要に応じて Samba マシンからプリンタドライバをダウンロードする機能も同時に無効になる。 このパラメータを有効にする際は、充分注意すること。
use client driver も参照のこと。
デフォルト : disable spoolss = no
WINS サーバとして機能している nmbd(8) に対して、検索している NetBIOS 名が登録されていなかった時に、 その NetBIOS 名を DNS 名として扱い、名前の問い合わせを行ったクライアントに代わって その名前を DNS サーバに対して問い合わせるように設定する。
NetBIOS 名の最大長は 15 文字であるため、 DNS 名(もしくはDNSの別名)も、最大15文字に制限される。
nmbd が DNS への名前解決を行う際には、 問い合わせにより他の処理が停止させないために、 自分自身を複製したプロセスを生成する。
wins supportパラメータも参照のこと。
デフォルト: dns proxy = yes
このパラメータは、SambaホストがPDCとして動作する際に、 ユーザを「Domain Admins」グループに所属させるための一時的な対処策として設けられたものである。 Windows NT/2000のグループをUNIXのグループにマッピングするための 本格的な対応については、今後行なわれる。 このパラメータはやや混乱させる名前になっていることに注意。 実際のところ、このパラメータには、標準的なsmb.conf の記法に従って、ユーザ名やグループ名の一覧を記述することができる。
domain guest group、domain logonsも参照のこと。
デフォルト: domain adminsのメンバーは存在しない
設定例: domain admin group = root @wheel
このパラメータは、SambaホストがPDCとして動作する際に、 ユーザを「Domain Guests」グループに所属させるための一時的な対処策として設けられたものである。 Windows NT/2000のグループをUNIXのグループにマッピングするための 本格的な対応については、今後行なわれる。 このパラメータはやや混乱させる名前になっていることに注意。 実際のところ、このパラメータには、標準的なsmb.conf の記法に従って、ユーザ名やグループ名の一覧を記述することができる。
domain admin group, domain logonsも参照のこと。
デフォルト: domain guestsのメンバーは存在しない
設定例: domain guest group = nobody @guest
このパラメータが true に設定されると、 Samba サーバは、自身が所属する workgroup に対する Windows 95/98 のドメインログオン機能を提供するようになる。 Samba 2.2 では、Windows NT 4.0 に対するドメインコントローラ機能も限定的ながら有している。 この機能の設定に関する詳細な記述は、Samba ソースディストリビューション中の htmldocs/ ディレクトリにある、Samba-PDC-HOWTO を参照のこと。
デフォルト: domain logons = no
このオプションにより、 nmbd(8) は WAN 環境におけるブラウズリストの統合を行なうことが可能になる。 このオプションを設定すると、nmbd は、指定された workgroup のドメインマスタブラウザである事を表す、ドメイン固有の特別な NetBIOS 名(訳注:NetBIOS 名で末尾が 0x1b のユニーク名を指す) を登録する。 各サブネット上にある、同名の workgroup に属するローカルマスタブラウザは、この nmbdに対して、 ローカルに収集したブラウズリストを提供するとともに、 smbd に対してネットワーク全体のブラウズリストの完全な複製の提供を要求するようになる。 ブラウザのクライアントは、ローカルマスタブラウザと通信することで、 個々のサブネットのブラウズリストではなく、 そのドメイン全体のブラウズリストを取得できるようになる。
Windows NT のプライマリドメインコントローラは、 workgroup のドメインマスタブラウザとして 機能するために、 workgroup固有の特別な NetBIOS 名を登録できることが求められていることに注意 (Windows NT PDC のこの動作を抑止することはできない)。 つまり、このパラメータが Yes に設定され、nmbd が Windows NT PDC より前に、workgroup のための特別な NetBIOS 名を登録してしまうと、 サブネット越しのブラウズは正常に動作せず、場合によっては失敗する。
domain logons = yes の場合、domain master パラメータはデフォルトでは有効となる。 domain logons が有効でない場合(デフォルト)、 domain master もデフォルトでは有効にならない。
デフォルト: domain master = auto
システムに存在するディレクトリには、 それらはクライアントに参照させたくないものや、 無限に深い(再帰的)なものが存在する(たとえば Linux での /proc)。 このパラメータは常に空のように見せかけるサーバ側のディレクトリをコンマで区切って指定する。
Samba が要求する "dont descend" の書式は一定ではない。 たとえば /proc ではなく ./proc でなければならないかもしれない。 実験してみるのが最良の方法である。 :-)
デフォルト: なし (すべてのディレクトリの中が参照できる)
設定例: dont descend = /proc,/dev
Samba のデフォルトの動作では、 ファイルやディレクトリの所有者のみがアクセス権を変更できるという、UNIX的な仕様になっている。 しかし、この仕様が DOS/Windows のユーザを混乱させてしまうことも多い。 このパラメータを有効にすることによって、 ファイルに書き込み権のあるユーザは、パーミッションの変更もできるようになる。 ファイルの所有グループに所属しているユーザは、 グループに対して読み込み権限しか与えられていない場合は パーミッションの変更を行なうことができないことに注意。 なお、ファイルやディレクトリの所有者は変更されない。 変更されるのはパーミッションのみである。
デフォルト: dos filemode = no
DOS や Windows の FAT ファイルシステム下では、 時刻の最小単位は 2 秒である。共有に対してこのパラメータを設定すると、 smbd(8) に対して 1 秒精度の要求が 行なわれた際に、 返却される時間をもっとも近い 2 秒の境界値に丸める。
このオプションはおもに、Samba の共有で Visual C++ を 使用するための互換性オプションとして利用する。 共有で oplock が有効であると、 Visual C++ はファイルが最後の読み込みから変更されていないかを検査するときに、 扱う日付の最小単位が異なる 2 つの時刻取得の呼び出し (call) を利用する。 そのうちのひとつの呼び出しは 1秒単位であり、もうひとつは 2 秒単位になっている。 2 秒単位で扱う呼び出しが奇数秒を切り捨てるため、 ファイルが奇数秒の日付であると 2 つの日付が一致せず、 Visual C++ はファイルが変更されたと報告し続けてしまう。 このオプションをtrueに設定することで 2 つの日付は一致し、Visual C++ は幸福になれる。
デフォルト: dos filetime resolution = no
DOS や Windows では、 ファイルに書き込み権のあるユーザが、ファイルのタイムスタンプを変更することが可能である。 POSIX の仕様では、ファイルの所有者か root のみがタイムスタンプを変更できる。 Samba のデフォルトは、POSIX 仕様に準拠しており、 smbd の実効ユーザがファイルの所有者でないとき、タイムスタンプの変更を禁止する。 このオプションを true にセットすると、 DOS の仕様に準じて動作するようになるため、 smbd は DOS の要求に従ってタイムスタンプを変更できるようになる。
デフォルト: dos filetimes = no
この真偽値パラメータにより、 クライアントとのネゴシエーションに暗号化パスワードを利用するかどうかが決定される。 Windows NT 4.0 SP3 以降 や Windows 98 では、 レジストリの変更をしない限り、暗号化パスワードがデフォルトである。 Samba で暗号化パスワードを使う方法は docs/ ディレクトリ中の、ENCRYPTION.txt を参照して欲しい。
暗号化パスワードを正しく機能させるためには、 smbd(8) がローカルの smbpasswd(5) ファイル(セットアップと保守を行なう方法については smbpasswd(8) プログラムを参照)を参照するようにするか、 security = [server|domain] に設定して、 smbd が別のサーバで認証を行うようにする必要がある。
デフォルト: encrypt passwords = no
このオプションにより、 複数サブネット間でのブラウザのアナウンスメントに関する拡張が有効になる。 この拡張は、Microsoft の実装の標準とは異なる。
ブラウザのアナウンスメントに関する一つ目の拡張点は、 Samba のWINSサーバに登録されているすべてのドメインマスタブラウザを問い合わせる定期的なワイルドカードクエリと、返却された各DMBと行なわれるブラウズリストの同期処理のサポートである。 二つ目の拡張点は、DMBとして識別されているマシンとの間で 一定間隔に行なわれるランダムなブラウズリストの同期処理のサポートである。 (訳注: これはJP120151などで記載されている、WINSクライアントとなっているWindows NT 3.5以上のDMBが定期的にWINS サーバに接続し、WINSサーバが保有する「ドメイン名<1B>」のリストを自身のブラウズリストに追加していく処理のサポートだと思われる)
中身が空のワークグループがブラウズリストから消えないというトラブルが発生した場合は、 このオプションを無効にしたい場合もあるだろう。 ブラウザのプロトコルの仕様上、 この拡張により空のワークグループが永久に残ってしまうという悩ましい問題が起こることがある。
通常は、サブネット越えのブラウザのアナウンスメントの信頼性向上のため、 このオプションは、有効のままにしておくべきである。
デフォルト: enhanced browsing = yes
ここでいう「ポート(port)」の概念は、 UNIXのものと大きく異なる。Windows NT/2000のプリントサーバにおいて、 ポートはポートモニタと関連付けられ、通常ローカルポート(LPT1:、COM1:、 FILE:)やリモートポート(LPD Port Monitorなど)といった形態をとる。 Sambaのデフォルトでは、 「Samba Printer Port」というポートのみが定義されている。 Windows NT/2000においては、すべてのプリンタに適切なポート名がある。 デフォルトの「Samba Printer Port」 以外のポート名をポートの一覧に表示させたい場合 (smbdはポート名を全く使用していない)、 標準出力に対してポート名のリストを1行に一つずつ生成するようなプログラムを enumports commandで定義することができる。 この一覧はレベル1および2のEnumPorts() RPCのレスポンス中で利用される。
デフォルト: enumports command は定義されていない
設定例: enumports command = /usr/bin/listports
これは preexecの同義語である。
NTFS や Windows VFAT ファイルシステムでは、 すべてのファイルとディレクトリの作成時刻を保持している。 これは UNIX が保持している ctime (状態変更時刻)とは異なるため、 Samba の既定動作では UNIX が保持している最も古い時刻を報告する。 共有でこのパラメータを設定した場合、Samba はディレクトリの作成時刻として、 常に 1980/1/1 の午前 0 時を報告する。
このオプションは、Samba 共有上で Visual C++ を使うときに互換性を保つためのオプションとして用いられることが多い。 Visual C++ は、各オブジェクトファイルに対する依存性チェック用途のオブジェクトディレクトリと、 そのディレクトリを作成するルールを持った makefile を生成する。 NMAKE が日付を比較する際にディレクトリをチェックするときには、ファイル作成時刻を使用する。 これにより、オブジェクトディレクトリが存在しない場合は作成され、作成されたディレクトリは、 ディレクトリ中に存在するオブジェクトファイルよりも古い時刻を保持することになる。
しかし、UNIX の時刻の扱いに関する仕様のため、 Samba が報告するディレクトリの作成時間は ディレクトリにファイルが作成または削除されたときにも更新されてしまう。 その結果 NMAKE は、オブジェクトディレクトリで最後にビルドされたファイルを除く すべてのオブジェクトファイルがオブジェクトディレクトリより古いと判断し、それらを再構築してしまう。 このオプションを有効にすることで、 常にディレクトリは含まれるファイルよりも前の日付になり、 NMAKE によるビルドが意図したように行なわれることが保証される。
デフォルト: fake directory create times = no
oplock は、SMB クライアントがファイル操作の結果をローカルにキャッシュするための許可を サーバから取得するための機能である。 サーバが oplock (opportunistic lock = 便宜的ロック) を許可すると、 クライアントは自分だけがそのファイルにアクセスしていると認識して、 積極的にファイルの内容をキャッシュする。oplock のタイプによっては、 クライアントがファイルのオープン/クローズの操作をキャッシュすることもありうる。 これにより、多大な性能向上が期待できる。
fake oplocks = yes の設定を行なうと、 smbd(8) は、 実際にそのファイルを利用しているクライアント数に関わらず、 常に oplock を許可する。
一般的には、このパラメータを利用するよりも、 実際の oplocks を利用する方が優れている。
CDROM 等の物理的に読みとり専用のメディアの場合など、 読みとり専用か、同時に 1 台のクライアントからだけしか アクセスされないとわかっている共有でこのオプションを有効にすると、 多くの操作で大きな性能改善が見られるだろう。複数のクライアントから 同時にファイルの読み書きアクセスする可能性がある共有でこのオプションを有効にすると、 ファイルの内容が破壊される場合が起こりうる。 このオプションは慎重に使用して欲しい!
デフォルト: fake oplocks = no
このパラメータにより、Samba の管理者は、 smbd(8) がシンボリックリンクを追跡する処理を共有単位で禁止することが可能になる。 このパラメータを no に設定した場合、 シンボリックリンクのファイルやディレクトリの追跡する処理が 抑制される(ユーザにはエラーが返却される)。 このオプションは、ユーザが自分のホーム・ディレクトリに /etc/passwd へのシンボリックリンクを追加するのを防止したりする効果がある。 ただし、わずかながらファイル名の検索が遅くなるだろう。
このオプションはデフォルトで有効になっている (つまり、smbd はシンボリックリンクを追跡する)。
デフォルト: follow symlinks = yes
このパラメータは、Samba によって作成されたファイルのパーミッションに 必ず設定される UNIX のパーミッションビットを指定する。 これは、ファイルの作成時やパーミッションの変更時に、 パーミッションビットに対して、このパラメータの値でビット単位の OR 演算を行なうことで実現される。 このパラメータの既定値は 000 (8 進数表記)である。 このパラメータの値がビット単位の OR 演算に用いられるのは、 create mask パラメータの適用後である。
ファイルに対するビットマスクの詳細についてはcreate maskを参照のこと。
inherit permissions パラメータも参照のこと。
デフォルト: force create mode = 000
設定例: force create mode = 0755
は、作成されるすべてのファイルに対し、 グループ(group)とその他のユーザ(others)の読み込みと実行権ビットと、 所有者(user)の読み込み/書き込み/実行ビットが必ず付与されるようにする。
このパラメータは、Samba によって作成されたディレクトリのパーミッションに 必ず設定される UNIX のパーミッションビットを指定する。 これは、ディレクトリの作成時に、 パーミッションビットに対して、このパラメータの値でビット単位の OR 演算を行なうことで実現される。 このパラメータの既定値は 000 (8 進数表記)である。この場合、作成されるディレクトリに対して特にパーミッションビットは追加されない。 このパラメータの値が適用されるのは、 directory mask パラメータの適用後である。
ディレクトリ作成時のマスクモードビットに関する詳細については、 directory mask パラメータを参照のこと。
inherit permissions パラメータも参照のこと。
デフォルト: force directory mode = 000
設定例: force directory mode = 0755
は、作成されるすべてのディレクトリに対し、 グループ(group)とその他のユーザ(others)の読み込みと実行権ビットと、 所有者(user)の読み込み/書き込み/実行ビットが必ず付与されるようにする。
このパラメータは、 Windows NT クライアント上のセキュリティダイアログボックスを使って、 UNIX ディレクトリのパーミッションを操作する時に、 設定可能な UNIX 側のパーミッションを指定する。
このパラメータは、変更されるパーミッションビットに対して、 OR操作のマスクとして適用されるため、 このマスクにあるビットはユーザが行なった修正変更操作に関わらず、設定される。 言い替えれば、マスク中で 1 と指定されたビットは、 ディレクトリのセキュリティを修正する際に、常に on に設定されたとみなされる。
このパラメータが明示的に設定されなかった場合は、 000 に設定される。これにより、ディレクトリに対する全ての user/group/world パーミッションを制限なしに変更可能となる。
注意 : 他の方法を使って Samba サーバにアクセスすることが可能なユーザは、この制限を簡単に回避できてしまう。 そのため、このパラメータの主な用途はスタンドアロンで動作するアプライアンスシステムになるだろう。 通常システムの管理者のほとんどは、このパラメータを 0000 のままにしておきたいと考えるだろう。
directory security mask、 security mask, force security mode パラメータも参照のこと。
デフォルト: force directory security mode = 0
設定例: force directory security mode = 700
このパラメータには、 このサービスに接続するすべてのユーザのデフォルトの所属グループと見なされる UNIX のグループ名を指定する。 このパラメータを使うと、サービス上のファイルに対するアクセスの際のパーミッションチェックには、 ここで指定したグループを用いる形でファイル共有を行う際に便利である。 このような設定を行うことで、 このサービス内において提供するファイルやディレクトリに対して指定されたグループ名にパーミッションを割り当てることにより、 Samba の管理者がこれらのファイルの共有を許可/不許可にすることができるようになる。
Samba 2.0.5 以降では、このパラメータの機能が拡張されている。 '+' 文字からはじまるグループ名が設定されていた場合、 現在共有にアクセスしているユーザが値として設定されたグループのメンバーだった場合に、 そのグループがユーザのデフォルトのプライマリグループとして設定される。 これにより、特定のグループに所属しているユーザのみが、 そのグループが所有するファイルを作成することを可能とする設定を行うことが可能となる。 This gives a finer granularity of ownership assignment. たとえば、force group = +sys という設定を行った場合、 sys グループに所属しているユーザが Samba の 共有 にアクセスした際にのみ、 デフォルトのプライマリグループが sys に設定される。 その他すべてのユーザは、通常のプライマリグループのままとなる。
force user パラメータも設定されていた場合、 force group で指定されたグループより、 force user で指定されたユーザのプライマリグループの方が優先される。
force userも参照のこと。
デフォルト: なし
設定例: force group = agroup
このパラメータは、 Windows NT クライアント上で NT 固有のセキュリティダイアログボックスを使った UNIX ファイルのパーミッションを操作を行うときに、 変更可能とする UNIX のパーミッションビットを指定する。
このパラメータは、 変更されるパーミッションビットに対して、OR 操作のマスクとして適用されるため、 このマスクに含まれるビットは、ユーザの設定に関わらず on となる。 言い替えれば、マスク中の各ビットは、ユーザがファイルのセキュリティを変更するときに、 常に on に設定するビットとして考えることもできる。
このパラメータが明示的に設定されなかった場合は、 0 に設定される。これにより、ディレクトリに対する全ての user/group/world パーミッションを制限なしに変更可能となる。
注意 : 他の方法を使って Samba サーバにアクセスすることが可能なユーザは、この制限を簡単に回避できてしまう。 そのため、このパラメータの主な用途はスタンドアロンで動作するアプライアンスシステムになるだろう。 通常システムの管理者のほとんどは、 このパラメータを 0000 のままにしておきたいと考えるだろう。
force directory security mode、 directory security mask、 security mask パラメータも参照のこと。
デフォルト: force security mode = 0
設定例: force security mode = 700
このパラメータを設定すると、 ファイルの所有者や所有グループとして不明な SID (ユーザやグループIDを示す、 セキュリティディスクリプタ) を含む Windows NT の ACL は、 現在接続しているユーザの UNIX での uid や gid に自動的にマッピングされる。
これは、Windows NT のクライアントマシン上で作成された、 マシン内でのみ有効なユーザ(ドメインユーザでない)を含んだ ACL を持つファイルやフォルダを(通常 XCOPY /O により)、 Windows NT クライアントから Samba サーバにコピーした際に、 ファイル上の不明な userid や groupid を現在接続しているユーザのものに対応漬けすることを意図したものである。 winbindd による Windows NT の SID から UNIX 側の uid や gid への任意の対応づけを可能とする以外に、 この問題を適切に対処する方法はない。
XCOPY /O が ACCESS_DENIED エラーを引きおこす際には、このパラメータを使って欲しい。
force group も参照のこと。
デフォルト: False
設定例: force unknown acl user = yes
このパラメータは、 サービスに対する接続のすべてで、実際にファイル操作を行うユーザとみなされる UNIX ユーザの名前を指定する。 これはファイルを共有する上で便利であるが、誤って使用すると、 セキュリティ上の問題を引き起こす原因となるので、慎重に使用すべきである。
このユーザ名は接続の確立後に適用される。 従って、クライアントは有効なユーザ名とパスワードで接続を行っておく必要がある。 接続が確立すると、全てのファイル操作はこのパラメータで指定されたユーザの権限で実行される。 クライアントが接続を確立した際のユーザ名は無視される。 これは大変便利なことがある。
Samba 2.0.5 以降では、このパラメータによって 設定されたユーザのプライマリグループが すべてのファイル操作においてプライマリグループとして利用される。 Samba 2.0.5 以前では、プライマリグループは本来接続を行ったユーザのプライマリグループのまま変わらない(これはバグである)。
force group も参照のこと。
デフォルト: なし
設定例: force user = auser
このパラメータは、 クライアントが共有のファイルシステムを問い合わせた際に、 smbd(8) が返却する共有のファイルシステムを指定する。 デフォルトは Windows NT 互換の NTFS だが、 これは、必要に応じて Samba や FAT といった別の文字列に、変更することができる。
デフォルト: fstype = NTFS
設定例: fstype = Samba
これはチューニングのためのオプションである。 このパラメータを有効にすると、getwd() の呼び出し時間を減らすためのあるキャッシュアルゴリズムが有効になる。 特に wide links パラメータが false に設定された場合は、 パフォーマンスに対して相当な効果がある。
デフォルト: getwd cache = yes
force groupの同義語である。
このパラメータは、guest ok が設定されたサービスにアクセスする際に使用されるユーザ名である。 ゲストサービスに接続しているクライアントに対しては、 ここで設定したユーザの権限が適用される。 通常、このユーザはパスワードファイルに存在するが、ログインを行うことはできない。 このパラメータとして、「ftp」ユーザを利用するのもよいであろう。 サービスに対してユーザ名が指定されていると、 そのユーザ名が全体に対して設定したものより優先される。
システムによっては、アカウント「nobody」では印刷することができない。 この場合は別のアカウントを使用して欲しい。 ゲストユーザでログイン(su -コマンドなどを使用する)して、 lpr(1) や lp(1) などの システムにある印刷コマンドを実行して印刷を行ってみることで、 これを確認しておくべきであろう。
デフォルト: コンパイル時に 通常「nobody」に設定される
設定例: guest account = ftp
このパラメータが yes の サービスに付いては、サービスへの接続の際にパスワードが要求されない。 この場合、 guest account の権限で操作が行われる。
このオプションに関する詳細については、以下の security セクションを参照のこと。
デフォルト: guest ok = no
このパラメータが yes のサービスについては、 ゲスト接続のみが許可される。 このパラメータは、サービスに guest ok が設定されていない場合は無効である。
このオプションに関する詳細については、以下の security セクションを参照のこと。
デフォルト: guest only = no
この真偽値パラメータにより、 ドットで始まるファイル名のファイルを隠しファイルとして扱うかどうかが制御される。
デフォルト: hide dot files = yes
これは、見せたくないがアクセスは許可したいファイルやディレクトリのリストを指定する。 DOSの「隠し」属性が該当するファイルやディレクトリに付加される。
リストの各エントリは、 スペースをエントリ中に含められるようにするため、「/」で区切る必要がある。 「*」と「?」は、DOSのワイルドカードと同様にして、 複数のファイルやディレクトリを指定するために利用することができる。
各エントリはUNIXのパス形式で指定すること。DOSのパス形式で指定したり、 UNIXでディレクトリを意味する「/」を含んだりはできない。
この設定には、 case sensitive オプションの設定が影響することに注意。
このパラメータを設定すると、 全てのファイルやディレクトリに対して該当するかどうかの確認を行う必要が発生するため、 Samba のパフォーマンスに影響がでる。
hide dot files、 veto files、 case sensitiveも参照のこと。
デフォルト: なし
設定例: hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/
上記の設定例は、 Thursby から入手可能な Macintosh 上の SMB client (DAVE) が内部的な用途に作成するファイルの指定に加え、 ドットで始まるファイルも指定したものである。
このパラメータは、ローカルな UNIX のユーザ (root, wheel, floppy など) をリモートのクライアントに対して隠すかどうかを制御する。
デフォルト: hide local users = no
このパラメータにより、読みとりができないファイルの存在をクライアントから隠蔽できる。 このパラメータのデフォルトは off になっている。
デフォルト: hide unreadable = no
nis homedir が true で smbd(8) が Win95/98 の logon server として機能している場合に、 このパラメータは、ユーザのホームディレクトリがあるサーバがどこかの情報をもつ NIS (YP)のマップを指定する。 現在のところ、Sun の auto.home マップ形式のみが認識される。 マップの形式は以下のとおり:
username server:/some/file/system
であり、プログラムは、最初の「:」の前までをサーバ名として解釈する。 おそらく、これ以外のマップの形式や、Amd (別の automounter)のマップにも対応した 優れた解析ロジックが存在することだろう。
NOTE :このオプションを利用する場合は、 システムがNISクライアントとして稼働している必要がある。
nis homedir 、domain logons も参照のこと。
デフォルト: homedir map = <なし>
設定例: homedir map = amd.homedir
この真偽値オプションは、Samba が --with-msdfsオプション付きでコンパイルされた場合にのみ利用できる。 yes の場合、Samba は DFS サーバとして機能し、 DFSを利用可能なクライアントは、サーバ上で提供された DFS ツリーを参照することが可能となる。
共有レベルの msdfs rootパラメータも参照のこと。 Samba で DFS ツリーを構成する場合の詳細な情報については、 msdfs_setup.html を参照のこと。
デフォルト: host msdfs = no
このパラメータの同義語としてallow hostsがある。
このパラメータには、サービスに対するアクセスを許可するホストのリストを コンマ、スペース、タブで区切って指定する。
[global] セクションで指定された場合、 個々のサービスで異なった設定が行われている場合も含めて、 この設定が全てのサービスに対して適用される。
ホストの指定は、IPアドレスでもホスト名でも行うことができる。 例えば、あるClass C サブネット上のホストのみにアクセスを限定したい場合は、 allow hosts = 150.203.5.とすればよい。 指定に利用できる記法の全ては、 hosts_access(5)のマニュアルページ中に記載されている。 このマニュアルページはシステムに存在しないかも知れないので、 ここで簡単に説明を行っておく。
なお、localhost のアドレスである 127.0.0.1 からのアクセスは、 hosts deny オプションで明示的に禁止されない限り、常にアクセスを許可される。
ホストの指定に、network/netmask 形式や、 システムがネットグループをサポートしている場合はネットグループ名を用いることも可能である。 EXCEPT を用いることで、ワイルドカードによるホストの指定に対する例外を設けることも可能である。 以下の例が手がかりになるだろう:
Example 1: 150.203.*.* 内の全てのIPアドレスを許可する; ただし、例外のアドレスが1つある
hosts allow = 150.203. EXCEPT 150.203.6.66
Example 2: 指定した network/netmask の範囲内のホストからのアクセスを許可する
hosts allow = 150.203.15.0/255.255.255.0
Example 3: 個別に指定したホストからのアクセスを許可する
hosts allow = lapland, arvidsjaur
Example 4: NISネットグループの「foonet」に含まれるホストからのアクセスを原則として許可するが、あるホストからのアクセスについては拒否する。
hosts allow = @foonet
hosts deny = pirate
実際のアクセスには、ユーザレベルで適切なパスワード指定する必要があることに注意。
ホストレベルのアクセス制御が期待どおりになっていない場合の確認手段として testparm(1) コマンドが提供されている。
デフォルト: なし (全てのホストからのアクセスが許可される)
設定例: allow hosts = 150.203.5. myhost.mynet.edu.au
hosts allow の反対の意味を持ち、 このパラメータで指定されたホストは、サービス内で明示的にアクセスが許可されない限り、 サービスへのアクセスを拒否される。 両者の設定が矛盾した場合は、allow 側の設定が優先される。
デフォルト: なし (アクセスを拒否されるホストはない)
設定例: hosts deny = 150.203.4. badhost.mynet.edu.au
このグローバルパラメータの値は、 パスワードなしでアクセスが許可される ユーザ名とホスト名を指定したファイル名になる。
これは、サービスにアクセス可能なホストを指定するための hosts allow とは別のものであり、ゲストサービスに利用するとよいであろう。 hosts equiv は NT クライアントから Samba にアクセスを行う際に、 パスワードの入力をさせたくない場合にも便利である。
注意: hosts equiv パラメータの利用は大きなセキュリティホールとなりうる。 これは、PC から適切なユーザ名が提供されることに依存する形になるためである。 PC から不適切なユーザ名を提供させることは簡単である。 hosts equiv オプションは、 何が行われるかについて本当に理解しているか、 家庭内ネットワークで配偶者や子供は信頼できるという場合にのみ利用することを推奨したい。 本当に 信頼できる場合のみに利用をとどめておくように:-)
デフォルト: なし
設定例: hosts equiv = /etc/hosts.equiv
このパラメータにより、ある設定ファイル中に別の設定ファイルを挿入することが可能となる。 挿入されるファイルは、その場で入力されたかのように、 そのままの形で挿入される。
このパラメータには、%u、 %P、%Sパラメータを除き、 標準の変数置換が適用される。
デフォルト: no file included
設定例: include = /usr/local/samba/lib/admin_smb.conf
このパラメータは、 親ディレクトリにデフォルトの ACL が設定されており、 サブディレクトリを作成時に、 その ACL の設定を引き継がせたい場合に用いられる。 デフォルトの動作は ディレクトリ作成時に指定されるモードが用いられる。 このオプションを有効にすると、モードは 0777 となり、 デフォルトのディレクトリの ACL が適用される。
デフォルト: inherit acls = no
通常、新規作成したファイルやディレクトリのパーミッションは、 create mask、 directory mask、force create mode 、force directory modeパラメータによって決定されるが、真偽値パラメータである inherit permissions は、それらに優先される。
新しいディレクトリはsetgid のようなビットも含め、 親ディレクトリのパーミッションを引き継ぐようになる。
新しく作成されたファイルは、read/write ビットの設定を尾やディレクトリから引き継ぐようになる。 execute ビットについては、従来どおり map archive 、map hidden 、map system などによって設定される。
setuid ビットが引き継がれることは、決して ない(コード上で明示的に禁止している)。
このパラメータは、数千人レベルの多くのユーザが存在する大規模なシステムで、 単一の [homes] 共有を各ユーザが柔軟に利用できるようにさせる際に、 特に有用であろう。
create mask 、 directory mask、 force create mode、force directory mode も参照のこと。
デフォルト: inherit permissions = no
このオプションにより、Sambaがブラウジング、 名前の登録、その他のNBTの通信に利用するネットワークインタフェースの一覧を設定することが可能である。 デフォルトの場合、Sambaはカーネルに対して有効なインタフェースのリストを問い合わせ、 127.0.0.1以外のブロードキャスト可能なインタフェースをすべて利用する。
このオプションはインタフェースを示す文字列のリストとなる。 各文字列は以下の形式のいずれで指定してもよい:
ネットワークインタフェース名(eth0など)。 シェルのようなワイルドカード指定も可能である。 例えばeth*は"eth"から始まるすべてのインタフェースを指定したことになる。
IPアドレス。 この場合、ネットマスクの値は、カーネルから取得されたインタフェースのリストにより設定される。
IP/mask のペア
broadcast/mask のペア
「mask」パラメータはビット長(例えば24はクラスCネットワーク)で指定しても、 ドット区切り10進数表記で指定してもよい。
上記の「IP」パラメータは、ドット区切り10進法で指定しても、 OSの標準的なホスト名解決機構で解決可能なホスト名で指定してもよい。
一例を挙げると、以下の行:
interfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0
は、eth0デバイスと192.168.2.10および192.168.3.10のIPアドレスに対応する3つのネットワークインタフェースが指定されている。 後者のインタフェースに対するネットマスクは255.255.255.0に設定されている。
bind interfaces onlyも参照のこと。
デフォルト: 127.0.0.1を除く、 ブロードキャスト可能なすべての有効なインタフェース
サービスに対するログインを許可しないユーザのリストを指定する。 このパラメータは、不適切な設定により発生しうるセキュリティ上の問題を、 完全に抑止する、パラノイド的設定である。
「@」ではじまる名前は(システムがNISをサポートしている場合)、 まずNISネットグループとして解釈され、NISネットグループに名前が存在しない時は、 UNIXのグループとして解釈される。
「+」ではじまる名前は、UNIXのグループ名としてのみ解釈される。 「&」ではじまる名前は、NISネットグループの名前としてのみ解釈される (この場合システムでNISが稼働している必要がある)。 名前の前に付けられた「+」および「&」文字は、検索の順番も示す。 そのため、+&groupは、UNIXグループを 検索してから、NISネットグループを検索するという意味になり、 &+groupはNISネットグループを検索してから、 UNIXグループを検索するという意味になる(これは「@」と同等になる)。
%Sは現在のサービス名に置換される。 これは [homes] セクションで有効である。
valid users も参照のこと。
デフォルト: invalid usersはない
設定例: invalid users = root fred admin @wheel
このパラメータの値(整数値)は、 keepalive パケットが送出される秒単位の間隔を示す。 パラメータの値が0の場合、keepaliveパケットは送出されない。 keepaliveパケットが送出された場合、サーバは、 クライアントマシンが存在していて応答があることを確認することが可能になる。
ソケットにSO_KEEPALIVE属性が設定されている場合(socket options を参照)、通常keepaliveは不要である。 基本的に、このオプションは問題が発生している場合にのみ利用すべきである。
デフォルト: keepalive = 300
設定例: keepalive = 600
カーネルoplocks をサポートしているUNIX(現在はIRIXとLinux 2.4カーネルのみ)の場合、 このパラメータによりoplockの利用を制御できる。
カーネル oplocks のサポートにより、 smbd(8) が oplock を行ったファイルに対して、 ローカルなUNIXプロセスやNFS経由でのアクセスがあった際に、 Sambaがoplocksを破棄することが可能となる。 これにより、SMB/CIFSとNFSやローカルファイルアクセスとの間の完全な一貫性が確保される (これは非常に素晴らしいことである :-)。
このパラメータのデフォルト値は、onであるが、 カーネルがこの機能をサポートしていないシステムでは、自動的に無効にされる。 このパラメータを変更する必要はないであろう。
oplocks と level2 oplocks パラメータも参照のこと。
デフォルト: kernel oplocks = yes
このパラメータは、 smbdがLANMANパスワードハッシュを利用した認証を行うか否かを制御する。 無効にした場合、NTパスワードハッシュを利用するクライアント (Windows NT/2000クライアント、smbclientなど。 しかしWindows 95/98やMS-DOSクライアントは含まない)のみがSambaホストに接続できる。
デフォルト: lanman auth = yes
このパラメータにより、Windows 2000で導入された、 さまざまなSMBリクエストにおける新しい64Kのストリーミングreadおよびwriteをsmbd がサポートするかどうかを制御する。 Windows 2000クライアントのリダイレクタにはバグがあるため、 このパラメータを利用するには、SambaがIRIX、Solaris、Linux 2.4カーネルのような64ビットのOSで動作している必要がある。 Windows 2000クライアントにおいては、10%のパフォーマンス向上が見込まれる。 デフォルト値は off である。幾つかの Samba のコードと同様、テストが充分には行われていない。
デフォルト: large readwrite = no
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
ldap admin dn は、 Samba がユーザのアカウント情報を取得するために ldap server に接続する際に用いられる、 Distinguished Name (DN) を指定する。ldap admin dn は、 private/secrets.tdb ファイルに格納された admin dn password とともに用いられる。 これがどのように連携するかについての詳細な情報は、 smbpasswd(8) のマニュアルページを参照のこと。
デフォルト : なし
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
このパラメータには、RFC 2254 を満たす LDAP の検索フィルタを設定する。 デフォルトは、sambaAccount objectclass にマッチしたすべてのエントリから、 uid attribute がログイン名と合致するものを取り出すフィルタが設定される。 このフィルタは1つのエントリのみが返却されるように設定する必要がある。
デフォルト : ldap filter = (%u)(objectclass=sambaAccount))
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
このオプションは、 ldap server と通信する際に用いられる TCP ポート番号を設定するために用いられる。 デフォルトでは、LDAPS ポートの 636 が用いられる。
参照 : ldap ssl
デフォルト : ldap port = 636 ; ldap ssl = on の場合
デフォルト : ldap port = 389 ; ldap ssl = off の場合
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
このオプションは、LDAPサーバの referral 機能が有効である時に、 Sambaが LDAP サーバに要求する情報に関して referral 機能を 有効にするかどうかを制御するために用いられる。
デフォルト : ldap referrals = no
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
このパラメータには、ユーザアカウント情報が存在する ldap ディレクトリサーバの FQDN を設定する。
デフォルト : ldap server = localhost
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
このオプションは、Samba が ldap server に接続する際に、SSL を用いるかどうかを制御するために用いられる。 これは、configure スクリプトの --with-ssl オプションで有効される、 Samba の SSL サポート(sslを参照のこと) とは 無関係である 。
ldap ssl の値には、 以下の3つのうちいずれかを設定すること: (a) on - ldap server に対して、常に SSL を用いて接続する (b) off - ディレクトリのクエリ時には決して SSL を用いない (c) start_tls - ディレクトリサーバと通信する際に、 LDAPv3 StartTLS 拡張オプション (RFC2830) を利用する
デフォルト : ldap ssl = on
このパラメータは、コンパイル時に --with-ldapsam オプションを付けて、 Samba の configure を行なった場合にのみ有効である。 このオプションは実験的なものであり、現在も開発中である。
デフォルト : なし
このパラメータにより、 Sambaがlevel2(読みとり専用) oplockを共有でサポートするかどうかが制御される。
level2 の読みとり専用 oplock を利用することで、 Windows NT クライアントは、既に oplock が行われているファイルを別のクライアントがオープンしようとした際に (今までの排他的な oplock の場合に行われていた関連するすべての oplock を廃棄する処理の代わりに)、 読み書き可能な oplock から読みとり専用の oplock へのダウングレードを行うような oplock をファイルに対して行うことが可能になる。 これにより、ファイルをオープンしているクライアントのうち、level2 oplock をサポートしているものは、 ファイルの先読みのみを行うキャッシュ(このキャッシュは書き込みキャッシュやロックを行わない)を行うため、 書き込みが行われないようなファイル(例えばアプリケーションのexeファイルなど)に対して多くのアクセスが行われる際のパフォーマンスが改善される。
read only の oplock を行っていたクライアントのいずれかがファイルに書き込みを行った時点で、 すべてのクライアントに対してそれが通知されるため、 oplock が解除され、先読みキャッシュが破棄される。
このパラメータを有効にして、 共有されている実行ファイルのアクセスを高速化することを推奨する。
level2 oplock に関する詳細な議論については、CIFS の仕様を参照のこと。
現在、kernel oplocks がサポートされていると、 level2 oplock は(このパラメータがyesになっていても)、利用されない。 このパラメータを機能させるためには、 oplocks パラメータが、共有上で true である必要があることに注意。
oplocks および kernel oplocks パラメータも参照のこと。
デフォルト: level2 oplocks = yes
このパラメータにより、 nmbd(8) が、OS/2 クライアントのブラウズリスト上に Samba サーバを格納するために必要な lanman announce のブロードキャストを送出するかどうかが制御される。 このパラメータは3つの値、true、 false、autoをとる。 デフォルトはautoである。 falseの場合、Sambaは決してこのブロードキャストを送出しない。 trueの場合、Sambaはlanman announceのブロードキャストを lm intervalによって設定された間隔で定期的に送出する。 autoの場合、 Sambaはデフォルトではlanman announceを送出しないが、受信を待機する。 そして、このブロードキャストを受信すると、 lm intervalによって設定された間隔で定期的にブロードキャストの送出を開始する。
lm interval も参照のこと。
デフォルト: lm announce = auto
設定例: lm announce = yes
SambaがOS/2 クライアントが必要とするlanman announceのブロードキャストを送出するように設定されている場合 (lm announce パラメータを参照のこと)、 このパラメータにより秒単位の送出間隔が指定される。 これが0の場合、lm announce パラメータの設定に関わらず、 lanman announceは送出されない。
lm announceも参照のこと。
デフォルト: lm interval = 60
設定例: lm interval = 120
このパラメータは、printcapファイル中で 定義されたすべてのプリンタをデフォルトでブラウジング可能とするかどうかを制御する真偽値パラメータである。
詳細は、printersセクションを参照のこと。デフォルト: load printers = yes
このオプションにより、 nmbd(8) がサブネットのローカルマスタブラウザになるかどうかが制御される。 falseの場合、nmbdはサブネットのローカルマスタブラウザになろうとせず、 すべてのブラウザ選定において、常に敗退することになる。 デフォルトで、このパラメータは true に設定されている。 このパラメータを true にすることは、 Samba がサブネットのローカルマスタブラウザとなることを意味するものではなく、 nmbd がローカルマスタブラザの選定に 参加する ということを意味するものに過ぎない。
このパラメータの値を false にすると、nmbd は決してローカルマスタブラウザにならなくなる。
デフォルト: local master = yes
lock directoryの同義語である。
このオプションは、ロックファイルが置かれるディレクトリを指定する。 ロックファイルは max connections オプションにより利用される。
デフォルト: lock directory = ${prefix}/var/locks
設定例: lock directory = /var/run/samba/locks
このパラメータは、 smbd がクライアントから要求されたバイト範囲ロック獲得の試行を行なう回数を指定する。 Windows 2000 のサーバは、 ロックが獲得できなかった際の失敗の通知を行なわず、 代わりにロックを獲得するために数回の試行を行なう。 この挙動は、MS Access や FoxPro のような、 PC データベースの形式をサポートするために用いられる。
デフォルト: lock spin count = 2
これは、 smbd が一度失敗したロックを再度獲得しようとする際の待ち時間を、 マイクロ秒単位で指定する。 詳細は、lock spin count を参照のこと。
デフォルト: lock spin time = 10
このパラメータは、 クライアントからのロック要求により、 サーバがロック処理を行うかどうかを制御する。
locking = noの場合、 すべてのロックおよびアンロック要求は成功したものとして扱われ、 すべてのロック状態の問い合わせは、ファイルがロック可能であると応答する。
locking = yesの場合、 サーバにより実際のロック処理が実行される。
このオプションをnoにすることは、 いかなる場合でも推奨されないが、 ロックを必要としないと思われる read only のファイルシステム(例えばCDROMドライブ)では、有用 かも知れない。
ロックが機能しない場合、 データが破壊される可能性もあるため、全体に対しても、 個々の共有に対しても、ロックが無効にならないように注意すること。
デフォルト: locking = yes
このオプションにより、 Sambaのログファイル(デバッグファイル)の名称を変更することが可能である。
このオプションには、標準の変数置換が適用されるため、 個々のユーザやマシン毎にログを分割することが可能である。
設定例: log file = /usr/local/samba/var/log.%m
このパラメータの値(整数値)により、 smb.conf ファイル中でデバッグレベル(ログレベル)を設定することが可能になる。 これにより、システムの設定が非常に柔軟に行なえるようになる。
デフォルトのログレベルは、コマンドラインで指定された値になる。 指定が行なわれていない場合は、0 になる。
設定例: log level = 3
このパラメータは、 ホームディレクトリとして接続されるパスを指定する(logon homeを参照のこと)。 このパラメータはNT Workstationによってのみ利用される。
このパラメータは、Sambaがログオンサーバとして構成された場合のみ、 意味をもつ。
デフォルト: logon drive = z:
設定例: logon drive = h:
このパラメータは、Windows 95/98/NT Workstation がSambaのPDCに対してログオンする際に用いられるホームディレクトリの位置を指定する。 これにより、例えば
C:\> NET USE H: /HOME
のような形式でコマンドプロンプトから接続を行うことが可能となる。
このオプションには、通常の変数置換が適用されるため、 個々のユーザやマシン毎にログオンスクリプトを分けることが可能になっている。
このパラメータは、Windows 9x ワークステーションにおいて、 移動プロファイルをユーザのホームディレクトリのサブディレクトリに格納するために利用することが可能である。 この場合、以下のような設定を行う:
logon home = \\%N\%U\profile
これにより、Samba はクライアントから NetUserGetInfo リクエストなどで情報を要求された場合に上記文字列を返却するが、その際変数置換が行なわれる。 Windows 9x のクライアントは、ユーザが net use /home コマンドを発行した際には、この情報の \\server\share 部分だけを用いるが、 プロファイルを扱う場合は文字列全体を利用する。
Sambaの以前のバージョンでは、 logon homeではなく、logon path が用いられていた。 このため、net use /home がうまく動作しなかったが、 プロファイルをホームディレクトリの外に置くことが可能であった。 現在の実装は正しい実装である。上記のような技を用いることで、 このパラメータをプロファイルの位置の設定にも利用する可能になっている。
このパラメータは、Sambaがログオンサーバとして構成された場合のみ、 意味をもつ。
デフォルト: logon home = "\\%N\%U"
設定例: logon home = "\\remote_smb_server\%U"
このパラメータにより、移動プロファイル(Windows NTの場合、NTuser.datなどのファイル)が格納されるホームディレクトリが指定される。 以前のマニュアルページとは矛盾するが、このパラメータはWindows 9xの移動プロファイルとは無関係である。 Windows 9x システムで移動プロファイルを利用する方法については、 logon home パラメータを参照のこと。
このオプションは、標準の変数置換が適用されるため、 個々のユーザやマシン毎にログオンスクリプトを分けることが可能である。 このパラメータにより、読み出されて、Windows NTクライアント上に表示される「アプリケーション情報」、 desktop、start menu、 ネットワークコンピュータ、 プログラムやその他のフォルダとその内容を格納するディレクトリも設定される。
設定やディレクトリを Windows NT クライアント上にロードするため、 共有やパスはユーザが読み込み可能にしなければならない。 また、Windows NT クライアントが NTuser.dat やその他のディレクトリを作成できるように、 ユーザが最初にログインする時には共有を書き込み可能にしなければならない。
必要があれば、ディレクトリと中身は読み出し専用にすることができる。 その機能(固定プロファイル(MANdatory profile)) を実現するためには、NTuser.dat ファイルを読み出し専用にするのではなく、 NTuser.dat を NTuser.man に名前を変更する。
Windows クライアントは、ユーザがログインしていなくても [homes] 共有への接続を保持することがある。 そのため、logon path に [homes] 共有への参照を含めないことを強く推奨する (たとえば、このパラメータを\\%N\HOMES\profile_path のように設定すると問題が発生することがある)。
このオプションには、標準の変数置換が適用されるため、 個々のユーザやマシン毎にログオンスクリプトを分けることが可能になる。
このパラメータは、Sambaがログオンサーバとして構成された場合のみ、 意味をもつ。
デフォルト: logon path = \\%N\%U\profile
設定例: logon path = \\PROFILESERVER\PROFILE\%U
このパラメータは、 ユーザのログインが成功した際にダウンロードして実行される、 バッチファイル (.bat) や Windows NT のコマンドファイル (.cmd) を指定する。 ファイルは DOS 形式の行末(改行コード) CR/LF でなければならない。 ファイルの作成には DOS 形式のエディタを使うことが推奨される。
スクリプトは [netlogon] サービスからの相対パスで記述する必要がある。 [netlogon] サービスの path が /usr/local/samba/netlogon で、 logon script = STARTUP.BAT の場合、 ダウンロードされるファイルは以下のパスのものになる:
/usr/local/samba/netlogon/STARTUP.BAT
バッチファイルの中身は自由に記述することが可能である。 推奨されるコマンドとしては、 各マシンを同じタイムサーバの時刻と同期するようにさせる NET TIME \\SERVER /SET /YES がある。 ほかには、共通に利用されるユーティリティ用に、例えばa NET USE U: \\SERVER\UTILS や NET USE Q: \\SERVER\ISO9001_QA といった設定を行うことが挙げられる。
[netlogon] 共有に対しては、 バッチファイルが改変されてセキュリティが侵害されてしまうような、 書き込みアクセスを許可しないか、 安全な環境下でのみバッチファイルへの書き込み権限をユーザに与えるようにすること。
このオプションには、標準の変数置換が適用されるため、 個々のユーザやマシン毎にログオンスクリプトを分けることが可能になる。
このパラメータは、Sambaがログオンサーバとして構成された場合のみ、 意味をもつ。
デフォルト: ログオンスクリプトは設定されていない
設定例: logon script = scripts\%U.bat
このパラメータには、 特定の印刷ジョブの印刷やスプーリングを停止するために サーバホスト上で実行されるコマンドを指定する。
このコマンドは、プリンタ名と停止させる印刷ジョブの番号を引数にとる プログラムやスクリプトでなければならない。 これを実装する方法の一つは、非常に低い優先権を持つジョブはプリンタに送られないという ジョブの優先権の仕様を利用するものである。
%p 変数は、 プリンタ名に置換される。 %j はジョブ番号(整数)に置換される。 HPUX の場合(printing=hpuxを参照のこと)、 -p%p オプションが lpr コマンドに付加されていると、ジョブのステータスは整形されたものになる。 たとえば、ジョブの優先権が設定されたフェンス優先権より 低いならジョブは停止状態であるが、 優先権が等しいかより高いならスプール状態または印刷中の状態となる。
サーバの $PATH 環境変数が利用できないかもしれないことを考慮して、 lpq command を絶対パスで記述する癖をつけておくと良い。
printing パラメータも参照のこと。
デフォルト: 現在のところ、この設定のデフォルト値は設定されていない。 ただし、printing パラメータの値が SYSV の場合、デフォルト値は以下の通り:
lp -i %p-%j -H hold
また、printing パラメータの値が SOFTQ の場合、デフォルト値は以下の通り:
qstat -s -j%j -h
HPUX の場合の設定例: lpresume command = /usr/bin/lpalt %p-%j -p0
このパラメータは、 lpq コマンドが頻繁に呼び出されるのを防ぐため、lpr の情報(出力)をキャッシュする期間を制御する。 システムが使用する lpq コマンドの 種別毎にキャッシュが行なわれる。そのため、ユーザ毎に異なった lpq コマンドを使用する場合、 キャッシュ情報は共有されない。
キャッシュファイルは /tmp/lpq.xxxx に保存される。 xxxx は使用している lpq コマンドのハッシュ値となる。
デフォルトは 10 秒であるため、キャッシュされたデータが10秒以内の場合は、 前回行なわれた同一のlpqの実行結果のキャッシュが用いられる。 lpq コマンドのレスポンスが非常に遅い場合は この値を大きくすることを推奨する。
値を 0 にした場合、キャッシュは完全に無効となる。
printing パラメータも参照のこと。
デフォルト: lpq cache time = 10
設定例: lpq cache time = 30
このパラメータには、 lpq形式のプリンタ状態情報を得るため、 サーバホストで実行するコマンドを指定する。
このコマンドは、プリンタ名のみを引数として、 プリンタ状態情報を出力するプログラムやスクリプトでなければならない。
現在、BSD、AIX、LPRNG、PLP、SYSV、HPUX、QNX、CUPS、SOFTQ という9つの印刷形式がサポートされており、 これにより大部分の UNIX システムがサポートされる。 printing = オプションにより、利用する形式を指定することも可能である。
クライアントによっては(Windows for Workgroupsなど)、 状態情報を要求しているプリンタの接続番号(connection number)を 正しく送らないことがある。この場合、サーバはクライアントが接続している 最初の印刷サービスの状況を報告する。この動作は、 与えられた接続番号が不正な場合にのみ行なわれる。
%p 変数は、 プリンタ名に置換される。 %j はジョブ番号(整数)に置換される。
サーバの $PATH 環境変数が利用できないかもしれないことを考慮して、 lpq command を絶対パスで記述する癖をつけておくと良い。 CUPS ライブラリを付加してコンパイルした場合は、 smbd が印刷キューのリストを取得するためのライブラリコールを行なうため、 lpq command は必要ない。
printing パラメータも参照のこと。
デフォルト: printing の設定に依存する
設定例: lpq command = /usr/bin/lpq -P%p
このパラメータには、 特定の印刷ジョブの印刷やスプールを再開したり 続行するためにサーバ上で実行するコマンドを指定する。
このコマンドは、 プリンタ名とジョブ番号を受け取るとその印刷ジョブを再開するプログラムやスクリプトでなければならない。 lppause command パラメータも参照のこと。
%p 変数は、 プリンタ名に置換される。 %j はジョブ番号(整数)に置換される。
サーバの PATH 環境変数が利用できないかもしれないことを考慮して、 lpresume command を絶対パスで記述することを推奨する。
printing パラメータも参照のこと。
デフォルト: 現在のところ、この設定のデフォルト値は設定されていない。 ただし、printing パラメータの値が SYSV の場合、 デフォルト値は以下の通り:
lp -i %p-%j -H resume
また、printing パラメータの値が SOFTQ の場合、デフォルト値は以下の通り:
qstat -s -j%j -r
HPUX の場合の設定例: lpresume command = /usr/bin/lpalt %p-%j -p2
このパラメータには、 印刷ジョブを削除するためにサーバ上で実行するコマンドを指定する。
このコマンドは、 プリンタ名とジョブ番号を受け取るとその印刷ジョブを削除するプログラムやスクリプトでなければならない。
%p 変数は、 プリンタ名に置換される。 %j はジョブ番号(整数)に置換される。
サーバの PATH 環境変数が利用できないかもしれないことを考慮して、 lprm command を絶対パスで記述することを推奨する。
printing パラメータも参照のこと。
デフォルト: printing の設定に依存する
設定例 1: lprm command = /usr/bin/lprm -P%p %j
設定例 2: lprm command = /usr/bin/cancel %p-%j
Sambaサーバが Windows NTドメインのメンバとして機能している場合 (security = domain) パラメータを参照)、 実行中のsmbd(8) プロセスは、 private/secrets.tdbというTDBデータベースに格納されている「コンピュータアカウント」を定期的に変更しようとする。 このパラメータは、パスワードの変更を行なう間隔を秒単位で設定する。 デフォルトは、Windows NTドメインのメンバサーバと同じく 1週間(秒単位で表される)である。
smbpasswd(8) 、 security = domain パラメータも参照のこと。
デフォルト: machine password timeout = 604800
このパラメータは、Magic script(下記の magic script パラメータを参照) によって生成される出力結果が 書き込まれているファイルの名前を指定する。
警告: 複数のクライアントが同じ Magic スクリプトを同じディレクトリで利用する場合、 出力ファイルの内容は不定になる。
デフォルト: magic output = <magic script name>.out
設定例: magic output = myfile.txt
このパラメータで指定したファイルは、 ファイルをオープン後クローズした時点でサーバにより実行される。 このパラメータにより、UNIX のスクリプトを Samba ホストに送って、 接続しているユーザの権限で実行する機能が提供される。
このようにして実行されたスクリプトは、 ユーザに削除権限があり、ファイルが削除可能であれば、 実行完了と同時に削除される。
スクリプトが生成した出力は、 magic output パラメータ(前述)で指定されたファイルに書き込まれる。
シェルによっては、改行コードとして CR ではなく CR/LF を利用しているスクリプトをうまく実行できないことに注意。 Magic スクリプトはホスト上でそのまま 実行されるため、ホストやシェルによっては、 DOSの改行コードを修正しておく必要があるかも知れない。
Magic スクリプトは 実験用 であり、このパラメータを安全だと考えるべきでは ない。
デフォルト: なし。Magic スクリプトは無効にされている。
設定例: magic script = user.csh
NAME MANGLING セクションを参照のこと。
デフォルト: mangle case = no
このパラメータは、 Windows や DOS で表示できない UNIX ファイル名の 対応づけを直接指定するためのものである。 名前の mangle は常に必要とされるわけではない。 実際、DOS と UNIX とでファイル名の拡張子の異なるドキュメントが存在することがある。 一例を挙げると、UNIX では通常 HTML ファイルを示す拡張子として .html が使用されるが、DOS では .htm の方が一般的である。
このため、html と htm の対応づけを行なう場合は、以下のようにする:
mangled map = (*.html *.htm)
とても便利な利用方法の一つに、CDROMによってファイル名の末尾に付加されている ;1(幾つかのUNIX上でのみ表示される) の削除が挙げられる。これを行なうためには、 (*;1 *;) のように指定すればよい。
デフォルト: no mangled map
設定例: mangled map = (*;1 *;)
このパラメータは、 UNIX 上の DOS非互換のファイル名をDOS互換の名前に置き換え(短縮(mangled))してアクセス可能にするか、 単純に無視するかどうかを制御する。
短縮処理がどのように行なわれているかについての詳細は、 NAME MANGLING のセクションを参照のこと。
短縮処理のアルゴリズムが「hash」の場合、利用されるアルゴリズムは以下の通りである:
ファイル名の先頭から一番右にあるドットの前までの英数5文字は、 大文字に変換された上で、 短縮されたファイル名の先頭5文字となる。
チルダ「~」が短縮された名前に付加される。 更に元々のファイル名のベース部分(ファイル名から拡張子部分を除いたもの) から生成された一意な2文字が付加される。 拡張子にあたる部分は、大文字を含んでいるか、 3文字以上の場合のみ、ハッシュの計算に含まれる。
「~」の利用を避けたい場合は、 the mangling char オプションにより、別の文字を指定することも可能である。
拡張子の先頭から3文字目までの英数文字が、そのまま大文字に変換され、短縮されたファイル名の拡張子となる。 拡張子は元々のファイル名の一番右のドットより後の部分から生成される。 ファイル名にドットがない場合、 短縮されたファイル名には拡張子は付かない (隠しファイルの場合を除く。以下を参照のこと)。
UNIX 上のファイル名がドットから始まる場合、 そのファイルはDOS の隠しファイルとして扱われる。 この場合の短縮名は、先頭のドットを取り除き、 実際の拡張子に関わらず、拡張子が「___」に変換されたものになる。
2桁のハッシュ値は、大文字の英数文字になる。
このアルゴリズムは、 ディレクトリ内のファイルに先頭の英数 5 文字が同一のファイル名が存在する時のみ名前の衝突が発生するが、 実際に衝突する確率は、1/1300 である。
短縮処理のアルゴリズムが「hash2」の場合、利用されるアルゴリズムは以下の通りである:
ファイル名の先頭1文字は、 ドットでない限り、大文字に変換された上で、 短縮されたファイル名の先頭文字となる。
5文字の base63 ハッシュが生成され、 ハッシュの先頭4文字が先頭文字に追加される。
base36 ハッシュの最後の文字の後ろに、 チルダ「~」が付加される。
「~」の利用を避けたい場合は、 the mangling char オプションにより、別の文字を指定することも可能である。
拡張子の先頭から3文字目までの英数文字は、そのまま大文字に変換されて短縮名の拡張子部分となる。 拡張子は元々のファイル名の一番右のドットより後の部分から生成される。 ファイル名にドットがない場合、 短縮名には拡張子は付かない (「隠しファイル」の場合を除く。以下を参照のこと)。
UNIX 上のファイル名がドットから始まる場合、 そのファイルはDOS の隠しファイルとして扱われる。 この場合の短縮名は、先頭のドットを取り除き、 実際の拡張子に関わらず、拡張子が「___」に変換されたものになる。
名前の短縮処理により、Windows や DOS から、UNIX の長いファイル名を保持したまま UNIX ディレクトリ間のファイルのコピーができる。 この場合、UNIX 上のファイル名の拡張子は Windows や DOS により変更されるが、ベース名は保持される。 なお、変換した名前はセッション間で変化しない。
デフォルト: mangled names = yes
このパラメータは、 Samba サーバの smbd(8) でキャッシュする短縮名の個数を指定する。
このスタックは、 最近短縮処理が行われたベース名のリストになる(拡張子は、 3文字より長い場合か、大文字を含む場合のみ保持される)。
この値をより大きくすることで、 短縮名を適切な長いUNIX名に変換する処理が成功する確率が高くなるが、 ほとんどのディレクトリアクセスが遅くなる。 この値を小さくすると、サーバのメモリを節約できる (各スタックは256バイトを消費する)。
長いファイル名への変換が適切に行われることを完璧に保証することはできないため、 注意しておくこと。
デフォルト: mangled stack = 50
設定例: mangled stack = 100
このパラメータは、name mangling において、 magic キャラクタとして利用される文字を 指定する。デフォルトは「~」であるが、 ソフトウェアによっては問題が発生してしまうかも知れない。 このオプションにより、任意の文字を指定することが可能になる。
デフォルト: mangling char = ~
設定例: mangling char = ^
短縮名を生成する際に利用するアルゴリズムを指定する。 「hash」と「hash2」という2つの値を指定することが可能である。 「hash」はデフォルトの値であり、長年 Samba で利用されてきた方式である。 「hash2」は、新しい方式であり、 (名前の重複の発生が低減される点で)より優れたアルゴリズムといえる。 Win32 アプリケーションの多くが短縮名を記憶しているため、 新しいアルゴリズムへの変更は、 こうしたアプリケーションの再インストールが必要になる可能性があるという点で、安易に行なうべきではない。 Samba を新規インストールした場合は、デフォルトを hash2 に設定するのもよいであろう。
デフォルト: mangling method = hash
設定例: mangling method = hash2
このパラメータは、DOSのアーカイブ属性を UNIXの所有者(owner)実行権ビットに割り当てるかどうかを決定する。 DOSのアーカイブ属性は、バックアップを行なった後でファイルが修正されると設定される。 このオプションの副作用として、Samba マシン上にあるファイルを修正した際に、UNIX 上で実行可能になってしまうことがあげられる。 これは共有のソースコードやドキュメントなどに関して、非常に悩ましい事態である。
このパラメータを利用する場合は、 所有者実行権ビットがマスクされないように(100というアクセス権が含まれるように)、 create mask パラメータを設定することが必要となることに注意。 詳細は、create mask パラメータを参照のこと。
デフォルト: map archive = yes
このパラメータは、DOSの隠しファイル属性を、 UNIXの全員(world)の実行権ビットに割り当てるかどうかを決定する。
このパラメータを利用する場合は、 全体の実行権ビットがマスクされないように(001というアクセス権を含むように)、 create mask パラメータを設定することが必要となることに注意。 詳細は、create mask パラメータを参照のこと。
デフォルト: map hidden = no
このパラメータは、DOSのシステムファイル属性を、 UNIXのグループ実行権ビットに割り当てるかどうかを決定する。
このパラメータを利用する場合は、 グループ実行権ビットがマスクされないように(010というアクセス権を含むように)、 create mask パラメータを設定することが必要となることに注意。 詳細は、create mask パラメータを参照のこと。
デフォルト: map system = no
このパラメータは、security モードが security = share 以外の時、 user、server、 domainのときにのみ有用である。
このパラメータの値には、smbd(8) が 何らかの方法で有効なUNIXユーザとして認証されなかったユーザのログイン要求をどのように扱うかを指定するための 3つの値のいずれかを設定することが可能である。
3つの値を以下に示す:
Never - 不正なパスワードによるユーザのログイン要求を拒否する。 これがデフォルトである。
Bad User - 不正なパスワードによるユーザのログイン要求を拒否するが、 指定されたユーザが存在しなかった場合はゲストログインとして扱い、 guest accountで指定されたアカウントにマッピングする。
Bad Password - 不正なパスワードによるユーザのログイン要求は、ゲストログインとして扱い、 guest accountで指定されたアカウントにマッピングする。
このオプションにより、サービスへの同時コネクション数が制限される。 max connections が 0 より大きい場合、 すでにオープンされているサービスに対するコネクション数がこの数に達していると、それ以上の接続が拒否される。 値が 0 の場合は、コネクション数は無制限であることを意味する。
レコードロックファイルが、この機能の実装に利用されている。 ロックファイルは、lock directory オプションで指定されたディレクトリに保存される。
デフォルト: max connections = 0
設定例: max connections = 10
このオプションにより、 見かけ上のディスクの容量の上限を設定することができる。 このオプションを 100 に設定すると、 すべての共有は 100MB 以上の容量に見えることはない。
このオプションは、ディスクに置くことができるデータの容量を 制限するものではないことに注意して欲しい。前述した設定を行なった場合、 100MB を越える容量をディスクに書き込むことも可能であるが、 クライアントがディスクの空き容量や総ディスクサイズを求めると、 結果は max disk size で指定された量に制限されることになる。
このオプションは、主として非常に大きいディスク、 特に 1GB を越えるサイズをもつディスクを扱えない ソフトウェアのバグを回避する際に有用である。
max disk size パラメータが 0 の場合は、無制限を意味する。
デフォルト: max disk size = 0
設定例: max disk size = 1000
このオプション(キロバイト単位の数値)は、 ログファイルの最大サイズを指定する。Samba は定期的にログファイルのサイズを調べ、 最大値を超過した場合は、ファイルの拡張子に .old を付加した名前にファイル名を変更する。
サイズ 0 は無制限を意味する。
デフォルト: max log size = 5000
設定例: max log size = 1000
このオプションは、 Samba がクライアントに通知する同時に実行可能なSMBオペレーションの最大数を制御する。 このパラメータを設定する必要はないであろう。
デフォルト: max mux = 50
このパラメータは、 smbd(8) ファイルのサービスプロセスが1つのクライアントに対して同時に開くことのできるファイル数の上限値を設定する。 Samba は、オープンされていないファイルごとにわずか 1 ビットしか消費しないので、このパラメータのデフォルト値は、 非常に大きな値 (10000) に設定されている。
オープンするファイルの数の制限は、 通常このパラメータではなくUNIXにおけるプロセス毎のファイルディスクリプタの上限値によって制限される。 そのため、この値を変更する必要はないであろう。
デフォルト: max open files = 10000
このパラメータにより、 ある時点で Samba の印刷キューに蓄積可能なジョブの最大数が設定される。 設定数を超過すると、 smbd(8) はクライアントに「空き領域がない」というエラーを返却する。 total print jobsも参照のこと。
デフォルト: max print jobs = 1000
設定例: max print jobs = 5000
このパラメータ(文字列)の値は、 サーバがサポートする最高レベルのプロトコルである。
設定可能な値は以下の通りである:
CORE: 最初期のもので、ユーザの概念がない
COREPLUS: ほんの少し CORE に手を加えたものである
LANMAN1: 最初の 近代的な バージョンであり、 長いファイル名をサポートしている
LANMAN2: LANMAN1 プロトコルを改良したものである
NT1: 最も新しいプロトコルであり、 Windows NT が利用する。CIFSと呼ばれることもある。
通常、SMB プロトコルによりネゴシエーションを経て適切なプロトコルが選択されるため、 このオプションを設定すべきではない。
min protocolも参照のこと。
デフォルト: max protocol = NT1
設定例: max protocol = LANMAN1
このパラメータは、システムで同時に実行可能な smbd(8) プロセス数の最大値を設定することで、 コネクションを扱うリソースが不足して、 クライアントに対するサービスが低下することを防止する。 通常の環境では、各ユーザ毎に smbd が割り当てられ、 そのホストからの共有に対するコネクションのすべてを扱うことに注意すること。
デフォルト: max smbd processes = 0 ## 無制限
設定例: max smbd processes = 1000
このオプションは、nmbd(8) がブロードキャストを利用したりWINSサーバを利用したりして NetBIOS 名を要求する際のNetBIOS 名のデフォルトのTTL(time to live)を(秒単位で)設定する。 このパラメータを変更する必要はないであろう。 デフォルトは3日である。
デフォルト: max ttl = 259200
このオプションは、 nmbd(8) がWINSサーバとして動作している時に (wins support = yes)、 nmbdに登録されるNetBIOS名の最大のTTL(time to live)を秒単位で指定する。 このパラメータを変更する必要はないであろう。 デフォルトは6日(518400秒)である。
min wins ttl パラメータも参照のこと。
デフォルト: max wins ttl = 518400
このオプションにより、 Samba がネゴシエーション時に用いるパケットサイズの最大値が設定される。 デフォルトは 65535 であり、これが設定可能な最大値である。 小さい値の方が性能の上がる場合もあるが、 2048 以下ではおそらく問題が出るだろう。
デフォルト: max xmit = 65535
設定例: max xmit = 8192
このパラメータは、サーバが WinPopup 形式のメッセージを受信したとき、 どのようなコマンドを実行するかを指定する。
一般的には、 何らかの形でメッセージを送信するコマンドを指定する。 これをどのようにして行なうかは、想像力次第である。
以下に一例を示す:
message command = csh -c 'xedit %s;rm %s' &
これは、 xeditを利用してメッセージを送信し、 その後メッセージを削除する。 コマンドは、 すぐに制御を戻すようにすることが必須であることに注意すること。 最後に '&' をつけたのは、そのためである。 コマンドを実行後すぐに制御が戻らないと、PC はメッセージ送信後フリーズしてしまう (うまくいけば、30 秒後に回復することになるだろう)。
全てのメッセージは、グローバルなゲストユーザの権限で送信される。 コマンド中では、標準の変数を利用できるが、 %u は機能しない (%U を利用するのが適切であろう)。
標準の変数以外に、 以下に示す変数を利用することが可能である:
%s = メッセージを含むファイル名
%t = メッセージの送信先(通常はサーバ名)
%f = メッセージの送り元のユーザ
このコマンドにより、 メールを送るなど、さまざまな動作が考えられる。 おもしろいアイデアを思いついたら教えて欲しい。
以下はメッセージをrootへのメールとして送信する方法である:
message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s
message command が指定されていない場合、 メッセージは送信される、Sambaは送信者にエラーの発生を通知する。 ただし、WfWg はエラーコードを無視して送信を行ない、 メッセージの送信を報告する。
メッセージを単に削除したい場合は、以下のように設定すること
message command = rm %s
デフォルト: no message command
設定例: message command = csh -c 'xedit %s; rm %s' &
min password lengthの同義語である。
このオプションは、 UNIX 側のパスワード変更時にsmbdが受け付ける平文パスワードの 最小の文字数を設定する。
unix password sync、 passwd program、passwd chat debug も参照のこと。
デフォルト: min password length = 5
この値は、 ユーザの印刷ジョブをスプールする際に利用できなければならない空きディスクスペースの最小容量を設定する。 この値はキロバイト単位で指定する。 デフォルトは 0 で、この場合、ユーザは常に印刷ジョブをスプールできる。
printing パラメータも参照のこと。
デフォルト: min print space = 0
設定例: min print space = 2000
このパラメータの値(文字列)は、 Sambaがサポートする最低限のSMBプロトコルのdialect(レベル)になる。 有効なプロトコル名の一覧と、その簡単な説明については、 max protocol パラメータを参照のこと。クライアントがサポートするプロトコルdialectの一覧については、 source/smbd/negprot.c の Cソースを参照するとよいであろう。
セキュリティ的な観点でこのパラメータを考慮する際は、 lanman authパラメータも変更すること。 それ以外の場合、このパラメータを変更する必要はないであろう。
デフォルト: min protocol = CORE
設定例: min protocol = NT1 # DOSクライアントからのアクセスを許可しない
このオプションは、 nmbd(8) がWINSサーバとして動作している時に (wins support = yes)、 nmbdに登録されるNetBIOS名の最小のTTL(time to live)を秒単位で指定する。 このパラメータを変更する必要はないであろう。 デフォルトは6時間(21600秒)である。
デフォルト: min wins ttl = 21600
この真偽値パラメータは、 Sambaが --with-msdfs オプション付で configure、compile された場合にのみ有効である。 yesに設定された場合、 Sambaはその共有をDFSルートとして扱うため、 クライアントは、その共有ディレクトリをルートとする分散ファイルシステムのツリーを参照することが可能になる。 DFSリンクの作成は、共有ディレクトリ内にmsdfs:serverA\shareA,serverB\shareB のような形式でシンボリックリンクを作成することにより 行なわれる。DFSツリーをSamba上で構成する際の詳細情報については、 msdfs_setup.htmlを参照のこと。
host msdfs も参照のこと。
デフォルト: msdfs root = no
このオプションは、どの名前サービスからどのような順番で、 ホスト名から IP アドレスを解決するかを決定するため、 Samba の各プログラムで利用される。オプションには、 名前解決オプションを表すスペース区切りの文字列を指定する。
オプションは、「lmhosts」、「host」、「wins」、「bcast」である。これらは以下に示すように名前解決を実行する:
lmhosts : Samba の lmhosts ファイルから IP アドレスを検索する。 NetBIOS名に関連づけられる名前タイプが指定されていない行が lmhosts ファイル中にあった場合、 (詳細は、lmhosts(5) を参照のこと)、 その行はすべての名前タイプの検索にマッチする。
host : システム標準の方法で、/etc/hosts 、NISやDNSへの問い合わせを行ない、 ホスト名から IP アドレスへの名前解決を行なう。 名前解決の方法は、OSに依存する。 IRIXやSolarisの場合、/etc/nsswitch.conf ファイルにより制御される。この方法は、問い合わせられたNetBIOSの名前タイプが 0x20(server) の時のみ利用され、 それ以外は無効であることに注意。
wins : wins server パラメータで 指定されたIPアドレスに対して名前の問い合わせが行なわれる。 WINSサーバが指定されていない場合、この方法は無視される。
bcast : interfaces パラメータで設定された各インタフェース毎にブロードキャストが実行される。 これは解決したいホストがローカルサブネットに接続されているかどうかに依存するため、 もっとも不確実な名前解決の方法である。
デフォルト: name resolve order = lmhosts host wins bcast
設定例: name resolve order = lmhosts bcast host
これは最初にローカルの lmhosts ファイルを調査し、 次にブロードキャストを行ない、 最後にシステム標準のホスト名検索を試行する。
これは、nmbd(8) が Samba サーバの別名としてアナウンスする名前のリストである。 これにより、ブラウズリスト中で 単一のマシンを複数の名前で表示させることが可能になる。 マシンがブラウズサーバやログオンサーバとして動作している場合は、 別名はブラウズサーバやログオンサーバとしてはアナウンスされず、 マシン本来の名前だけがそれらの機能をもつ名前としてアナウンスされる。
netbios nameも参照のこと。
デフォルト: 空文字列(追加される名前はない)
設定例: netbios aliases = TEST TEST1 TEST2
このパラメータにより、 Samba サーバの NetBIOS 名が設定される。 デフォルトでは、ホストの DNS 名の最初の部分と同じになる。 マシンがマスタブラウザや、ログオンサーバの場合、 ここで設定された名前(またはホストのDNS名の最初の部分) がこれらのサービスをアナウンスする際に利用される。
netbios aliasesも参照のこと。
デフォルト: マシンのDNS名
設定例: netbios name = MYNAME
このオプションにより、Sambaが使用するNetBIOSスコープが決定される。 LAN上のすべてのマシンに値を設定するのでない限り、 このオプションは設定すべきでない。
NIS マップから、[home] 共有を提供するサーバを取得する。 automounter を使用する UNIX システムでは、 ユーザのホームディレクトリが、必要に応じてリモートサーバから ワークステーションにマウントされるようになっていることがよくある。
Samba のログオンサーバが実際のホームディレクトリを提供するサーバではなく、 NFS経由でホームディレクトリをマウントしている場合、 クライアントに自分自身がホームディレクトリを提供する SMB サーバであるように見せると、 ユーザがホームディレクトリにアクセスするためには、 二段階のネットワークアクセスが必要になる(1つは SMB で、もう 1 つは NFS)。 これはとても遅くなることがある。
このオプションにより、 Samba は home 共有がログオンサーバとは異なるサーバにあるものとして扱うことが可能になり、 Samba デーモンがホームディレクトリのサーバで動作している限り、 Samba クライアントは、ホームディレクトリを提供しているサーバ上の共有を直接マウントする。 Samba が home 共有の情報をクライアントに返すとき、 homedir map で指定された NIS マップに問い合わせて、 そこにあるサーバの情報を利用する。
このオプションが機能するためには、NIS システムは動いていなければならず、 このオプションを指定した Samba サーバは、 ログオンサーバでなければならないことに注意すること。
デフォルト: nis homedir = no
この真偽値パラメータにより、 smbd(8) が UNIX のアクセス権を Windows NT のアクセスコントロールリストにマップするかどうかが決定される。 このパラメータは、Samba 2.2.2 より前のリリースでは、グローバルパラメータであった。
デフォルト: nt acl support = yes
この真偽値パラメータにより、 smbd(8) が Windows NTクライアントに対して、NT SMB 固有の IPC$ パイプへの接続を 許可するかどうかが決定される。 これは開発者のデバッグオプションであり、設定する必要はない。
デフォルト: nt pipe support = yes
この真偽値パラメータにより、 smbd(8) が Windows NT/2000/XP クライアントと通信を行なう際に、 NT特有の SMB サポートをネゴシエートするかどうかが決定される。 これは開発者用のデバッグオプションであるが、 ベンチマークを行なった所、このオプションを no にすると、 Windows NT クライアントがより高速に動作することが判明したため、 そのまま提供されている。これについてはまだ調査途中である。 このオプションを no にすると、 Samba は Samba 2.0 以前のバージョンが提供するものと完全に同等の SMB 呼び出しを提供する。 この情報は、ユーザに NT SMB サポートに関連する問題が発生した際に有用かも知れない。
このパラメータを無効にする必要はまずないだろう。
デフォルト: nt smb support = yes
この真偽値パラメータは、 smbd(8) が Windows NT/2000/XP クライアントに対して、 NT 固有のステータスのサポートのネゴシエーションを行なうかどうかを制御する。 これは、開発者のデバッグ用オプションであり、設定を変更すべきではない。 このオプションが no の場合、Samba は Samba 2.2.3 以前と全く同様に、DOS エラーコードを返却する。
このオプションを無効にしてはならない。
デフォルト: nt status support = yes
パスワードがないアカウントからのアクセスを許すか拒否するかを制御する。
smbpasswd (5) も参照のこと。
デフォルト: null passwords = no
PAMサポートを有効にして(--with-pam)、configure された Samba 2.2において、 このパラメータは、Samba がPAMのアカウントとセッション管理機構を利用するかどうかを制御する。 デフォルトの場合、PAMは平文テキスト認証にのみ利用され、 アカウントとセッション管理は利用されない。 encrypt passwords = yes の場合、 Sambaは常に PAM による認証を無視することに気を付けること。 これは、PAMモジュールが、 SMBのパスワード暗号化に必要なチャレンジアンドレスポンス認証機構をサポートしていないためである。
デフォルト: obey pam restrictions = no
この真偽値のオプションは、user パラメータに設定されていないユーザからの接続を許可するかどうかを制御する。 デフォルトでは、このオプションは無効になっており、 クライアントから送信されたユーザ名をサーバが利用することが可能である。 このパラメータを有効にすることで、サーバは user パラメータで設定されたユーザ名のみを利用する。 これは 共有レベル のセキュリティの時のみ有用である。
このパラメータを有効にすると、 Samba はサービス名からユーザ名を推測することも行なわなくなる。 このため、[homes] セクションを利用していると、 問題が発生してしまう。user = %S とすることで、 user リストにサービス名が設定され、 ホームディレクトリをユーザの名前にすることができる。
user パラメータも参照のこと。
デフォルト: only user = no
guest onlyの同義語である。
これは Windows 9x と NT 双方のバグに対応するために追加されたチューニングオプションである。 クライアントが oplock を解除させるような SMB を発行した時に、 Samba のクライアントに対する応答が早過ぎると、 クライアントは誤動作してしまい、解除要求に応答しない。 このチューニングパラメータ(ミリ秒単位で指定する)は、 こうした(異常動作を行なう)クライアントに対して oplock 解除要求を送付する前に、Samba がとる待ち時間になる。
Samba の oplock コードを読んで理解していない限り、 このパラメータを変えてはいけない。.
デフォルト: oplock break wait time = 0
これは 非常に 高度な smbd(8) のチューニングオプションで、 複数のクライアント接続から同じファイルへの oplock 要求が行なわれた際の効率を改善するものである。
このパラメータには数値を指定する。 同じファイルに対して oplock を行なおうとするクライアントの大体の数がこのパラメータで指定した限界を越えると、 たとえ要求されても、smbd は oplock を許可しないようになる。これにより、 smbdは Windows NTと同様の動作を行うようになる。
Samba の oplock コードを読んで理解していない限り、このパラメータを変えてはいけない。 .
デフォルト: oplock contention limit = 2
この真偽値オプションは、 共有内のファイルオープンが要求された際に oplock (opportunistic lock = 便宜的ロック) を行なうかどうかを smbd に指示する。 oplock により、Samba サーバ上のファイルアクセス速度を劇的に改善(およそ 30% 以上)することができる。 oplock により、クライアントは、積極的にファイルをローカルにキャッシュするようになるが、 信頼性の低いネットワーク環境の場合などに、これを無効にしたいと考えることもあるだろう (Windows NT サーバにおけるデフォルト値は有効である)。 これ以上の情報については、 Samba の docs/ ディレクトリにある Speed.txt を参照のこと。
oplock は共有内のファイル単位で無効にすることも可能である。 veto oplock files パラメータを参照のこと。 システムによっては、oplock がOS自身によって認識される。 この場合、Samba、NFS、ローカルなUNIXのいずれを経由してアクセスが行なわれた場合でも、 oplock が行なわれたファイルとのデータの同期が実現する。 詳細は、kernel oplocks パラメータを参照のこと。
kernel oplocks と level2 oplocks パラメータも参照のこと。
デフォルト: oplocks = yes
この数値は、 Samba がブラウザ選定時に宣言する優先度を設定する。 このパラメータの値は、nmbd(8) が、ブロードキャスト範囲内における WORKGROUP のローカルマスタブラウザになるかどうかに影響する。
注意 : ローカルマスタブラウザの選定に際して、デフォルトでは、 Samba が Windows NT 4.0/2000 のドメインコントローラ以外のすべての Microsoft 社のOSに優先する。 このため、Samba ホストの設定が不正の場合、 ブラウジング的にそのサブネットが孤立してしまう可能性がある。 詳細は、Samba の docs/ ディレクトリにある BROWSING.txt を参照のこと。
デフォルト: os level = 20
設定例: os level = 65
このパラメータでは、 OS/2 のプリンタドライバ名と Windows NT のプリンタドライバ名とのマッピングが記述されたファイルへの絶対パスを指定する。 ファイル形式は以下のようになっている:
<nt 用ドライバ名> = <os2 用ドライバ名 >.<デバイス名>
HP LaserJet 5 のプリンタドライバを例にとった場合、 正しいエントリはHP LaserJet 5L = LASERJET.HP LaserJet 5Lのようになる。
このファイルは、 Samba Printing HOWTO 中で記述されているプリンタドライバの名前空間の問題に対応するために用いられる。 OS/2 クライアントに関する詳細については、Samba ドキュメント中の OS2-Client-HOWTO を参照のこと。
デフォルト: os2 driver map = <空文字列>
Samba 2.2 における PAM サポート機能の追加にともない、 このパラメータを用いることで、PAM を使った Samba のパスワード変更が可能となる。 このパラメータが有効な場合、SMB クライアントからの要求があれば、 passwd program に設定されたプログラムに代わって、PAM を使ってパスワードの変更が行なわれる。 ほとんどの場合、 passwd chat パラメータの変更なしにこのパラメータを有効にすることが可能である。
デフォルト: pam password change = no
これは Samba 開発者のためのオプションで、 smbd(8) や nmbd(8) がクラッシュした際に呼び出されるシステム上のコマンドを指定する。 これは通常問題が発生した事実を警告するのに使われる。
デフォルト: panic action = <空文字列>
設定例: panic action = "/bin/sleep 90000"
このパラメータで指定される文字列は、 smbd とローカルなパスワード変更プログラムとの間でパスワード変更時に発生する やりとり(chat) を制御する。 文字列には、smbd(8)が passwd program で指定したプログラムに行なう送信内容と、 それに対して期待される応答内容とを定義したやりとりの手順を記述する。 期待される応答がない場合、パスワードは変更されない。
このやりとりの手順は、 パスワード制御のためにどのような方法(たとえば NIS など)を 使うかに依存するため、サイト毎に異なることが多い。
このパラメータは、 unix password sync パラメータが yes の時のみ利用される。 このやりとりは、smbpasswd ファイル中の SMBパスワードが変更される際に、 古いパスワードの平文へアクセスすることなしに、 root権限で 呼び出される。 これは、root であれば以前のパスワードを知らなくても、ユーザのパスワードの再設定を行なうことができるからである。 NIS/YP を利用している場合、 passwd program は NIS マスタサーバ上で実行する必要がある
文字列には、各々新旧パスワードに置換される、 %n および %o マクロや、 各々改行、復帰、タブ、空白を意味する標準的なマクロである、 \n、\r、 \t、\sも記述できる。 さらに、この文字列には、任意の文字列に一致する '*' を記述してもよい。 ダブルクオーテーションは、 空白を含む複数の文字列を 1 つの文字列と見なすのに使うことができる。
やりとりの手順中で、送信文字列としてピリオド "." が指定されていた場合、実際にはなんの文字列も送られない。 同様に、受信文字列としてピリオドが指定されていた場合、 実際には何も受信しないことが期待されている。
pam password change パラメータが true の場合、 chat のやりとりの手順は、任意の順番でマッチし、 成功したか否かは出力結果ではなく PAM の戻り値で判断される。 PAM の場合、\n マクロは無視される。
unix password sync、 passwd program、 passwd chat debug、 pam password changeも参照のこと。
デフォルト: passwd chat = *new*password* %n\n *new*password* %n\n *changed*
設定例: passwd chat = "*Enter OLD password*" %o\n "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"
この真偽値パラメータは、passwd chat script パラメータを debug モードで実行するかどうかに影響する。 debug モードの場合、passwd chat 中にやりとりされる文字列は、 debug level を 100 にすることで、smbd(8) のログファイル中に出力されるようになる。 smbd のログ中に平文のパスワードが見えてしまうため、これは危険なオプションである。 このパラメータは、 Samba の管理者が passwd chat スクリプトが passwd program を呼び出す際の デバッグを行なう際に役立つ。デバッグが終了したら、必ず無効にすること。 pam password change パラメータが有効になっている場合、このオプションは無効になる。 このパラメータはデフォルトで無効になっている。
passwd chat、 pam password change 、passwd program も参照のこと。
デフォルト: passwd chat debug = no
ユーザの UNIX 上のパスワードを設定するために使用するプログラムの名前を指定する。 %u はユーザ名に置換される。 パスワード変更プログラムを呼び出す前に、 指定されたユーザ名が存在するかのチェックが行なわれる。
多くのパスワード変更プログラムは、 パスワードの最小字数や大文字と小文字併用や、数字の混在などの 適切なパスワードを要求することに注意して欲しい。 一部のクライアント(Windows for Workgroups など)は、 パスワードを送信する前に大文字化してしまうため、問題が発生する。
注意:unix password sync パラメータを True に設定すると、 smbpasswd(5) ファイル中の SMBパスワードが変更される前に、 このプログラムが root権限で 呼び出される。 UNIX 側のパスワード変更が失敗すると、 smbd は SMBパスワードの変更も失敗する(これは仕様である)。
unix password sync パラメータがtrueに設定されている場合は、 このパラメータで指定する すべての プログラムを 必ず絶対パスで設定し、 セキュリティ上の問題が発生しないようにしておくこと。 デフォルトでは unix password sync は false になっている。
unix password syncも参照のこと。
デフォルト: passwd program = /bin/passwd
設定例: passwd program = /sbin/npasswd %u
クライアントとサーバの組合せによっては、 大文字と小文字が混在したパスワードの扱いに問題が発生することがある。 問題が発生するクライアントは LANMAN1 プロトコルを使用しているとパスワードを強制的に大文字にするが、 COREPLUS を使用しているときはこの変換を行なわない Windows for Workgroups がある。 Windows 95/98 系列のオペレーティングシステムにも問題がある。 これらのクライアントは、プロトコルのネゴシエーションの結果 NT LM 0.12が使われることになった場合でも、平文のパスワードを大文字化してしまう。
このパラメータは、 パスワード中に含むことができる大文字の最大数を設定する。
例えば、与えられたパスワードが "FRED" であったとする。 password level が 1 に設定されていると、 "FRED" で失敗したときに以下の組み合わせによる再試行が行なわれる:
"Fred", "fred", "fRed", "frEd","freD"
password level が 2 に設定されていると 以下の組合せによる試行も行なわれる:
"FRed", "FrEd", "FreD", "fREd", "fReD", "frED", ..
以下も同様である。
このパラメータを大きくするほど、 大文字と小文字の混在したパスワードが大文字あるいは小文字のみのパスワードと一致するようになる。 しかし、このパラメータの利用はセキュリティの低下につながることと、 新規の接続を処理するための時間が増大することを意識しておく必要がある。
値を 0 にすると、入力された通りのパスワードと、 それらを全て小文字にした場合の 2 回の試行のみを行なう。
デフォルト: password level = 0
設定例: password level = 4
このオプションで、 別の SMB サーバ(Windows NT マシンなど)の名前を指定した上で、 security = domain もしくは security = server に設定することで、 Samba が行なうユーザ名、パスワードの認証のすべてを別のサーバに行なわせることが可能となる。
このオプションでは、パスワードサーバとして利用するマシンの名前を設定する。 名前の指定はNetBIOS名で行なう必要がある。そのため、 NetBIOS 名が Internet 名と異なっている場合は、 smb.confファイルと同じディレクトリにある、 lmhostsファイルにNetBIOS名のエントリを追加する必要があるだろう。
パスワードサーバの名前解決は、 name resolve order パラメータで設定された 方法と順番に従って、行なわれる。
パスワードサーバは、 「LM1.2X002」または「LM NT 0.12」プロトコルが利用可能であり、 ユーザレベルのセキュリティモードで構成されたマシンである必要がある。
注意: パスワードサーバを利用するということは、 Samba を実行している UNIX マシンのセキュリティはパスワードサーバに依存するということである。 完全な信頼ができないサーバをパスワードサーバとして設定してはいけない。
Samba サーバ自身をパスワードサーバに設定しないこと。 これはループを発生させ、Samba サーバをフリーズさせてしまう!
password server の値には、 Samba 変数も通常通り利用できるが、 事実上有用なものは、Samba サーバに接続してきたクライアントをパスワードサーバとして 設定することを意味する、%m だけであろう。 この設定を行なう際には、hosts allow を使って信頼できるクライアント以外からの接続を制限することが望ましい。
security パラメータを domain に設定する場合、 このオプションでは、ドメインのプライマリおよびバックアップドメインコントローラを指定するか、 "*' という文字を指定する必要がある。 これは Samba サーバをドメインのメンバとして機能させるとともに、 ユーザのログオン時に認証を行なうために、暗号化された認証済のRPCコールを利用するためである。 security = domain を用いる利点は、 password server オプションで幾つかのサーバを指定した場合に、 smbd がリスト中のサーバに対してどれかのサーバから応答があるまで順番に問い合わせを行なっていくという点にある。 これは、通常問い合わせを行なうサーバが停止してしまった時に効果を発揮する。
password server オプションに '*' 文字を指定すると、Samba は WORKGROUP<1C> という名前の問い合わせを行なって、 認証に利用するプライマリもしくはバックアップドメインコントローラを自動的に決定するようになり、 名前解決により返却されたIPアドレスのリスト中の各サーバに対して順番に接続が行なわれる。
security パラメータが server の場合、 security = domain の場合にはなかった制限事項が幾つか発生する:
複数のパスワードサーバを password server パラメータ中に 設定できるが、一旦 smbd が接続を行なったパスワードサーバが停止してしまうと、 その smbd ではそれ以上のユーザ認証が一切行なえなくなる。 これは security = server モードにおける SMB/CIFS プロトコルでの制限で、Samba 側では対処できない。
Windows NT サーバをパスワードサーバとして使っている場合、 ユーザが Samba サーバからログオンできるようにする必要がある。 これは、security = server モードの場合、 ネットワーク経由のログオンは、ユーザのワークステーションからではなく、 Samba サーバから行われたものとして扱われるためである。
security パラメータも参照のこと。
デフォルト: password server = <空文字列>
設定例: password server = NT-PDC, NT-BDC1, NT-BDC2
設定例: password server = *
このパラメータは、 サービスに接続したユーザがアクセスするディレクトリを指定する。 印刷サービスの場合は、印刷データが印刷用ホストに送られる前に一時的にスプールされる場所になる。
ゲストアクセスを許可している印刷サービスの場合、 サービスは読みだし専用にすべきであり、 パスは全ユーザ書き込み可とし、sticky ビットをセットすべきである。 これはもちろん必須ではないが、このようにしない限りは、 おそらく意図した設定を行なうことができないだろう。
path パラメータの値にある %u は、 クライアントが接続する際に利用した UNIX のユーザ名に置換される。 %m は、接続してきたマシンの NetBIOS 名に 置換される。これらの置換操作は、 ユーザに仮想的なホームディレクトリを設定する際、 非常に便利である。
root dir が設定されていた場合、 このパラメータもその影響を受けることに注意。
デフォルト: なし
設定例: path = /home/fred
このオプションにより、 pid ファイルがおかれるディレクトリが指定される。
デフォルト: pid directory = ${prefix}/var/locks
設定例: pid directory = /var/run/
smbd(8) デーモンでは、SMBクライアントによって行なわれたファイルロックの情報を記録するデータベースを管理している。 デフォルトでは、データベースの内部処理として POSIX ロックへの置換えが行なわれている。 これにより、SMBクライアントによって行なわれたファイルロックは、 POSIX互換のアプリケーションがSMB以外の方式(NFS やローカルなファイルアクセス) を用いて、ファイルにアクセスする際にも認識されることになる。 このパラメータを無効にする必要はまずないであろう。
デフォルト: posix locking = yes
このオプションは、 サービスから切断した際に常に起動されるコマンドを指定する。 このパラメータでは通常のSambaの変数も利用できる。 システムによってはコマンドが root で実行される場合もあるかも知れない。
面白い例としては、サーバのリソースを umount するような 用途が考えられる:
postexec = /etc/umount /cdrom
preexec も参照のこと。
デフォルト: なし (実行されるコマンドはない)
設定例: postexec = echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log
このパラメータは、 印刷するファイルを Postscript 形式として解釈するようにプリンタに強制する。 これは、印刷の出力の先頭に %! を付加することによって行なわれる。
印刷の開始時に Ctrl-D を出力して、 プリンタの処理をおかしくしてしまうようなPCがまだたくさんある時には、 これはとても便利である。
デフォルト: postscript = no
このオプションは、サービスへ接続した際に必ず実行されるコマンドを指定する。 このパラメータでは通常のSambaの変数も利用できる。
面白い例としては、接続する度に、 ユーザに歓迎(welcome)メッセージを送るような用途が考えられる。 その日の一言 (message of the day) も面白いかも知れない。以下に例を示す:
preexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' &
無論、しばらく経つとこれはイライラのもとになるだけだろう :-)。
preexec close および postexec も参照のこと。
デフォルト: なし (実行されるコマンドはない)
設定例: preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/log
この真偽値オプションは、preexec で指定したコマンドから 0 以外の戻り値が返却された際に、 サービスへの接続をクローズするかどうかを制御する。
デフォルト: preexec close = no
この真偽値パラメータは、 nmbd(8) が ワークグループのマスタブラウザとして優先されるかどうかに影響する。
これが true に設定されていると、 nmbd は起動時にブラウザの選定を強要する。 また、選定時の優先度でも、わずかではあるが有利になる。 このパラメータは、 nmbd がドメインマスタブラウザになることを保証するために、 domain master = yesの設定と連係して利用することが推奨されている。
同じサブネット上に優先マスタブラウザに指定されたホスト(Samba サーバ、Windows 95/NT のいずれの場合も)が複数台か存在すると、 それらのホストは定期的にローカルマスタブラウザになろうとする 試みを永続的に繰り返すことになる。 これは不要なブロードキャストトラフィックを発生させるだけでなく、 ブラウジング機能自体にも支障を発生させてしまうため、このオプションは注意して扱うこと。
os level も参照のこと。
デフォルト: preferred master = auto
preferred master の同義語で、綴り間違いをする人のために用意されている :-)
このパラメータは、 自動的にブラウズリスト上に追加したいサービスのリストを設定する。 このパラメータを利用しないと不可視になる homes や printers サービスにとって有用である。
printcap ファイルにあるすべてのプリンタを指定したい場合は、 load printers オプションを利用する方が簡単である。
デフォルト: preload に設定されたサービスはない
設定例: preload = fred lp colorlp
クライアントから送信されてきた新しいファイル名中の大文字小文字をそのまま利用するか、 default case パラメータの設定を強制するかどうかを設定する。
デフォルト: preserve case = yes
この設定に関する詳細については、 NAME MANGLING のセクションを参照のこと
印刷ジョブが、スプールファイルの書き込みを完了した後で、 ここで指定したコマンドが system() 関数経由でスプールファイルを処理するために、利用される。 通常、指定したコマンドはスプールファイルをホストの印刷サブシステムに送信するが、 そうしなければならないということはない。 サーバはスプールファイルを削除しないので、 指定したコマンドが処理完了後にスプールファイルを削除しなければならない。 さもなければ、古いスプールファイルを手動で削除する必要がある。
print command は、単純なテキスト文字列である。 これは、以下のマクロが置換される他はそのまま利用される。
s, %p - スプールファイル名へのパス
%p - プリンタ名
%J - the job クライアントから送信されたジョブ名
%c - スプールされたジョブのうち、 すでに印刷されたページ数(検知可能な場合)
%z - スプールされた印刷ジョブのサイズ (バイト)
print command には、最低限 %s もしくは %f の記述が必要である。 %p については必須ではない。 ジョブの実行時にプリンタ名が指定されていない場合、 %p は単に printer command から取り除かれる。
[global] セクション中で指定された print command は、 独自の print command が設定されていない各印刷サービスに適用される。
印刷サービスに print command の定義がなく、 グローバルな print command の定義もない場合、 スプールファイルは作成されるが処理されず、(これが最も重要だが)削除されない。
UNIX プラットフォームによっては nobody アカウントを用いた印刷が失敗する場合があるので注意して欲しい。 この場合、印刷の実行が可能な別のゲストアカウントを作成し、 [global] セクション中の guest account に設定すること。
シェルで解析できる限りの非常に複雑な print command を記述することが可能である。 以下の例では印刷ジョブを記録し、ファイルを印刷してからそれを削除している。 ';' はシェルスクリプトにおいて、 通常コマンド間のセパレータとして用いられることに注意。
print command = echo Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s
システムでファイルを印刷する方法によっては、 このコマンドを適宜変更する必要があるかもしれない。 パラメータのデフォルト値は、 printing パラメータの設定に応じて変化する。
デフォルト: printing = BSD, AIX, QNX, LPRNG, PLPの場合:
print command = lpr -r -P%p %s
printing = SYSV, HPUXの場合:
print command = lp -c -d%p %s; rm %s
printing = SOFTQの場合:
print command = lp -d%p -s %s; rm %s
printing = CUPS の場合: Samba が libcups を利用してコンパイルされた場合、 printcap = cups は、ジョブの送信などに CUPS API を利用する。 それ以外の場合は、lp -c -d%p -oraw; rm %s のように、 印刷には -oraw オプションをつけた System V 系のコマンドに対応づけられる。 Samba が libcups を利用してコンパイルされ、 printing = cups の設定が行なわれた場合、 手動で設定された print コマンドは無視される。
設定例: print command = /usr/local/samba/bin/myprintscript %p %s
printableの同義語である。
このパラメータが yes の場合に、 クライアントから指定されたディレクトリにスプールファイルを書き込むことが可能になる。
印刷可能(printable)なサービスでは、 (ユーザがUNIX上に権限をもっている限り)印刷データをスプールファイルに書き込むことが常に可能となることに注意。 writeable パラメータは、 リソースに対する印刷以外のアクセスにのみ影響する。
デフォルト: printable = no
printcap nameの同義語である。
このパラメータは、 コンパイル時に設定されるデフォルトの printcap ファイル名 (通常 /etc/printcap) を上書きにするために使われる。 このパラメータを設定すべき状況については、前述した [printers] セクションに関する説明を参照のこと。
CUPS 印刷インタフェースを利用する際は、printcap name = cups という設定を行なうこと。これは、[global] セクションの printing = cups という設定により補完される。 printcap name = cups により、 CUPS の設定ファイルによって指定された、 CUPS によって作成される「dummy」の printcap が用いられるようになる。
利用可能なプリンタを一覧するため lpstat を利用する System V のシステムでは、 printcap name = lpstatと設定することで、 利用可能なプリンタの一覧を自動的に取得できる。 Samba の configure 時点に SYSV が定義されるシステム (ほとんどの System V ベースのシステムが該当する)では、これがデフォルトである。 これらのシステムで printcap name に lpstat が設定されると、 Samba は lpstat -v を実行し、その出力からプリンタ一覧を取得する。
最低限の 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である。printcap ファイルの名前が qconfig の場合、Samba はファイルが AIXの qconfig形式であると仮定する。
デフォルト: printcap name = /etc/printcap
設定例: printcap name = /etc/myprintcap
このパラメータには、 MS-RPC(通常Windows NT Workstationによって使用される)による、 遠隔からのプリンタ管理インタフェース経由でプリンタに対するすべての操作を行なう権限をもつユーザのリストを設定する。 root は常に権限をもつことに注意。
デフォルト: printer admin = <空文字列>
設定例: printer admin = admin, @staff
注意: これは下位互換性を保つためのパラメータであり、バージョン 2.2 の次のメジャーリリースで削除される。 Samba サーバにプリンタドライバをインストールするための 新方式についての詳細情報は、 Samba 2.2. Printing HOWTO 中の説明を参照のこと。
このオプションは、 クライアントがプリンタ用のプリンタドライバをサーバに問い合わせたときに応答として受け取る文字列を設定する。 Windows 95 や Windows NT を使用している場合、 この文字列を利用することでプリンタのセットアップを自動で行なうことができる。
このパラメータには、適切なプリンタドライバを示す正確な文字列(大文字/小文字も区別される)を設定する必要がある。 指定すべき正確な文字列がわからなければ、 printer driver パラメータを設定せず、クライアント側でプリンタドライバの一覧を表示させるとよい。 プリンタの製造元を選択すると、 該当する文字列がスクロールボックス中に表示されるだろう。
printer driver fileも参照のこと。
設定例: printer driver = HP LaserJet 4L
注意: これは下位互換性を保つためのパラメータであり、バージョン 2.2 の次のメジャーリリースで削除される。 Samba サーバにプリンタドライバをインストールするための 新方式についての詳細情報は、 Samba 2.2. Printing HOWTO 中の説明を参照のこと。
このパラメータは、 Windows 95 クライアントに対して プリンタドライバの提供を行なう際に利用する プリンタドライバの定義ファイルの位置を指定するものである。 このパラメータが設定されていなかった場合のデフォルトは以下の通り。
SAMBA_INSTALL_DIRECTORY /lib/printers.def
This file is created from Windows 95 msprint.inf files found on the Windows 95 client system. Windows 95 クライアントに対してプリンタドライバを提供するための設定に関する詳細は、docs/ ディレクトリ中にある古いドキュメントの PRINTER_DRIVER.txt を参照のこと。
printer driver locationも参照のこと。
デフォルト: なし (コンパイル中に設定される)
設定例: printer driver file = /usr/local/samba/printers/drivers.def
注意: これは下位互換性を保つためのパラメータであり、バージョン 2.2 の次のメジャーリリースで削除される。 Samba サーバにプリンタドライバをインストールするための 新方式についての詳細情報は、 Samba 2.2. Printing HOWTO 中の説明を参照のこと。
このパラメータは、 プリンタ共有に接続したクライアントに対して、 Windows 95 マシンに対するプリンタドライバの自動インストールに必要な ファイルの置き場所を通知するものである。 Samba が Windows 95 マシンにプリンタドライバを提供するように設定されている場合は、次のような値を指定する必要がある
\\MACHINE\PRINTER$
ここで、MACHINE は Samba サーバの NetBIOS 名、 PRINTER$ はプリンタドライバのファイルを置いた共有である。 設定についての詳細は、docs/ ディレクトリ中にある古いドキュメントの PRINTER_DRIVER.txt を参照のこと。
printer driver fileも参照のこと。
デフォルト: なし
設定例: printer driver location = \\MACHINE\PRINTER$
このパラメータは、 印刷サービスに対して印刷ジョブが送られた際に、 それをスプールするプリンタ名を設定する。
[global] セクションで設定された場合、 そのプリンタ名は、独自のプリンタ名が指定されていないすべての 印刷サービスで利用される。
デフォルト: なし (ただし多くのシステムではlp)
設定例: printer name = laserwriter
printer nameの同義語である。
このパラメータは、プリンタの状態に関する情報を どのように解釈するかを設定する。 更に、[global] セクションで指定された場合は、 print command、 lpq command、lppause command 、lpresume command、 lprm command のデフォルト値にも影響する。
現在、以下の9つの印刷形式がサポートされており、それらは BSD、AIX、 LPRNG、PLP、 SYSV、HPUX、 QNX、SOFTQ、 CUPSである。
このオプションを設定した際に、 関連する印刷コマンドのデフォルトがどのように設定されるかを 確認する際は、 testparm(1) プログラムを使用すること。
このオプションはプリンタ毎に設定することが可能である。
[printers] セクションにおける説明も参照のこと。
max protocolの同義語である。
guest okの同義語である。
このパラメータは、印刷キューを一時停止させるために、 サーバ上で実行するコマンドを指定する。
このコマンドは、 引数としてプリンタ名をとり、 印刷キューにある印刷ジョブの送信を停止させるために 印刷キューを停止させる機能を持つ プログラムまたはスクリプトである必要がある。
Windows 95 や Windows NTでは、 「プリンタ」ウインドウからこのコマンドを発行することができるが、 Windows for Workgroups ではこのコマンドがサポートされていない。
コマンド中に %p が指定された場合は、プリンタ名に置換される。 なお、これはコマンド文字列の最後におかれる必要がある。
サーバ上で PATH 環境変数が設定されていない場合を想定して、 コマンドをフルパスで記述することが推奨される。
デフォルト: printing の設定に依存する
設定例: queuepause command = disable %p
このパラメータは、印刷キューを再開させるために、 サーバ上で実行するコマンドを指定する。 これは、前述したパラメータ ( queuepause command)によって一時停止された 動作を再開させるコマンドになる。
このコマンドは、 引数としてプリンタ名をとり、 印刷キューにある印刷ジョブを再度プリンタへ送信させるために、 印刷キューを再開する機能を持つ プログラムまたはスクリプトである必要がある。
Windows 95 や Windows NTでは、 「プリンタ」ウインドウからこのコマンドを発行することができるが、 Windows for Workgroups ではこのコマンドがサポートされていない。
コマンド中に %p が指定された場合は、プリンタ名に置換される。 なお、これはコマンド文字列の最後におかれる必要がある。
サーバ上で PATH 環境変数が設定されていない場合を想定して、 コマンドをフルパスで記述することが推奨される。
デフォルト: printingの設定に依存する
設定例: queuepause command = enable %p
この真偽値パラメータは、 smbd(8) に "Read Block Multiplex" SMB をサポートさせるかどうかを制御する。 これは、まず使われることがないため、デフォルトは no になっている。 このパラメータを設定する必要はまずないであろう。
デフォルト: read bmpx = no
これは、 サービスに対して read only アクセス権を与えられる ユーザのリストである。 接続したユーザがこのリスト中に存在する場合、 writeable の値がどのように設定されていても、write アクセス権は与えられない。 リストには invalid users パラメータの説明で記述した 形式を使って、グループ名を含めることも可能である。
write list パラメータと invalid users パラメータも参照のこと。
デフォルト: read list = <empty string>
設定例: read list = mary, @students
これは、 writeableの反意語である。
このパラメータは、データをクライアントに転送する際に、 サーバ側で raw readをサポートするかどうかを設定する。
有効な場合、 raw readで、1パケットあたり 65535 バイトの読み込みが可能となる。 これは性能の向上に大きく貢献する。
ただし、クライアントによっては、ブロックサイズを誤認識したり、 大きなブロックサイズを利用できなかったりするので、その場合は、 raw read を無効にする必要があるだろう。
このパラメータは、 システムのチューニングパラメータであり、 通常は設定を変更すべきものではない。 write raw も参照のこと。
デフォルト: read raw = yes
このオプション read size は、ネットワークとの送受信中に ディスク書き込みを並行して行なうかどうかに関連する。 幾つかのSMBコマンド (現在のところ SMBwrite、SMBwriteX、SMBreadbraw) によって大量のデータが転送される際に、 データ量がこの値より大きければ、 サーバはパケット全体をネットワークから受信する前にデータの書き込みをはじめる。 SMBreadbraw の場合は、 すべてのデータをディスクから読み出す前にネットワークへの送信を始める。
この動作は、 ディスクアクセスとネットワークアクセスの速度が同一であると非常に効果があるが、 どちらかのスピードが他方より大幅に速い場合には、 あまり影響しない。
デフォルト値は 16384 であるが、 最適値を決めるための試験はごくわずかしか行なわれておらず、 システムによって最適値が大きく変わることもありえる。 なお 65536 以上の値はあまり意味がなく、 メモリを無駄に占有するだけである。
デフォルト: read size = 16384
設定例: read size = 8192
このオプション recycle bin は、「ゴミ箱」として利用するディレクトリ名を指定する。 ディレクトリ名は相対パスまたは絶対パスで表記することが 可能で、samba 変数を使用することもできる。 相対パスで表記された場合は、(PATH) オプションで 指定されたディレクトリからの相対パスになる。
このパラメータが設定されていた場合、共有内で削除される ファイルは、単に削除される代わりに、パラメータで指定した ディレクトリに移動される。同じ名前のファイルが複数削除 された場合は, ファイル名に一意な識別子が加えられた ファイル名になる。
「ゴミ箱」ディレクトリに移動されたファイルが自動的に 削除されることはないため、何らかの手段で、「ゴミ箱」内の ファイルの掃除を行う必要がある。 恐らく cron を利用して古いファイルを定期的に削除するように するのがよいだろう。
デフォルト: recycle bin = 空文字列
設定例: recycle bin = .recycle
このオプションにより、 nmbd(8)は、 指定したIPアドレスに対して設定したワークグループ情報を定期的にアナウンスするようになる。
これは、Samba サーバを 通常のブラウズリストの交換ができない別のワークグループ上に表示させたい場合に有用である。 別のワークグループは、IP パケットを送信できるところであれば どこにあってもよい。
以下に例を示す:
remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF
上記の設定は、nmbd が指定された2つのアドレスに対して 指定されたワークグループ名を使って自身のアナウンスを行なう設定である。 ワークグループ名を指定しなかった場合、 workgroup パラメータで指定された値が代わりに利用される。
設定するIPアドレスとしては、 通常リモートネットワークのブロードキャストが用いられるが、 ネットワークが安定していれば、 マスタブラウザのIPアドレスを指定することもできる。
docs/ ディレクトリにある BROWSING.txt というファイルも参照のこと。
デフォルト: remote announce = <空文字列>
このオプションにより、 別セグメントにある Samba サーバのマスタブラウザと 定期的にブラウズリストの同期要求を行なうように nmbd(8) が 構成される。 このオプションにより、 ルーティングされたネットワーク上に存在する 複数ワークグループからなるブラウズリストを 構築することが可能になる。 これは Samba 固有の方式で動作するため、 Samba 以外のサーバでは機能しない。
これは、Samba サーバおよび同じセグメント上のクライアントマシンを 通常のブラウズリストの交換ができない別のワークグループ上に表示させたい場合に有用である。 別のワークグループは、IP パケットを送信できるところであれば どこにあってもよい。
以下に例を示す:
remote browse sync = 192.168.2.255 192.168.4.255
上記の設定は、nmbdが指定されたサブネットのアドレスに対して ローカルサーバとのブラウズリストの同期を要求する設定である。
設定するIPアドレスとしては、 通常リモートネットワークのブロードキャストが用いられるが、 ネットワークが安定していれば、 マスタブラウザのIPアドレスを指定することもできる。 IPアドレスが設定された場合、Sambaはそのマシンが起動していて、 要求を待っているかについても、そのセグメントのマスタブラウザであるかどうかについても確認しない。
デフォルト: remote browse sync = <空文字列>
これは真偽値パラメータである。 trueに設定された場合は、 サーバへの匿名アクセスは拒否される。 これは、クライアントからのユーザ名の送信をサーバが待っているにも関わらず、 送信されなかった場合に該当する。 trueに設定された場合は、 サーバへの匿名での接続が拒否され、 接続時には、クライアントから ユーザ名とパスワードを送信することが必須となる。 このパラメータは、NTのみのクライアント環境においてのみ 利用することを推奨する。
このパラメータにより、 ユーザ名(%U、%G など)に依存しているマクロの展開が consnstent 一貫性をもたらす。 Windows NT 4.0 では、共有のリストを参照する際に 匿名接続を利用するが、これが this is a way to work around that.
restrict anonymous をtrueにした場合、 すべての匿名接続は、その目的を問わず禁止される。 これにより、誰かがクライアントに対話的にログオンした後で、 コンピュータアカウントを再認証するため Samba のプライマリドメインコントローラに接続する機能が 影響を受けることがある。 NT クライアントには「ドメインにコンピュータアカウントが存在しないか、パスワードが不正である」というメッセージが表示されることになる。 これに対処するには、「すべてのプログラムを終了して別ユーザでログインする」を利用せず、 「シャットダウン後再起動する」を利用して 対話的なログオン毎に NTクライアントマシンを再起動するのが良い。
デフォルト: restrict anonymous = no
root directory"の同義語である。
root directory"の同義語である。
サーバの起動時に、このディレクトリへ chroot() (ルートディレクトリの変更)が行なわれる。 これは、安全のため絶対に必要というものではない。 この設定がなくても、 いずれかのサービスの提供するディレクトリ配下にない ファイルへのアクセスは許可されない。 また、ファイルシステムへの他の部分へのシンボリックリンクや、 ファイル名に ".." をつけて 他のディレクトリにアクセスするような行為も チェックされてアクセスを拒否される (wide links パラメータの設定に依存する)。
root directory として、 "/" 以外を指定した場合は、代償もあるが、 非常に強固なセキュリティが実現される。 root directory オプションで指定されたディレクトリの サブディレクトリ以外にあるファイルへのアクセスは、 サーバのオペレーションも含めて、 一切アクセスできない。 サーバを動作させるには、 root directory 内に 必要なシステムファイルをコピーしておく必要がある。 例えば /etc/passwd (またはその一部)や、 印刷に必要となる設定ファイルやバイナリなどをコピーする必要がある。 コピーしなければならないファイルは、 オペレーティングシステムに依存する。
デフォルト: root directory = /
設定例: root directory = /homes/smb
このパラメータは、 コマンドが root で実行されることを除き、 postexec パラメータと同一である。 このコマンドは、コネクションの切断後に (CD-ROMなどの)ファイルシステムをアンマウントするのに便利である。
postexecも参照のこと。
デフォルト: root postexec = <空文字列>
このパラメータは、 コマンドが root で実行されることを除き、 preexec パラメータと同一である。 このコマンドは、コネクションの開始時に (CD-ROMなどの)ファイルシステムをマウントするのに便利である。
preexec および preexec closeも参照のこと。
デフォルト: root preexec = <空文字列>
このパラメータは、 コマンドが root で実行されることを除き、 preexec close パラメータと同一である。
preexec および preexec close パラメータも参照のこと。
デフォルト: root preexec close = no
このオプションは、 クライアントがどのように Samba に応答するかを決めるものであり、 smb.conf 中でもっとも重要な設定の 1 つである。
このオプションは、 smbd(8) との プロトコルネゴシエーション時の応答に含まれる、 "security mode bit" を設定し、 共有レベルのセキュリティの利用を制御する。 クライアントは、この bit を元にして、 ユーザとパスワードの情報をサーバに転送するかどうか、 また転送する際の方法を決定する。
デフォルトは、security = user であり、 これは Windows 98 と Windows NT との間で通信を行なうときに必要とされる もっとも一般的な設定(訳注: ユーザレベルのセキュリティ)である。
その他 security = share、 security = server、security = domain が設定可能な値である。
2.0.0 以前のバージョンの Samba では、 主に過去との互換性を保つ目的で、 security = share がデフォルトであった。
Windows for Workgroups(WfWg) には、 このオプションの設定時に考慮すべきバグがある。 このパラメータが user もしくは server の場合に WfWg クライアントは、"connect drive" ダイアログボックスで入力したパスワードを完全に無視してしまう。 そのため、WfWg にログオンしたユーザ以外のユーザで、 Samba の サービスに接続することが (不可能でない場合でも)非常に難しくなっている。
PC上で UNIX マシン上と同じユーザ名を使う場合は、 security = user を用いるとよいだろう。 UNIX マシン上にないユーザ名を使っている場合は、 security = share を使う必要がある。
パスワードなしの共有(ゲスト共有)の作成が主目的である場合も、 security = share を使った方がよいであろう。 この設定は、通常共有プリンタサーバで使われることが多い。 security = user の設定で、 ゲスト共有を作成するのは、多少複雑になる。 詳細については、map to guest パラメータを参照のこと。
異なる NetBIOS aliases を 用いることで、 ユーザレベルと共有レベルのセキュリティの両方を提供する 混在モード(hybrid mode) で smbdを運用することも可能である。
以下、個々の設定については説明する。
共有レベルのセキュリティに構成されたサーバに 接続するクライアントは、 共有リソースに接続しようとする際に、 適切なユーザ名とパスワードで サーバにログオンしておく必要がない (最近の Windows 95/98 や Windows NT は、 security=share のサーバと通信をする際に ユーザ名を設定してログオン要求を送るが, パスワードは送らない)。 そのかわり、クライアントは 共有への接続時に認証情報(パスワード)を、 共有毎に送信する。
security=share レベルのセキュリティで 構成されていた場合であっても、smbd が クライアントからの要求を処理する際には*常に* UNIX 上のいずれかのユーザの権限で処理が行なわれる点に注意。
共有レベルのセキュリティでは、 クライアントがユーザ名をサーバに送るように要求されないため、 smbd は、 いくつかの方法を用いて、 クライアントの要求を処理する際に利用する UNIX 上のユーザを決定する。
クライアントから送られてきたパスワードの確認対象となる UNIX 側のユーザのリストは、以下のようにして生成される:
guest only パラメータが設定されている場合、 以下の手順は省略され、 guest account に設定されたユーザ名のみが確認対象となる。
共有への接続時にユーザ名も送られてきた場合、 そのユーザ名(変換後のもの - username map を参照のこと) が確認対象のユーザ名に追加される。
クライアントが以前に ログオン 要求 (SessionSetup SMB 呼び出し) を行なっていた場合、 その SMB 呼び出し中で送られたユーザ名が、 確認対象のユーザ名に追加される。
クライアントが接続しようとしているサービスの名前が、 確認対象のユーザ名に追加される。
クライアントの NetBIOS 名が、 確認対象のユーザ名に追加される。
user リスト中のユーザ名が 確認対象のユーザ名に追加される。
guest only パラメータが 設定されていないと、 このリスト中のユーザ名を用いて、 送信されたパスワードの確認が行なわれる。 送信されたパスワードが最初に一致したユーザが、 以降の処理に用いられる UNIX 上のユーザとして利用される。
guest only パラメータが 設定されているか、利用するユーザを決定できなかった場合、 共有で guest account が利用可能であれば、ゲストアクセスが行なわれ、 それ以外の場合はアクセスが拒否されることになる。
共有レベルのセキュリティでは、 どの UNIX 上のユーザを用いて、 アクセス権のチェックが行なわれるかの判断が、 非常に 複雑になる事態が想定される。 注意すること。
NOTE ABOUT USERNAME/PASSWORD VALIDATION のセクションも参照のこと。
これは、Samba 2.2 における デフォルトのセキュリティ設定である。 ユーザレベルのセキュリティにおいては、クライアントは最初に 正しいユーザ名とパスワード(username map パラメータを使ってマッピングしたものでもよい)で 「ログオン」を行なう必要がある。 このセキュリティレベルでは、 暗号化パスワード( encrypted passwords パラメータを参照のこと) も使うことができる。 user や guest only のようなパラメータを利用して、この接続で利用する UNIX 上のユーザを変更することもできるが、 これはユーザ認証に成功した後で、行なわれる。
注意 : 要求されたリソース名は、 サーバがクライアントの認証に成功するまで サーバに送られない。 そのため、ユーザレベルのセキュリティでは、 サーバ上で不明なユーザを自動的に guest account として処理するようにしない限り、 ゲスト共有がうまく動作しない。 上記処理の詳細については、 map to guest パラメータを参照のこと。
NOTE ABOUT USERNAME/PASSWORD VALIDATIONのセクションも併せて参照のこと。
このモードの場合、 Samba はまず NTマシンのような別の SMB サーバに ユーザ名とパスワードの認証を依頼する。 これに失敗すると、security = user と同様に処理を行なうが、 暗号化パスワードで認証処理が行なわれていると、 Samba 上で UNIX パスワードファイルでの認証(平文認証) に戻れなくなるため、 ユーザの認証は smbpasswd ファイルで 行なう必要がある。 設定方法の詳細は、docs/ ディレクトリ中の ENCRYPTION.txtを参照のこと。
注意: クライアントからは、 security=server と security=user とは同一である。 このパラメータは、 サーバがどのように認証を行なうかにのみ影響し、 クライアントとのやりとりには何ら影響しない。
注意 : 要求されたリソース名は、 サーバがクライアントの認証に成功するまで サーバに送られない。 そのため、ユーザレベルのセキュリティでは、 サーバ上で不明なユーザを自動的に guest account として処理するようにしない限り、 ゲスト共有がうまく動作しない。 上記処理の詳細については、 map to guest パラメータを参照のこと。
NOTE ABOUT USERNAME/PASSWORD VALIDATIONのセクションも併せて参照のこと。
password server パラメータと encrypted passwords パラメータも参照のこと。
このモードは、smbpasswd(8) コマンドで、 マシンを Windows NT ドメインに参加させている時のみ 正しく動作する。 このモードでは、encrypted passwords パラメータを true にすることが求められる。このモードでは、 Samba は認証要求を Windows NT のプライマリ、 もしくはバックアップドメインコントローラに対して、 Windows NT Server と全く同様の方法で依頼する。
注意: ファイルアクセスを行なう際に、 Samba は UNIX 上のアカウントを用いる必要があるため、 ドメインコントローラ上のアカウントだけでなく、 UNIX 上のアカウントも依然として存在する必要がある。
注意: クライアントからは、 security=domain と security=user とは同一である。 このパラメータは、 サーバがどのように認証を行なうかにのみ影響し、 クライアントとのやりとりには何ら影響しない。
注意 : 要求されたリソース名は、 サーバがクライアントの認証に成功するまで サーバに送られない。 そのため、ユーザレベルのセキュリティでは、 サーバ上で不明なユーザを自動的に guest account として処理するようにしない限り、 ゲスト共有がうまく動作しない。 上記処理の詳細については、 map to guest パラメータを参照のこと。
BUG: 現在の security = domain の実装では、 マルチバイトの文字セットのユーザ名の扱いにバグがある。 ドメインコントローラとの通信は Unicode で行なう必要があるが、 現在の Samba は、マルチバイトのユーザ名の Unicode 処理を 正しく行なえないため、 マルチバイトのユーザ名はドメインコントローラ上で 正しく認識されない。 この問題は、将来のリリースで修正される。
NOTE ABOUT USERNAME/PASSWORD VALIDATIONのセクションも併せて参照のこと。
password server パラメータと encrypted passwords パラメータも参照のこと。
デフォルト: security = USER
設定例: security = DOMAIN
このパラメータは、 Windows NT クライアント上から、 NT 上のセキュリティダイアログボックスを使って UNIX ファイルのパーミッションを操作するときに、 どのパーミッションビットを変更可能にするかを制御する。
このパラメータは、 変更されるパーミッションのビットに対する(AND操作を行なう) マスクとして機能するため、 マスク中に含まれないビットに対する変更操作が制限される。 言い替えれば、 マスク中で 0 と指定されたビットは、 ユーザが変更できないビットとなる。
明示的に設定されていない場合、 このパラメータの値は 0777 になる。これは、 ファイルの user/group/world パーミッションのすべてについて、 ユーザからの変更を許可する。
Samba を経由せずサーバにアクセスできるユーザは、 簡単にこの制限を回避できるため、 このパラメータは、単体のアプライアンスシステムに対して 便利である。 ほとんどの一般的なシステムの管理者は、 おそらく 0777 に設定することであろう。
force directory security mode と directory security mask および force security mode パラメータも参照のこと。
デフォルト: security mask = 0777
設定例: security mask = 0777
このパラメータは、プリンタマネージャにおける プリンタのコメント欄および net view における IPC 接続の隣に表示される 文字列を設定する。 ここにはユーザに表示させたい任意の文字列を設定することができる。
このパラメータは、 ブラウズリストでコンピュータ名の隣に表示される 文字列も制御する。
%v は Samba のバージョン番号に置換される。
%h は ホスト名に置換される。
デフォルト: server string = Samba %v
設定例: server string = University of GNUs Samba Server
set directory = no の場合、 サービスの利用者が、 ディレクトリ変更のための setdir コマンドを使えなくなる。
setdir コマンドは Digital Pathworks クライアントにおいてのみ実装されている。 詳細については、Pathworks の説明書を参照のこと。
デフォルト: set directory = no
このパラメータは、ファイルオープン中の共有モードの制御を 有効にするかどうかを設定する。 このモードは、 ファイルへの排他的な読み出し又は書き込みアクセスを得るために、 クライアントによって利用されるものである。
これらのモードは、UNIX では提供されていないため、 共有メモリ、共有メモリをサポートしていない場合はロックファイル(共有メモリはほとんどすべてのUNIXでサポートされている)で疑似的に実現されている。
このオプションで有効化される共有モードは DENY_DOS、DENY_ALL, DENY_READ、DENY_WRITE, DENY_NONE、DENY_FCB である。
このオプションは共有機能の互換性を保つため、 デフォルトで有効になっている。
このパラメータは、 絶対に off にしてはならない。 off にした場合、 多くの Windows アプリケーションが誤動作するであろう。
デフォルト: share modes = yes
この真偽値パラメータは、 すべて大文字で適切な長さの 8.3 形式を満たすファイル名を 大文字のファイル名にして作成するか、 default case パラメータにしたがった文字の大きさで作成されるかを指定する(訳注: 実際は、8+3 形式の名前において大文字小文字の混在を容認するか、規定値の文字の大きさに統一するかを制御する)。 このオプションは、 preserve case = yes を用いて長いファイル名の文字の大きさを維持させるのと同様に、 短いファイル名における文字の大きさを維持するために利用する。
NAME MANGLINGセクションも参照のこと。
デフォルト: short preserve case = yes
Samba 2.2 での Windows NT/2000 クライアントに対する MS-RPC ベースのプリンタサポート機能のサポートによって Samba ホスト上の共有一覧で "プリンタ" フォルダが表示されようになっている。 通常、このフォルダにはプリンタの追加ウィザード (MS Add Printer Wizard (APW))のアイコンが存在している。 しかし、接続したユーザの権限に関わらず、 この機能を無効にすることも可能である。
通常の場合、Windows NT/2000 クライアントは Administrator 権限を持っているかどうかを確認するために、 OpenPrinterEx() 関数により プリンタサーバ上のハンドルをオープンしようとする。 ユーザにプリンタサーバ上での管理者権限がない場合 (root でなく、printer admin グループの メンバでもない)、 OpenPrinterEx() の呼出は失敗して、 client は低い権限でも可能な別の関数呼出を行なう。 これに成功しても、APW のアイコンは表示されない。
show add printer wizard パラメータを無効にすることにより、サーバ上での OpenPrinterEx() 呼出が常に失敗するようになる。 そのため、APW のアイコンは決して表示されなくなる。 注意 :このパラメータは、ユーザが個々のプリンタの管理権限を持つことを制限するものではない。
addprinter commandや deleteprinter command、 printer adminを参照のこと。
デフォルト :show add printer wizard = yes
このオプションは、 暗号化された smbpasswd ファイルへのパスを設定する。 デフォルトの smbpasswd ファイルへのパスは、 Samba のコンパイル時に設定される。
デフォルト: smb passwd file = ${prefix}/private/smbpasswd
設定例: smb passwd file = /etc/samba/smbpasswd
このオプションは、 Samba がどのアドレスで接続を listen するかを設定する。 これは、サーバ上で複数の仮想インタフェースを用いる必要があり、 各々のインタフェース上で 異なる構成の Samba を動作させる際に利用できる。
デフォルトの場合、 Sambaはどのアドレスからのアクセスでも受け付ける。
設定例: socket address = 192.168.2.20
このオプションは、 クライアントとの通信に利用されるソケットオプションを設定する。
ソケットオプションは、 OS のネットワーク層の接続に影響し、 通信の最適化に利用されるものである。
このオプションは、 ローカルなネットワークにおける Samba サーバの性能の最適化に用いられることが多い。 Samba 自身がネットワークにおける最適のパラメータを知るすべはないので、 このオプションは、自分自身で実験して設定しなければならない。 設定を行なう前に、使用している OS の適切なドキュメント (恐らく man setsockopt が役立つだろう) を読むことを強く推奨する。
システムによっては、このオプションを設定すると、 Samba が「Unknown socket option」というメッセージを 返却することに気づくかも知れない。 この原因は、ミスタイプか、使用している OS で includes.h に include ファイルを追加する必要があるかのいずれかであろう。 後者の場合は、 samba@samba.org までパッチを送ってほしい。
サポートされているソケットオプションについては、 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 という形式で指定する。 = 記号の前後に空白を入れてはいけない。
ローカルネットワーク上のホストの場合、 might be
socket options = IPTOS_LOWDELAY と設定するのがよいであろう。
ローカルネットワークが存在する場合は以下の設定を試してみるとよいであろう:
socket options = IPTOS_LOWDELAY TCP_NODELAY
WAN の場合は、 IPTOS_THROUGHPUT を設定してみるとよいかも知れない。
これらのオプションの中には、 Samba サーバを完全に停止させるものもあるかもしれない。 オプションを設定する際には気をつけること。
デフォルト: socket options = TCP_NODELAY
設定例: socket options = IPTOS_LOWDELAY
このパラメータにより、指定したファイルを使って Samba に環境変数を設定することが可能になる。
パラメータの値が "|" (パイプ)で始まる場合、 Sambaは後に続く値をパイプコマンドとして扱い、 コマンドの出力を環境変数として設定する。
ファイルの内容やパイプの出力は、標準的な UNIX の env(1) コマンドの出力形式になっている必要がある。 以下、形式を示す。
入力形式の例:
SAMBA_NETBIOS_NAME = myhostname
デフォルト: デフォルト値はない
設定例: source environment = |/etc/smb.conf.sh
設定例: source environment = /usr/local/smb_env_vars
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数は、SSL モードを有効にするか、無効にするかを制御する。 noに設定した場合は SSL を有効にした Samba であっても、通常の非 SSL 対応の Samba と 全く同じ動作になる。 yes、 に設定した場合、 SSL 接続が要求されるかどうかは、 ssl hosts と ssl hosts resignパラメータの 値による。
デフォルト: ssl = no
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数は、CA(認証局)の情報が格納されている場所を指定する。 ディレクトリ内には、Sambaが信頼する各 CA 毎にファイルが存在している筈である。 なお、CAのファイル名は "Distinguished Name" のハッシュ値になっている必要がある。 このディレクトリを設定する方法については、 この文書の後の方で説明している。 CA 情報の格納形式に合致しないファイルはすべて無視される。 クライアントの証明書を認証しないのであれば、 この変数を設定する必要はない。
デフォルト: ssl CA certDir = /usr/local/ssl/certs
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数は、信頼する CA を定義するためのもう1つの方法であり、 信頼する CA の証明書を 1つの大きなファイルに集め、 この変数でそのファイルを指定する。 CA を設定する際には、いずれか片方だけを使うことになるだろう。 最初の方法は、 多くの CA を設定する場合や、柔軟性を高めたい場合によい。 2番目の方法は、 持っている CA が1つだけで、設定を簡単にしたい (ハッシュしたファイル名を作りたくない)場合によい。 クライアントの証明書を認証しないのであれば、 この変数を設定する必要はない。
デフォルト: ssl CA certFile = /usr/local/ssl/certs/trustedCAs.pem
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数は、SSL のネゴシエーション中に提示される暗号化方式を指定する。 動作を理解していない限り、この変数を明示的に設定すべきではない。
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
このファイル中の証明書は、 smbclient(1) によって使われるものである。 サーバがクライアント側に証明書を要求する時に必要となる。
デフォルト: ssl client cert = /usr/local/ssl/certs/smbclient.pem
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
これは、 smbclient(1)の秘密鍵である。 これが必要となるのは、 クライアント側からの証明書の提示を必須とする場合のみである。
デフォルト: ssl client key = /usr/local/ssl/private/smbclient.pem
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数は、 他の SSL 実装のバグに関する互換性を持つように OpenSSL が configure された場合に設定する。 現在は OpenSSL 以外に SSL が実装されたクライアントが存在しないため、 おそらく設定が必要になることはないであろう。
デフォルト: ssl compatibility = no
This variable is part of SSL-enabled Samba. This is only available if the SSL libraries have been compiled on your system and the configure option --with-ssl was given at configure time.
This option is used to define the location of the communiation socket of an EGD or PRNGD daemon, from which entropy can be retrieved. This option can be used instead of or together with the ssl entropy file directive. 255 bytes of entropy will be retrieved from the daemon.
Default: none
This variable is part of SSL-enabled Samba. This is only available if the SSL libraries have been compiled on your system and the configure option --with-ssl was given at configure time.
This parameter is used to define the number of bytes which should be read from the ssl entropy file If a -1 is specified, the entire file will be read.
Default: ssl entropy bytes = 255
This variable is part of SSL-enabled Samba. This is only available if the SSL libraries have been compiled on your system and the configure option --with-ssl was given at configure time.
This parameter is used to specify a file from which processes will read "random bytes" on startup. In order to seed the internal pseudo random number generator, entropy must be provided. On system with a /dev/urandom device file, the processes will retrieve its entropy from the kernel. On systems without kernel entropy support, a file can be supplied that will be read on startup and that will be used to seed the PRNG.
デフォルト: none
ssl hosts resign を参照のこと。
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
これら2つの変数では、 Samba が SSL モードで機能するかどうかが設定される。 どちらも定義されていない場合は、Samba は SSL 接続のみを受け付ける。 ssl hosts 変数で ホストが(IPアドレス、IPアドレスの範囲、 ネットグループ、名前などにより) 指定されている場合、 これらのホストについては強制的に SSL モードで動作する。 ssl hosts resign 変数でホストが指定されている場合、 これらのホストについては強制的に 非 SSL モードで動作する。 アクセスの可否を指定するか、 SSL 利用の可否を指定するかという点で目的は違うが、 これら2つの変数の書式は、 hosts allow および hosts deny 変数と同じである。
以下の例は、ローカルネットワーク(192.168.*.*)以外からの 接続については SSL 接続を要求する場合のものである。
デフォルト: ssl hosts = <設定されていない>
ssl hosts resign = <設定されていない>
設定例: ssl hosts resign = 192.168.
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数が yes の場合、 サーバは正当な証明書を持っていないクライアントからの接続を許可しない。 クライアントの証明書を発行した CA を検索する際には、ssl CA certDir と ssl CA certFile で設定されたディレクトリやファイルが、 用いられる。 証明書が正しく確認されない限り、接続は切断される。 この変数が no の場合、 クライアントは証明書を必要としない。 Web アプリケーションの場合とは異なり、 クライアントの証明書を要求するべき である。 Web 環境では、クライアントのデータは、 厳重に取り扱うべきものなので(クレジットカードの番号など)、 サーバは信頼できることを証明しなければならない。 ファイルサーバの環境では、 サーバのデータは厳重に取り扱うべきものなので、 クライアントは信頼できることを証明しなければならない。
デフォルト: ssl require clientcert = no
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
この変数が yes の場合、 smbclient(1) はサーバに対して証明書の提示を要求する。サーバ側の ssl require clientcert と同様である。
デフォルト: ssl require servercert = no
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
このパラメータは、サーバの証明書を含むファイルを指定する。 サーバには、証明書が存在している必要がある。 このファイルは、サーバの秘密鍵を含んでいてもよい。 証明書と秘密鍵がどのように作成されるかについては、 後述する。
デフォルト: ssl server cert = <設定されていない>
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
このパラメータは、サーバの秘密鍵を含むファイルを指定する。 この変数が定義されていない場合、鍵は証明書ファイルから取得される (秘密鍵が、証明書に附属しているものとみなされる)。 サーバには、秘密鍵が存在している必要があり、 証明書は、その秘密鍵に対応している必要がある。
デフォルト: ssl server key = <設定されていない>
これは、SSL化したSambaのパラメータである。 このパラメータは、 SSL ライブラリがシステムに存在して、 --with-ssl が configure 時に指定されていた場合にのみ有効である。
注意: 輸出制限のため、このコードは現存する Samba のバイナリでは、 有効になっていない。
この変数は、利用する SSL プロトコルのバージョンを設定する。 ssl2or3 の場合は、SSL v2 と v3 の ネゴシエーションを動的に行なう。 ssl2 は SSL v2、 ssl3 は SSL v3、 tls1 は TLS v1 利用する。 TLS (Transport Layer Security) は新しい SSL の標準である。
デフォルト: ssl version = "ssl2or3"
このパラメータは、 smbd(8)が、 大文字小文字を区別しない名前のマップ操作を高速化するために キャッシュを利用するかどうかを決める。 このパラメータを変更する必要はないであろう。
デフォルト: stat cache = yes
このパラメータは、 stat cacheに格納できる エントリ数の上限を設定する。 このパラメータを変更する必要はないであろう。
デフォルト: stat cache size = 50
このパラメータは、 接続状態を smbstatus(1) の利用するステータスファイルに記録するかどうかを制御する。
無効にした場合、smbstatusは アクティブなコネクションの表示ができなくなる。 このパラメータを変更する必要はないであろう。
デフォルト: status = yes
この真偽値パラメータは、 サーバ上のディスク領域の割当を制御するものである。 このパラメータが yes の場合、 サーバは、ファイルが拡張されただけでは実際のディスク領域を割り当てない UNIX 流の動作をやめ、 ファイルがあるサイズで作成されたり、拡張されたりした際に、 実際にディスク領域を割り当てる Windows 流の動作を行なうようになる。 これは、Samba がスパースファイルを作成しなくなることを意味する。 これにより、システムによっては処理が遅くなる。
strict allocate が no の場合、 サーバは、ファイルの拡張時にディスク領域の割当を行なわない。
このパラメータを yes にすると、 ディスククオータによるディスク領域の制限を行なっているシステムで、 クォータ超過メッセージを出力する際には便利である。
デフォルト: strict allocate = no
これは、 サーバ上でのロックの扱いを制御する真偽値のパラメータである。 yesに設定された場合、 サーバはすべての読み書きのアクセスについて、 ファイルのロック状態を検査し、 ロックされている場合はアクセスを拒否する。 システムによっては、アクセス速度の低下につながるだろう。
strict locking がnoの場合、 サーバは、クライアントが明示的に要求したときに限って、 ファイルのロック状態の確認を行なう。
行儀のよいクライアントは、 重要な操作を行ない際には必ずロックの状態を問い合わせる。 従って、大抵の場合は strict locking = no のほうがよい。
デフォルト: strict locking = no
(Windows 98 の Explorer を含む) 多くの Windows アプリケーションは、 バッファのデータをフラッシュする処理を、 ディスクに対し、同期を行う処理と取り違えているようである。 UNIX における同期処理は、 カーネル内のディスクバッファに残っているデータが 無事に記憶装置へ保存されたことをカーネルが確認するまで、 プロセスを停止させる。 この処理は非常に遅く、頻繁に行うべきではない。 このパラメータを no(デフォルト) に設定すると、 smbd は Windows アプリケーションからの同期処理要求を無視する。 この場合でも、データが失われる可能性があるのは、 Samba が動作しているオペレーティングシステム自身が クラッシュしたときだけであるので、 この設定による危険度は少ない。 また、報告されている Windows 98 の Explorer を使ったファイルコピー のパフォーマンス問題も改善される。
sync always> パラメータも参照のこと。
デフォルト: strict sync = no
このパラメータは、現在の Samba (2.2.5 以降)では利用されない。 このパラメータは、UNIX ファイル名からドットを取り除くために用いられてきたが、適切な実装が行なわれていなかった。 Samba 2.2.5 以降では、ドットで終る UNIX ファイル名は、(Windows NT 以降と同様に) 不正な Windows の長いファイル名として扱われ、クライアントに返却される前に、 8+3 形式の名前に短縮される。
デフォルト: strip dot = no
この真偽値パラメータは、 書き込み時に 不摘発性の記憶装置への書き込みとの 同期を行なうかどうかを制御する。 false の場合、 サーバは個々のクライアントからの書き込み要求に 基づいて、同期を行なうかどうかを制御する (クライアントは個々の書き込みについて、 同期要求を行なうことが可能である)。 true の場合、 個々の書き込みに毎に、 データを確実にディスクに書き込むため fsync() が呼び出される。 このパラメータが機能するには、 strict syncパラメータが yesに設定されている必要がある。
strict sync パラメータも参照のこと。
デフォルト: sync always = no
このパラメータは、 Samba のデバッグメッセージと syslog のプライオリティとの対応づけを行なう。 Samba のデバッグレベル 0 は、 syslogのLOG_ERRに割り当てられ、以下、 デバッグレベル 1 は LOG_WARNING、 デバッグレベル 2 は LOG_NOTICE、 デバッグレベル 3 は LOG_INFO、 それ以上のデバッグレベルは LOG_DEBUG にそれぞれ割り当てられている。
このパラメータは どのデバッグレベルまでのメッセージを syslog に送るかのしきい値を設定する。 この値未満の Samba のデバッグメッセージのみが syslog に送られる。
デフォルト: syslog = 1
このパラメータが設定されると、 Samba のデバッグメッセージが システムの syslog にのみ記録されるようになり、 デバッグログファイルに出力されなくなる。
デフォルト: syslog only = no
Windows NT のユーザに対するユーザ情報を作成する際に、 winbindd(8) デーモンは、 このパラメータによってユーザのホームディレクトリの位置を設定する。 文字列 %D があれば、 ユーザのWindows NTにおけるドメイン名に置き換えられる。 文字列 %U があれば、 ユーザのWindows NTにおけるユーザ名に置き換えられる。
デフォルト: template homedir = /home/%D/%U
Windows NT のユーザに対するユーザ情報を作成する際に、 winbindd(8) デーモンは このパラメータによってユーザのシェルを設定する。
デフォルト: template shell = /bin/false
このパラメータは、GMT からローカル時間への変換時に追加する時間(分単位)を設定する。 夏時間処理に問題があるPCを多数管理している際に有効である。
デフォルト: time offset = 0
設定例: time offset = 60
このパラメータは、 nmbd(8) が 自身を Windows クライアントに対するタイムサーバとして アナウンスするかどうかを制御するものである。
デフォルト: time server = no
debug timestampの同義語である。
この数値パラメータは、システム全体で 同時に受け付け可能な印刷ジョブの最大数を規定する。 クライアントから送られた印刷ジョブがこの数値を越えると、 smbd はサーバ上に空き領域がないというエラーを返却する。 デフォルト値は 0 で、これは制限がないことを意味する。 このパラメータにより、サーバのディスクが喰い潰されて プリンタが停止状態に陥ることを回避できる。 max print jobsも参照のこと。
デフォルト: total print jobs = 0
設定例: total print jobs = 5000
この真偽値パラメータは、Samba が HP社によって定義された CIFS の UNIX拡張を利用するかどうかを制御する。 これらの拡張は、UNIX クライアントから UNIX サーバに対して接続する際に有用な CIFS を有効にし、 シンボリックリンクやハードリンクなどを利用可能にする。 これらの拡張は、クライアント側においても有効となっている必要があるが、 現在の Windows クライアントでは有効になっていない。
デフォルト: unix extensions = no
この真偽値パラメータにより、 smbpasswd ファイルの暗号化された SMBパスワードの更新時に、 Samba が UNIX のパスワードを SMB パスワードと 同期させるようになる。 これを true に設定した場合、 (SMB パスワードの変更コードは古い平文パスワードを参照できず、 新しいパスワードだけが渡されるため、) 新しい UNIX パスワードを古いパスワードの情報なしで設定するため、 passwd program パラメータで指定されたコマンドが root権限で呼び出される。
passwd programと passwd chatも参照のこと
デフォルト: unix password sync = no
この真偽値パラメータにより、 平文パスワードでログインしてきたユーザは、 ログオン時に自動的に smbpasswd ファイル中の暗号化(ハッシュ化)パスワードを更新するようになる。 このオプションにより、暗号化パスワード認証を有効にする際、 ユーザに smbpasswd へのパスワード再入力を強制することなく、 平文パスワード認証 (平文パスワードによるユーザ認証情報がネットワーク上を流れて UNIX 側のアカウントデータベースで照会される)から 暗号化パスワード認証(SMB のチャレンジアンドレスポンス認証) への移行を行うことが可能になる。 これは便利なオプションで、 ある程度の時間をかけて 徐々に暗号化パスワードへと移行することを可能にする。 すべてのユーザが smbpasswd ファイルに暗号化パスワードを 格納したら、 このパラメータを no に設定すべきだろう。
このパラメータを正しく動作させるため、 パラメータを yes に設定している時は、 encrypt passwords パラメータを必ずno に設定しておくこと。
このパラメータが有効になっている場合でも、 (smbpasswdファイルの)パスワードが更新するためには、 smbd に接続するユーザが 正しいパスワードを入力する必要がある。
デフォルト: update encrypted = no
このパラメータは、Windows NT/2000 クライアントに対してのみ影響し、 Windows 95/98/Me クライアントに対しては影響しない。 Windows NT/2000 クライアントに対して、 Samba ホスト上に適切なプリンタドライバをインストールせずに、プリンタ共有を提供する場合、 クライアント側ローカルにプリンタドライバをインストールする必要がある。 このため、クライアントは、そのプリンタをローカルプリンタとして扱い、 ネットワークプリンタとしては扱わなくなる。 これは、disable spoolss = yesにしたときとほぼ同様の動作になる。
違いが発生するのは、通常の環境下において、 NT/2000 クライアントは MS-RPC を用いてネットワークプリンタをオープンしようとする点になる。 クライアントはプリンタがローカルにあると判断しているため、 ログオンしているユーザに割り当てられたアクセス権を要求して OpenPrinterEx() 呼出を発行してしまう点が問題となる。 ユーザがローカルで管理者権限を持っているが、Samba ホスト上では root 権限を持っていない場合(これはよくあるケースになる)、 OpenPrinterEx() 呼出は失敗する。 その結果、(印刷ジョブが正常に印刷されているにも関わらず、) クライアント側のプリンタキューのウインドウには、 「Access Denied; Unable to connect」というメッセージが表示される。
このパラメータが有効になっているプリンタに対しては、 PRINTER_ACCESS_ADMINISTER 権限によるプリンタのオープンの試みはすべて、 PRINTER_ACCESS_USE の権限で行なわれ、 これにより、OpenPrinterEx() が成功することになる。 適切なプリンタドライバがインストールされている Samba サーバ上のプリンタ共有に対して、このパラメータを有効にしてはならない。
disable spoolssも参照のこと。
デフォルト: use client driver = no
このパラメータは、Samba が内部的に利用する tdb の動作を、 システムで mmap が正しく動作するかどうかに依存させるかどうかを制御する。 Samba は一貫性の保たれた mmap (read-write system memory cache) を必要とする。 現在、HPUX については、こうした一貫性のあるキャッシュが実装されていないため、 HPUX におけるこのパラメータのデフォルトは、false になっている。 それ以外のシステムにおいては、このパラメータの値を変更すべきではない。 このパラメータは、Samba 開発者の tdb の内部コードの問題解析を支援するために提供されている。
デフォルト: use mmap = yes
このグローバルパラメータを true に設定した場合、 UNIX ユーザのホームディレクトリにある .rhosts ファイルが読み込まれ、 ここに名前があるホストとユーザからのアクセスは、 パスワードなしで行われるようになる。
注意: use rhosts の利用は 大きなセキュリティホールになりうる。 これは、PCに正しいユーザ名を提供させることを前提としているためである。 PC に誤ったユーザ名を提供させることは簡単である。 use rhosts オプションは、 この設定の影響を把握できる場合にのみ利用すること。
デフォルト: use rhosts = no
usernameの同義語である。
usernameの同義語である。
このパラメータに 複数のユーザをコンマで区切ったリストで指定することにより、 各ユーザ名に対して(左から右に)順番に 入力したパスワードを用いた認証が行われる。
username は、 PC側からユーザ名が提供されない時にのみ必要である。 これに該当するのは、COREPLUS プロトコルを用いているか、 Windows for Workgroup 側のユーザ名が UNIX 側のユーザ名と異なっている場合である。 どちらの場合も、このパラメータの代わりに \\server\share%user の記法を用いるのが好ましい。
Sambaは username パラメータで指定された 各ユーザに対して順番に、 提供されたパスワードを用いた認証を行っていくことになるため、 usernameは最適の解決策とはいえない。 これは遅い上、 パスワードが重複しているユーザが多数存在しているような場合には 困ったことになる。 このパラメータを不用意に使うと、 タイムアウトやセキュリティ上の問題などが発生するかも知れない。
Samba は プラットフォームである UNIX のセキュリティ機構に依存している。 このパラメータは、ログインできるユーザを制限するものではなく、 提供されたパスワードに対応するユーザのヒントを Samba サーバに与えるものである。 ユーザは自分が好むユーザとしてログインすることが可能であるが、 telnet セッションよりは、被害を与えないだろう。 デーモンはログインしたユーザの権限で動作するため、 ユーザの権限で行えないことは何も行えない。
サービスへのアクセスを特定のユーザに制限したい場合は、 valid users パラメータを利用すること。
ユーザ名が '@' ではじまっている場合は、 (Samba がネットグループをサポートするようにコンパイルされている場合) まず NIS のネットグループ、更に UNIX のグループデータベースにおいて、該当する名前のグループがないかが検索され、 その名前のグループに所属する全てのユーザ名に展開される。
ユーザ名が '+' から始まっている場合は、 UNIX のグループデータベースのみが検索され、 その名前のグループに所属する全てのユーザ名に展開される。
ユーザ名が '&' から始まっている場合は、 (Samba がネットグループをサポートするようにコンパイルされている場合) NIS のネットグループのみが検索され、 その名前のグループに所属する全てのユーザ名に展開される。
グループ名の検索には時間が掛かるため、 クライアントによっては 検索がタイムアウトしてしまう場合があることに注意。
このパラメータにより、 サービスへのアクセスがどのように行われるかの詳細については NOTE ABOUT USERNAME/PASSWORD VALIDATION のセクションを参照のこと。
デフォルト: ゲストサービスの時は、 guest account で設定されたアカウント。 それ以外の場合は <なし>
設定例:username = fred, mary, jack, jane, @users, @pcgroup
このオプションは、 DOSクライアントの多くが送信する大文字化されたユーザ名から、 Samba が本当の UNIX のユーザ名を「推測」する際の 手助けを行う。 デフォルトの場合、 Samba は全て小文字のユーザ名、 先頭の文字のみを大文字にしたユーザ名を順に試しても、 UNIX マシン上に該当するユーザ名がない場合は処理を失敗させる。
このパラメータに 0 以外の値を指定することで、 この処理を変更できる。 このパラメータは、UNIX 側のユーザ名を確認する際に 大文字が幾つ入ったユーザ名の組合せまで 確認を行なうかを決定するものである。 大きい数字を指定する程、多くの組合せが確認されるため、 ユーザ名の確認作業は遅くなる。 このパラメータは、UNIX マシン上に AstrangeUser といった名前が存在する際に利用すること。
デフォルト: username level = 0
設定例: username level = 5
このオプションは、 クライアント上とサーバ上でのユーザ名のマッピング情報を格納した ファイルを指定する。 これは幾つかの目的で利用される。 通常は DOS や Windows マシンでユーザが利用しているユーザ名を UNIX マシン上でのユーザ名にマッピングする為に用いられるが、 複数のユーザを特定のユーザ名にマッピングすることで、 ユーザ間でのファイル共有を簡単に行なえるようにするため 用いることも可能である。
ファイルは各行ごとに評価される。 各々の行は、左端に UNIX ユーザ名があり、'=' を挟んで、 その右側にユーザ名のリストが続く形式をとる。 右側のユーザ名のリストには、 グループ内のすべての UNIX ユーザ名に一致させる @group という形式を含めることもできる。 '*' はワイルド・カードであり、任意の名前と一致する。 ファイルの各行は最大 1023 文字まで記述可能である。
ファイルの評価は、 提供されたユーザ名と '=' の右側の各ユーザ名とを 各行毎に比較することにより行なわれ、 提供されたユーザ名が右側のどれかに一致すると、 その名前がユーザ名に置き換わり、 引続きに以降の行の処理が行なわれていくことになる。
'#' や ';' で始まる行は無視される。
'!' ではじまる行はがあると、 以降の行でユーザ名が一致した時点で比較処理は中止される。 それ以外の場合、この比較処理はすべての行に対して継続される。 ファイルの最後で ワイルドカードによるマッピングを行なっている場合に、 '!' を使うとかなり便利である。
たとえば、admin や administrator といった名前から UNIX の root へのマッピングを行ないたい場合は、 下記のように記述する:
root = admin administrator
また、UNIX グループの system に所属するユーザを sys という UNIX ユーザに置き換えるには、 以下のように記述する:
sys = @system
このファイル中には 幾つのマッピングの設定を行なっても構わない。
システムが NIS の NETGROUP オプションをサポートしている場合、 グループ名のマッチングを行なう際には、 /etc/group データベースより先に ネットグループのデータベースが調べられる。
空白を含む Windows のユーザ名は、 ダブルクォートで両側を括って記述する。 たとえば、
tridge = "Andrew Tridgell"
は、Windows のユーザ名 "Andrew Tridgell" を UNIX のユーザ名 "tridge" に置き換える。
以下の例は、 mary と fred を UNIX ユーザ sys に置き換え、 そのほかのユーザを guest に置き換える。 '!'を利用することで、 マッチした行以降の処理を抑止していることに注意。
!sys = mary fred guest = *
ユーザ名が現われる箇所全てに置き換えの結果が適用されることに注意すること。 例えば、\\server\fred に接続する場合、 fred が mary に置き換えられる場合は、 実際に接続する先は \\server\mary であり、パスワードも fred ではなく、mary のものを入力することが必要になる。 この唯一の例外は、(設定している場合に) password server に対してユーザ名を送出するときである。 password server は、 クライアントが提供したユーザ名を修正なしでそのまま受け取る。
逆のマッピングは行われないことにも注意すること。 この影響が現われるのは印刷時である。 Windows for Workgroup におけるプリントマネージャは、 置き換えが行われたユーザが 印刷ジョブを所有していないと判断するため、 印刷ジョブ削除時にトラブルが発生する。
デフォルト: username map は設定されていない
設定例: username map = /usr/local/samba/lib/users.map
この真偽値パラメータは、 Sambaが --with-utmp オプションで configure され、コンパイルされた時にのみに有効である。 このパラメータを true に設定することで、 Sambaは utmp または utmpxレコード(UNIXシステムに依存)に、 Sambaサーバへの接続時の情報を追加するようになる。 このパラメータにより、 Sambaの共有への接続を記録することが可能になる。
utmp directory パラメータも参照のこと
デフォルト値: utmp = no
このパラメータは、 Sambaが --with-utmp オプションで configure され、コンパイルされた時にのみに有効である。 このパラメータは、 Sambaサーバへの接続を記録する utmp または utmpx ファイル (UNIXシステムに依存)が存在するディレクトリを指定する。 utmp パラメータも参照のこと。 デフォルトではこの値は設定されない。 この場合、システムが利用している utmp ファイルが使われる (Linux の場合、通常 /var/run/utmp にある)。
デフォルト値: なし
このオプションは、 サーバ上でファイル名として有効とみなす文字の 追加指定を行なうものである。 これは、u-umlaut や a-ring のような、 各国固有の文字を利用する際に特に有益である。
このオプションは、 スペースによって区切られた数値または文字のリストである。 コロンによって区切られた2文字は、 小文字:大文字 のペアとして扱われる。
任意の文字を設定ファイルに書き込むことのできるエディタがあれば、 これを利用して書き込むのが最も簡単である。 それ以外にも、通常の C 言語の記述方式を使って 8進数、10進数、16進数で文字を指定することも可能である。
たとえば、'Z' という1文字を追加する場合 (これは既に存在しているので実質的な意味はない)、 下記のいずれかの設定を行えばよい。
valid chars = Z valid chars = z:Z valid chars = 0132:0172
後半二つの例は、2つの文字を追加することで、 大文字と小文字のマッピングが適切に行なわれている。
client code page パラメータも併用する場合は、 必ず、 valid chars パラメータの方を後に設定すること。 client code page を valid chars パラメータの後で設定した場合、 valid chars の設定は上書きされてしまう。
client code page パラメータも参照のこと
デフォルト: 英語環境で有効な文字が、 Samba のデフォルトとして設定されている
設定例: valid chars = 0345:0305 0366:0326 0344:0304
上記の例は、スウェーデン語用の文字を ファイル名に利用できるようにする設定である。
注意: 特定のシステム用に、valid chars を適切に設定するのは、実際のところ困難である。 この処理を自動化するために、 tino@augsburg.netが validchars という パッケージを作成している。 これは該当のクライアントシステムに必要な、全ての valid chars の設定を自動で生成する。 このパッケージに付いては、 Samba のソースコード中の examples/validchars/ サブディレクトリを参照のこと。
サービスにアクセスできるユーザのリストを指定する。 '@'、'+'、'&' からはじまる名前は、 invalid users パラメータで説明した規則にしたがって解釈される。
このパラメータが設定されていない場合(既定値)、 どのようなユーザでもログインできる。 このリストと invalid users の両方に含まれるユーザのアクセスは拒否される。
%Sは、 現在のサービス名に置き換えられる。 これは [homes] セクションで用いると便利である。
invalid users も参照のこと
デフォルト: リストは存在しない(だれでもアクセスできる)
設定例: valid users = greg, @pcusers
このパラメータは、 一覧することもアクセスすることもできないファイルと ディレクトリのリストを指定する。 リストの各エントリは '/' で区切ること。これにより、 エントリ中に空白文字を用いることが可能になっている。 '*'と '?'は DOS のワイルドカードと同様、 複数のファイルやディレクトリを指定するために利用できる。
各エントリはDOSの形式ではなく、 UNIXでのパス形式である必要があり、 UNIX のディレクトリ区切りである '/'を含めてはならない。
case sensitive オプションが、 この処理に影響することに注意。
veto files パラメータの利用に際して注意すべき重要な点が、 ディレクトリ削除時の動作である。 削除されるディレクトリに veto files パラメータに一致するファイルのみが存在する場合、 delete veto files パラメータが yes でない限り、削除は失敗する。
このパラメータを設定した場合、 ファイルやディレクトリの一覧を取得する際、 すべてのファイルとディレクトリについて、 このパラメータのマッチング処理が行なわれるようになるため、 Samba の性能に影響が発生する。
hide files と case sensitive パラメータも参照のこと。
デフォルト: アクセスできないファイルやディレクトリはない
設定例:
; Veto any files containing the word Security, ; any ending in .tmp, and any directory containing the ; word root. veto files = /*Security*/*.tmp/*root*/ ; Veto the Apple specific files that a NetAtalk server ; creates. veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
このパラメータは、oplocks パラメータが有効になっている共有でのみ意味がある。 Samba の管理者は、このパラメータを使って リストにマッチしたファイルに対する oplock 取得を禁止することができる。 リストは veto files パラメータで利用されているものと同様の形式である。
デフォルト: oplock 取得を禁止されたファイルやディレクトリはない
クライアントによるロック競合が激しいファイルに対して、 このオプションを適用したいということがあるだろう。 よい例に NetBench SMB ベンチマーク・プログラムがある。 このプログラムは 「.SEM」 で終わる名前のファイルに対して激しい競合を発生させる。 これらのファイルに対する oplock を禁止するためには、 以下のように指定する ([global] セクションか、 Net Bench 用の共有のいずれかにおいて):
設定例: veto oplock files = /*.SEM/
このパラメータは、 Samba の VFS I/O操作において用いられる共有オブジェクトを指定する。 デフォルトでは通常のディスクI/O操作が行なわれるが、 VFS オブジェクトによりこの操作を変更することが可能である。 Samba の VFSレイヤは Samba 2.2の新機能であり、 --with-vfs オプションによりコンパイル時に有効にする必要がある。
デフォルト: なし
このパラメータは、 初期化時にVFSレイヤに渡すパラメータを設定する。 Samba の VFSレイヤは Samba 2.2の新機能であり、 --with-vfs オプションによりコンパイル時に有効にする必要がある。 vfs objectも参照のこと。
デフォルト: なし
このパラメータにより、 共有のボリュームラベルの設定が可能になる。 これは、特定のボリューム名が必要なインストールプログラムを格納したCD-ROMを共有する際に便利である。
デフォルト: 共有名
このパラメータは、 UNIXファイルシステム上のリンクをサーバが追跡するかどうかを制御する。 サーバが公開するディレクトリツリー内部へのリンクは、 常に許可されている。このパラメータは、 公開されているディレクトリツリー外部へのアクセスを制御する。
このパラメータを no に設定すると、 リンク先のチェックを行なうための余分なシステムコールを 実行する必要があるため、 サーバのパフォーマンスに悪影響を及ぼすことに注意。
デフォルト: wide links = yes
このパラメータは、 winbindd(8) デーモンが Windows NT サーバに問い合わせを行なわずに ユーザとグループの情報をキャッシュする時間を秒単位で指定する。
デフォルト: winbind cache type = 15
非常に大規模な環境下で winbindd(8)を利用する際には、 setpwent(), getpwent() や endpwent() といったシステムコール群の呼び出しによる ユーザの一覧取得を抑止する必要があるかも知れない。 winbind enum users パラメータが false の場合、getpwent システムコールの呼び出しは 全くデータを返却しない。
警告: ユーザ一覧(enumeration)を無効にすると幾つかのプログラ ムについては異常動作を引き起こす恐れがある。 例えば、finger プログラムは、全てのユーザのリストにアクセスできる前提で、 ユーザ名のマッチングを行なっている。
デフォルト: winbind enum users = yes
非常に大規模な環境下で winbindd(8)を利用する際には、 setgrent(), getgrent() や endgrent() といったシステムコール群の呼び出しによる グループの一覧取得を抑止する必要があるかも知れない。 winbind enum groups パラメータが false の場合、getgrent システムコールの呼び出しは 全くデータを返却しない。
警告: グループ一覧(enumeration)を無効にすると幾つかのプログラ ムについては異常動作を引き起こす恐れがある。
デフォルト: winbind enum groups = yes
winbind gid パラメータは、 winbindd(8) デーモンが割り当てるグループIDの範囲を指定する。 予期しない競合が発生しないようにするため、 このグループIDの範囲に ローカルなグループやNISのグループが存在しないようにすること。
デフォルト: winbind gid = <空文字列>
設定例: winbind gid = 10000-20000
このパラメータは、DOMAIN \userの形式で ユーザ名を一覧する際に利用される区切り文字を指定する。 このパラメータは UNIXのサービスが pam_winbind.so および nss_winbind.so モジュールを利用するときにのみ利用される。
+ 文字は NIS において /etc/group 中で特別な意味を持っているため、 このパラメータを + に設定した際は、 少なくとも glibc システムにおいては問題が発生する。
デフォルト: winbind separator = \
設定例: winbind separator = +
winbind uid パラメータは、 winbindd(8) デーモンが割り当てるユーザIDの範囲を指定する。 予期しない競合が発生しないようにするため、 このグループIDの範囲に ローカルなユーザやNISのユーザが存在しないようにすること。
デフォルト: winbind uid = <空文字列>
設定例: winbind uid = 10000-20000
このオプションは、 winbindd(8) デーモンが、 ドメイン名が付加されていないユーザ名をどのように扱う方式を制御する。 ドメイン名が付加されていないユーザは、winbindd サーバのドメインのものとして扱われる。 これは、Windows ユーザにとってはどちらでもよい話であるが、 SSH、FTP や e-mail を利用する際に、 UNIX システム本来のやり方に近い方法を利用することを可能にする。
デフォルト: winbind use default domain = <falseg>
設定例: winbind use default domain = true
Samba がWINSサーバとして動いている時、 このオプションによって、 WINSデータベースに対して変更が行なわれる度に 外部のプログラムが起動されるようになる。 このオプションの主な目的は、 ダイナミックDNSのような外部の名前解決データベースの動的な更新を実現することである。
wins hook パラメータは、 以下の形式で呼びだされるスクリプト又は実行形式のプログラムを指定する。
wins_hook operation name nametype ttl IP_list
最初の引数は操作の指定であり、 "add"、"delete"、"refresh" のいずれかを取る。 ほとんどの場合、残りのパラメータで適切な情報を提供することにより、操作を無視することが可能である。 "refresh" は名前がまだ追加されていない時点で呼び出されることがある。
2番目の引数は、NetBIOS名である。 名前が不正な場合、wins hook は呼び出されない。 正しい名前は文字、数字、ハイフン、 アンダースコアとピリオドのみからなる。
3番目の引数は NetBIOS名のタイプで、2桁の16進数である。
4番目の引数は 名前の TTL(生存時間) で秒数単位である。
5番目以降の引数は、その名前で現在登録されているIPアドレスである。 リストが空の場合、名前は削除される。
BINDのダイナミックDNS更新プログラムである nsupdate を呼び出すスクリプトのサンプルが、 Samba ソースコードの examples ディレクトリに格納されている。
この真偽値パラメータは、nmbd(8) が別のホストの代理として ブロードキャストによる名前問い合わせに応答するかどうかを 制御する。 古いクライアントの為に、このパラメータをyes にする必要があるかも知れない。
デフォルト値: wins proxy = no
このパラメータは、 nmbd(8) が名前を登録する先のWINSサーバのIPアドレス (もしくはDNS名: IPアドレスが望ましい)を指定する。 ネットワークに WINSサーバが存在している場合は、 このパラメータをWINSサーバのIPアドレスに設定すること。
複数サブネットからなるネットワークの場合は、 このパラメータでWINSサーバを指定すべきである。
注意: 複数のサブネットからなるネットワークで、 サブネット越しのブラウジングを正しく機能させたい場合は、 SambaでもWINSサーバの設定を行なうこと。
Samba ソースディストリビューション中の docs/ ディレクトリにある、 BROWSING.txt を参照のこと。
デフォルト値: not enabled
設定例: wins server = 192.9.200.1
この真偽値パラメータは、 Samba の nmbd(8) プロセスを WINS サーバとして機能させるかどうかを制御する。 複数サブネットからなるネットワークでない場合や、 いずれかの nmbd を WINS サーバとして 指定する必要がない場合は、 このパラメータを true に設定しないこと。 決して ネットワーク上の複数のマシンで、 このパラメータを true にしないこと。
デフォルト値: wins support = no
クライアントから問い合わせがあった時に、 どこのワークグループにサーバを所属させるかを制御する。 このパラメータは、 security = domain の設定で使われるドメイン名の指定にも使われることに注意。
デフォルト: コンパイル時に WORKGROUP に設定される
設定例: workgroup = MYGROUP
writeableの同義語である。 正しく綴れない人の為に :-)
この数値パラメータを0以外に設定すると、 Sambaは oplock された各ファイルに対してメモリキャッシュを作成するようになる (oplock されないファイルに対しては 行なわれない 。 クライアントがディスクへの書き出しを直接要求していない書き込みは全て、 可能な限りこのキャッシュに蓄積される。 キャッシュはキャッシュに適さない位置からの書き込みが行なわれた時か、 ファイルがクライアントによってクローズされた時に書き出される。 データがキャッシュ中に存在していれば、 ファイルからの読み出しにキャッシュが使用される。
Sambaは、このキャッシュにより、 RAIDディスクに対して適切な書き込みサイズでクライアントからの書き込みを処理できるようになり (例えば、書き込みサイズをRAIDのストライプサイズに合わせる)、 ディスクサブシステムがボトルネックとなっているが、 ユーザ空間のプログラム向けの空きメモリがあるシステムのパフォーマンスを向上させることができる。
デフォルト値: write cache size = 0
設定例: write cache size = 262144
これはファイルあたり 256k のキャッシュサイズを確保する設定である。
サービスに対して読み書き権が与えられるユーザのリストである。 接続したユーザがこのリストに存在している場合は、 例えwriteable オプションがnoであっても書き込み権が与えられる。 このリストには、 @group という形式を用いることでグループ名を含めることもできる。
read list と write list の両方にいるユーザには、 書き込み権が与えられることに注意。
read list オプションも参照のこと。
デフォルト値: write list = <empty string>
設定例: write list = admin, root, @staff
writeableの同義語である。
このパラメータは、 クライアントからのデータ転送時に、 サーバ側がraw write SMBのサポートを行なうかどうかを制御する。 このパラメータを変更してはいけない。
デフォルト値: write raw = yes
read onlyの反意語である。
このパラメータがnoの場合、 サービス内ではファイルの作成も修正もできない。
印刷サービス(printable = yes)の場合、 ユーザは常に(アクセス権を持っている) ディレクトリに対して書き込むことが可能であるが、 書き込みはスプール操作経由に限られる。
デフォルト値: writeable = no
設定ファイルでは、スペースを含むサービス名も利用できるが、 クライアント側のソフトウェアで禁止されているかもしれない。 文字列比較を行なう際にスペースは常に無視されるため、 問題は発生しないはずであるが、可能性は考慮しておく必要がある。
同様の注意事項として、多くのDOSクライアント、 特にDOSクライアントでは、サービス名が最長8文字に制限されている。 smbd(8) にはそのような制限はなく、 こうしたクライアントからの接続要求は、 サービス名が切り捨てられてしまうために失敗することになる。 このため、サービス名の長さは、最大8文字に制限すべきである。
[homes] および [printers] といいう特殊セクションにより、 管理者の負担を軽減することができるが、 デフォルトの設定の組合せ方によっては、 予期しない設定が行なわれる可能性もある。 これらのセクションの設定を行なう際には、特に注意深く行なうこと。 特にスプールディレクトリのパーミッションが適切であることを 確認しておくこと。
samba(7), smbpasswd(8), swat(8), smbd(8), nmbd(8), smbclient(1), nmblookup(1), testparm(1), testprns(1)
オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell によって作成された。現在 Samba は Samba Team によって、 Linux カーネルの開発と同様の オープンソースプロジェクトとして開発が行なわれている。
オリジナルの Samba マニュアルページは Karl Auer によって作成された。 マニュアルページは YODL 形式( ftp://ftp.icce.rug.nl/pub/unix/ で入手可能な優れたオープンソースソフトウェア) に変換され、 Samba 2.0 リリースに伴い、Jeremy Allison によって更新された。 Samba 2.2 における DocBook 形式への変換は、 Gerald Carter によって行なわれた。