smb.conf — Samba の設定ファイル
smb.conf
ファイルは Samba
システムの設定ファイルである。smb.conf
には、Samba システムの各プログラムが実行時に参照する設定情報が記述される。
以下参照目的で、ファイルの形式と設定可能なパラメーターに関して網羅的に記述する。
Samba システムには多数の異なったプログラムが含まれている。そのうちのいくつかは、クライアント
モードで動作し、その他は種々のサービスをクライアントに提供するサーバデーモンである。
smb.conf
ファイルは以下の方法で処理される:
Samba システムのクライアントアプリケーションは設定を1回だけ読み込む。起動開始後の 変更はすでに動いているクライアントプログラムのコンテキストには反映されない。
Samba システムのサーバデーモンは、要求されたときに設定ファイルをリロードする。しかし、 すでに有効な接続をしているものについては、設定を変更しない。詳細については、 smbd(8) と winbindd(8) のマニュアルページに記載がある。
Samba のサーバデーモンに対して、設定ファイルの更新要求を行うには、 smbcontrol(1) ユーティリティを使用すること。
ファイルはセクションとパラメーターから構成される。セクションは、 大括弧(「[」 と 「]」) で囲まれたセクション名で始まり、次のセクションが始まるまで 続く。セクション内には以下の形式でパラメーターが記述される:
パラメーター名(パラメーター)
=パラメーター値(値)
ファイルは行を基本単位とし、改行で終了する各行は、コメント、 セクション名、パラメーターのいずれかを表す。
セクション名およびパラメーター名は大文字と小文字を区別しない。
パラメーターを示す行では、最初の 「=」 文字に重要な意味がある。 最初の 「=」 文字の前後の空白文字は破棄される。 セクション名およびパラメーター名の先頭、 途中、末尾にある空白文字は 無視される。パラメーター値の先頭と末尾にある空白文字も無視される。 ただし、パラメーター値の途中にある空白文字はそのまま意味を持つ。
セミコロン (「:」)、シャープ (「#」) で始まる行や、空白のみの行は 無視される。
「\」 文字で終わる行は、UNIX の慣習通り次の行へ継続する。
「=」文字に続くパラメーター値には、文字列 (引用符で囲む必要はない)、または真偽値を表す、yes/no、0/1、true/false のいずれかを記述する。真偽値の場合、大文字と小文字は同じ意味だが、 記述されたとおりの文字列が保存される。 create mask など、幾つかのパラメーター値は数値となる。
設定ファイル中の ([global] セクションを除く) 各セクションでは、 共有リソース (単に「共有」とも呼ぶ (訳注: 「サービス」とも呼ばれる)) の設定が行なわれる。 セクション名は共有リソース名となり、 セクション内のパラメーターは共有の設定に利用される。
[global]、[homes]、[printers] という 3 つの特殊なセクションに ついては、特殊なセクション で説明する。 以下の説明は、通常のセクションについてのものである。
共有の設定としては、大きくアクセスを許可するディレクトリの設定と それを利用するユーザーに対するアクセス許可の設定とがある。 その他いくつかの補助的なオプションの指定も可能である。
セクションは、ファイル共有サービス (クライアントからファイルシステムの延長として利用される) とプリントサービス (クライアントからサーバー上で動作している 印刷サービスにアクセスするために利用される) のいずれかに分類される。
セクションは、パスワードなしでアクセスできる ゲスト サービスとして構成することもできる。 この場合、UNIX 側で指定されたゲストアカウントの権限でアクセスが 行なわれる。
ゲストサービス以外のセクションにアクセスするにはパスワードが 必要である。通常クライアントからはユーザー名も提供されるが、 年代物のクライアントはパスワードのみでユーザー名を提供しないため、 「user =」 パラメーターで指定したユーザーのリストを用いてパスワードの検証を 行なうことも可能である。Windows 95/98/Me/NT/2000 のような最近の クライアントでは、このパラメーターは不要である。
Samba より与えられたアクセス権は、システムより UNIX ユーザー (またはゲストユーザー) に与えられたアクセス権によって制限されることに注意して欲しい。 Samba はシステムが許可する以上のアクセス権を許可することはできない。
以下の簡単なセクションは、ファイル共有を定義するものである。
ユーザーは /home/bar
に対して書き込みができる。 共有は、foo
という共有名でアクセス可能である:
[foo]
path = /home/bar
read only = no
以下の簡単なセクションは印刷サービスを定義するものである。 共有は読み取りのみであるが、印刷可能である。これは、 スプールファイルのオープン、書き込み、クローズという作業についてのみ書き込みが許可されるということである。guest ok パラメーターは、(別途定義された) デフォルトのゲストユーザーとしてアクセスが許可されていることを意味する:
[aprinter]
path = /var/tmp
read only = yes
printable = yes
guest ok = yes
このセクション中のパラメーターは、サーバー全体に対して、 もしくは各セクションで項目が定義していないときの既定値として 適用される。詳細な情報はパラメーター(PARAMETERS)の節を参照のこと。
homes セクションが設定ファイル中にあると、 接続してきたユーザーのホームディレクトリを共有するサービスが 必要時にサーバーによって作成されるようになる。
接続の要求が行なわれると、存在するセクションが検索される。 要求に合致するセクションが見つかった場合はそのセクションが 利用される。見つからなかった場合は、 要求されたセクション名をユーザー名とみなしてローカルのパスワードファイルが検索される。 ファイル中に名前が存在して、パスワードが適切だった場合、 [homes] セクションの設定を引き継ぐ形で共有が作成される。
新しく作成される共有に対しては、 幾つかの変更が行なわれる:
共有名は、homes からユーザー名に変更される。
path パラメーターが設定されていなかった場合、 ディレクトリのパスはユーザーのホームディレクトリに設定される。
path = 行を [homes] セクションに記述した場合、"%S" マクロを用いると便利になる 場合があるかも知れない。以下に一例を示す:
path = /data/pchome/%S
これは、UNIX からのアクセスと PC からのアクセスとでホームディレクトリが異なる場合に便利である。
これは多数のクライアントに対するホームディレクトリの 提供を最小の手間で素早く簡単に実現する方法である。
要求されたセクション名が 「homes」 の場合にも同様の処理が行われるが、共有名が要求したユーザーの 名前に変更されることはない。 [homes] セクションを使用する 方法は、複数のユーザーがクライアント PC を共有する場合に 便利である。
[homes] セクションでは、通常のサービスで指定可能な すべてのパラメーターを指定できるが、幾つかのものは他の セクションと少し違った意味になる。以下は典型的な [homes] セクションの例である:
[homes]
read only = no
重要な点として、[homes] セクションでゲストアクセスを許可した場合、 全てのホームディレクトリが全てのクライアントから パスワードなしで アクセス可能になるという点が挙げられる。 ほとんどあり得ないと思うが、もしこの設定を実際に行なうのであれば、読み取り専用 アクセスの設定にしておくことが好ましいであろう。
自動的に作成されるホームディレクトリの browseable パラメーターの値は、[homes] セクションの browseable パラメーターからではなく、[global] セクションの browseable パラメーターより継承される。これは、 [homes] セクションで browseable = no を指定して [homes] 共有を不可視にしても、自動的に作成されるホームディレクトリを表示させるようにするための仕様である。
このセクションは、プリンター用の [homes] セクションに 相当する。
[printers] セクションが設定されていると、ユーザーは、 ローカルホストの printcap ファイルで設定されている各プリンターに接続することが可能となる。
接続の要求が行なわれると、存在するセクションが検索される。 要求に合致するセクションが見つかった場合はそのセクションが利用される。 見つからなかった場合、[homes] セクションがあれば前述した処理が行なわれる。 それでも要求が解決できない場合は、 要求されたセクション名をプリンター名とみなし、 適切な pritcap ファイルが検索され、 要求されたセクション名をプリンター共有名とみなすかどうかの 確認が行なわれる。ファイル中に名前が存在した場合は、 [printers] セクションの設定を引き継ぐ形でプリンター共有が 作成される。
新しく作成される共有に対しては、 幾つかの変更が行なわれる:
共有名には、実際のプリンター名が設定される。
プリンター名が設定されていない場合、 プリンター名として実際のプリンター名が設定される。
共有がゲストアクセスを許可しておらず、 username パラメーターも指定されていない場合、username に実際のプリンター名が設定される。
[printers] サービスは、必ず printable にすること。 それ以外の設定を行なうと、サーバーが設定ファイルの読み取りを 拒否してしまう。
通常指定されるパスは、sticky ビットが設定され、 誰でも書き込み可能になっているスプールディレクトリである。 典型的な [printers] のエントリーは次のようになる:
[printers]
path = /var/tmp
guest ok = yes
printable = yes
printcap ファイル中で定義されているすべてのプリンターの エイリアス(別名)は、プリンター名として認識される。 印刷システムが printcap ファイルのような機構を使用して いないのであれば、仮の printcap ファイルを設定する必要がある。 このファイルは以下のような形式の行で構成される:
alias|alias|alias|alias...
各エイリアスは、印刷システムが処理可能なプリンター名で ある必要がある。[global] セクションで、別のファイルを printcap ファイルとして指定することで、仮想的な printcap ファイル中にある名前のみがサーバーに認識される。 もちろんこのファイル中には任意のエイリアスを記述することが 可能である。このテクニックは、ローカルプリンターの一部のみに アクセスを制限する機能を簡単に実現するためにも利用できる。
なお、エイリアスとは printcap ファイル中の各レコードの
最初のエントリーに続く各要素をさす。
各レコードは改行コードで区切られ、各要素は (複数個存在する場合)
縦棒 (|
) で区切られる。
lpstat コマンドによりシステムで定義されている
プリンターの一覧を取得可能な SYSV 系のシステムでは、
printcap name = lpstat
とすることで、
プリンターの一覧を取得することが可能である。
詳細は、printcap name
オプションを参照のこと。
Samba 3.0.23 より、root 以外のユーザーが共有の追加、修正、削除を行なうことを可能とする機能が追加された。
この機能を ユーザー定義共有(usershares) と呼び、
smb.conf の セクションで定義される一連のパラメーターによって制御される。
関連するパラメーターを以下に示す :
ユーザー定義共有でゲストアクセスを許可するかどうかを制御する。
作成を許可するユーザー定義共有の最大数を制御する。
有効にすると、ユーザーが所有しているディレクトリのみが共有可能となる。
ユーザー定義共有を作成可能なディレクトリを指定する。 実際にユーザー定義共有を作成可能かどうかは、ファイルシステム上のディレクトリのパーミッションに依存する。
共有を許可するディレクトリの絶対パス名をコンマで区切って列挙する。 ここで指定されたパス名から始まるディレクトリのみが共有を許可される。
共有を拒否するディレクトリの絶対パス名をコンマで区切って列挙する。 ここで指定されたパス名から始まるディレクトリは共有を拒否される。
新しいユーザー定義共有を作成する際のテンプレートとなる既存の共有を指定する。 ユーザー定義共有の定義時に指定されなかったすべての共有に関するパラメーターは、この共有のものが用いられる。
UNIX グループ foo
のメンバーにユーザー定義共有の作成を許可したい場合は、
共有の定義ファイルを格納するディレクトリを以下のように作成する:
root 権限で以下を実施:
mkdir /usr/local/samba/lib/usershares chgrp foo /usr/local/samba/lib/usershares chmod 1770 /usr/local/samba/lib/usershares
ついで、以下のパラメーター
usershare path = /usr/local/samba/lib/usershares usershare max shares = 10 # (もしくは必要な共有数)
を smb.conf
の global セクションに追加。
これにより foo グループのメンバーは、以下のコマンドでユーザー定義共有を作成することが可能となる。
これにより、ユーザー定義共有を作成もしくは修正(上書き)する。
ユーザー定義共有を削除する。
ユーザー定義共有を一覧する。
ユーザー定義共有の情報を表示する。
パラメーターはセクションの属性を定義するものである。
幾つかのパラメーター (security など) は、 [global] セクションで指定する。また幾つかのパラメーター (create mask など) は、すべてのセクションで 利用可能である。それ以外のパラメーターは、通常のセクションでのみ 利用できる。以下の説明では、[homes] と [printers] セクションを "通常の" セクションとして扱う。(G) がついたパラメーターは、 [global] セクションでのみ指定できる。(S) がついたパラメーターは、個々のサービスを表すセクションで指定できる。 ただし、(S) がついたパラメーターは、[global] セクション中で指定することも可能である。この場合、それらはすべての サービスに対するデフォルト値として機能する。
パラメーターはアルファベット順に説明されている。 最良の順序とはいえないが、少なくとも目的のパラメーターを見つけることは できるだろう。同義語がある場合は、主として用いるべき表記の部分で 説明が行なわれ、他はその表記への参照になっている。
設定ファイルに記述可能な文字列の多くには、変数による置換を利用できる。 たとえば、「path = /tmp/%u」 は、john というユーザー名でユーザーが 接続すると、「path = /tmp/john」 として解釈される。
これら置換の詳細については、各々のパラメーターの説明にて 解説するが、どのパラメーターに対しても適用される共通の変数置換もいくつか 存在する。それらを以下に記載する:
セッションのユーザー名 (クライアントが接続時に 送信したものであるが、実際に接続したユーザー名と同じであるとは 限らない)。
%U のプライマリグループ。
Samba が動作しているマシンの インターネットホスト名。
クライアントマシンの NetBIOS 名 (とても便利)。
Samba がポート 445 で待機している場合、クライアントがこの情報を送信しないため、この変数は利用できない。
Samba がドメインコントローラーであるドメインで include パラメーターにおいてこの変数を用いている場合などは、
[global] セクションで smb ports = 139
の設定を行なうこと。
これにより Samba はポート 445 で待機しなくなり、Samba 2.X で実現していた include 機能が利用できる。
サーバーの NetBIOS 名。これを用いることで、 クライアントから呼ばれた名前に応じて設定を変更することが 可能となる。これによりサーバーは 「二つの顔」 を持つことができる。
クライアントマシンのインターネットホスト名。
プロトコルのネゴシエーションを経て選択された プロトコルレベル。これは CORE、COREPLUS、LANMAN1、LANMAN2、NT1、 SMB2_02、 SMB2_10、 SMB3_00、SMB3_02、SMB3_11 又は SMB2_FF のいずれかの値をとる。
サーバープロセスのプロセス ID。
リモートマシンのアーキテクチャ。
現在認識できるのは
Samba (Samba
)、
Linux の CIFS ファイルシステム (CIFSFS
)、
OS/2 (OS2
)、
Mac OS X (OSX
)、
Windows for Workgroups (WfWg
)、
Windows 9x/Me (Win95
)、
Windows NT (WinNT
)、
Windows 2000 (Win2K
)、
Windows XP (WinXP
)、
Windows XP 64-bit(WinXP64
),
2003R2 (Win2K3
)を含むWindows Server 2003 (Win2K3
)と,
Windows Vista (Vista
) である。
それ以外のものは 「UNKNOWN」 となる。
クライアントマシンの IP アドレス。
Samba 4.0.0以前では、これはIPv4マップIPv6アドレスを 含んでいても良かったが、現在は、IPv4かIPv6アドレスのみ含められる。
クライアントマシンのIPアドレス。 コロン/ドット は下線に変換される。
クライアントが接続してきたサーバーの IP アドレス。
Samba 4.0.0以前では、これはIPv4マップIPv6アドレスを 含んでいても良かったが、現在は、IPv4かIPv6アドレスのみ含められる。
クライアントが接続したローカルIPアドレス。 コロン/ドット は下線に変換される。
現在の日付と時間。
コロン無しの最小形式(YYYYYmmdd_HHMMSS)による現在の日付と時刻
現ユーザーが所属するドメインかワークグループ名。
Winbind のセパレーター
envvar
)環境変数envvar
の値。
以下の置換マクロは (すでに接続が確立されている場合に) いくつかの 設定オプションに対して有効なものである:
現在のサービス名 (存在する場合)。
現在のサービスのトップディレクトリ (存在する場合)。
現在のサービスのユーザー名 (存在する場合)。
%u のプライマリグループ。
%u で指定されたユーザーのホームディレクトリ。
この値は %L と同じである。
これらの置換操作とその他の smb.conf
のパラメーターを組み合わせると、非常に凝った動作を設定できる。
Samba は、DOS や Windows クライアントが 8.3 形式に準拠しない 名前のファイルを扱うことができるように 「名前の短縮」 機能を提供している。この機能により、8.3 形式のファイル名についても 文字の case (大文字、小文字) を調整可能である。
短縮時の動作を制御するパラメーターが幾つか存在しており、 それらは個々に解説を行なわず、ここでまとめて説明を行なう。 デフォルト値は testparm コマンドの出力を参照のこと。
以下のオプションは、すべて共有毎に設定できる (もちろん全体に対しても設定できる)。
オプションは以下の通りである:
ファイル名の case を識別するかどうかを制御する。 識別を行なわない場合、Samba は指定された名前に合致する ファイル名の有無を検索することが必要になる。デフォルトは auto であり、ファイル名の case を識別するクライアント(現在のところ Linux CIFSVFS や Samba 3.0.5 以降の smbclient) に対しては、case を識別する(UNIX の case を識別する挙動に準拠する) ファイルシステム上の Samba サーバーにアクセスしているものとして通知する。 Windows および DOS システムでは case を識別するファイル名はサポートされておらず、このパラメーターを auto に設定した場合、no の設定で動作する。 デフォルトは auto である。
新しく作成されるファイル(現在ファイルシステム上に存在していないファイル)のファイル名のデフォルトの case を制御する。 デフォルトは lower である。 重要: case sensitive = yes、 preserve case = No、 short preserve case = No の場合、このオプションにより、新しく作られるファイル名だけではなく、クライアントから渡される すべての ファイル名の case が変更されることに注意。 非常に多くのファイルを格納するディレクトリの最適化作業の一貫として、この設定変更が必要となる。
新しく作成されるファイル(現在ファイルシステム上に存在していないファイル)のファイル名について、クライアントから
渡された case で作成するか、デフォルト
の case
で作成するかを制御する。
デフォルトは yesである。
すべて大文字で適切な長さの 8.3 形式に
準拠した新しく作成されるファイル(現在ファイルシステム上に存在していないファイル)のファイル名について、大文字で作成するか、
デフォルト
の case で作成するかを制御する。
このオプションにより、preserve case = yes
で長いファイル名が case を保持する設定の時であっても、
短いファイル名は小文字で作成するといったことが可能になる。
デフォルトは yes である。
Samba 3.0 のデフォルトは、Windows NT のサーバーと同様に動作する。 すなわち、case を識別しないが case は保持する。 ただし、大量のファイルが存在するディレクトリにおいては、case 関連のパラメーターを "case sensitive = yes"、"case preserve = no"、"short preserve case = no" に設定するとよいであろう。 これにより、"default case" パラメーターが有効になり、クライアントから送信されるすべてのファイル名が変更される。 (訳注: 上記設定は、case sensitive = yes によりファイル名の検索を抑止することで、パフォーマンスを向上させようとする意図だと思われる)
Sambaのバージョン 3.2.0 から、レジストリ中にSambaの設定を
格納する機能が有効になった。Sambaの設定は、レジストリキー
HKLM\Software\Samba\smbconf
中に格納される。
レジストリベースの設定は2つのレベルがある。
レジストリに共有の定義を格納する。
これは、smb.conf中のグローバル
パラメーターregistry shares
を「yes」に設定することで利用可能になる。
レジストリ定義の共有はスタートアップ時にはロードされ ないが、smbdによって、実行時に動的に ロードされる。smb.conf中の共有定義 はレジストリ中での同じ名前の共有定義に優先する。
グローバルなsmb.conf オプションをレジストリに格納する。これは,以下の2つの異なった 方法で有効にできる:
1番めは、smb.conf中の [global]セクション中のconfig backend = registryを設定することで、レジストリのみの 設定を有効にできる。これは,この時点まで読み込んだ設定ファイ ルの内容をすべてリセットし、レジストリからグローバルセク ションの内容を読む。これは、レジストリベースの設定方法を使う 時の推奨方法である。
2番目はsmb.confの[global] セクション中の、特別に新しい意味を持つ、include = registryパラメーターによって有効にできる 混成設定方法である。これは,テキストファイルをインクルード するのと同じような優先度で、レジストリからグローバルオプ ションを読む。これは,初期設定がレジストリにアクセスするのに 必要な場合に特に有益である。
グローバルレジストリオプションの有効化は、レジストリ ベースの共有が有効になることで自動的に行われる。そのため、 レジストリのみの場合、共有は要求時にのみロードされる。
レジストリベースの設定に伴うシステムの破壊を限定的にするために、
レジストリでの設定中では、lock directory
と
config backend
の使用は無効化
されることに注意。
特に、レジストリでの設定中に、lock directory
を
変更してしまい、それがいったん有効化されてしまうと、
デーモンからはそれの設定自体が見えなくなる、壊れた設定を作成することになる。
レジストリベースの設定は、キーHKLM\Software\Samba\smbconf
を
regeditやnet (rpc)
registryを使ってアクセスすることもできる。
利便性のため、net(8)ユーティリティ
のconfサブコマンドが、レジストリ
ベースの設定をローカルに読み書きするための特別なインタフェース
として提供されている。すなわち、データベースファイルに直接
アクセスし、サーバーを迂回できる。
SMBプロトコル中では、ユーザ、グループとコンピュータは、それぞれのセキュリティ識別子(SID) によって表現される。POSIXシステム上での Samba プロセスは、ある POSIX ユーザと 補助的な グループ 権限を持つファイルにアクセスするため、そのユーザIDとグループ配下で動かす必要がある。 SID から POSIX ユーザとグループへのマッピングプロセスは、IDENTITY MAPPING、 あるいは単に、ID MAPPINGと呼ばれる。
Samba は、複数の、SID から POSIX ユーザとグループへのマッピング方法をサポートしている。 設定は、各ドメインごとに分離された、ID マッピング (idmap) オプションを指定できる idmap config DOMAIN : OPTION オプションによって行う。
SID を POSIX ユーザとグループ情報にマッピングするID マッピングモジュールには、 複数の変換方式があり、さまざまな利用状況に適用出来る。 使用する際の、個別の想定を選ぶ前に、各IDマッピングモジュールのドキュメント を読むことを推奨する。各IDモジュールは、個別のマニュアルページとして用意 されている。標準の idmap バックエンドは tdb (idmap_tdb(8)), tdb2 (idmap_tdb2(8)), ldap (idmap_ldap(8)), rid (idmap_rid(8)), hash (idmap_hash(8)), I autorid (idmap_autorid(8)), ad (idmap_ad(8)), nss (idmap_nss(8)), and rfc2307 (idmap_rfc2307(8)) である。
全体として、ID マッピングの設定は、注意深く決める必要がある。すでに運用中のID マッピングの設定を変更する ことは、データへのアクセスが出来なくなったり、誤った利用者にデータが見えてしまうと言うリスクを発生させる かもしれない。
以下の例は、既定値の ID マッピング方法を tdb のままにしつつ、 idmap_rid(8) を使って、プリンシパルドメイン(principal domain) と、信頼されたドメイン ( trusted domain) という2つのドメインを設定する方法を示す。
This example shows how to configure two domains with idmap_rid(8), the principal domain and a trusted domain, leaving the default id mapping scheme at tdb.
[global] security = domain workgroup = MAIN idmap config * : backend = tdb idmap config * : range = 1000000-1999999 idmap config MAIN : backend = rid idmap config MAIN : range = 5000000-5999999 idmap config TRUSTED : backend = rid idmap config TRUSTED : range = 6000000-6999999
このパラメーターは、 smbd(8) が呼び出すことで、 shutdown script によって実行されたシャットダウン処理を停止させるスクリプトのフルパス名である。
接続しているユーザーが SeRemoteShutdownPrivilege
権限を保持している場合、このコマンドは root 権限で呼び出される。
既定値: abort shutdown script
= ""
例: abort shutdown script
= /sbin/shutdown -c
あるサービスに対してこのパラメーターが yes
であれば、
そのサービスで提供される共有は、
(net view \\sambaserver などで)共有の一覧表示が行われる際に、
共有に対して読み取りもしくは書き込みアクセス許可のあるユーザー以外から参照されなくなる。
これは Access-based Enumeration (訳注:Windows Server 2003 SP1 以降に導入された、アクセス許可のないフォルダーを非表示にする機能)と同等の機能である。
主な違いは、共有に対するアクセス許可のみが評価され、共有内のファイルのセキュリティ識別子は、一覧表示の際の参照可否の確認には使用されないことである。
既定値: access based share enum
= no
この真偽値パラメータは、Windows クライアントから、"open for execution" 要求のプロトコルを受け取ったときの、smbd(8) の動作を制御する。 Samba 3.6以前は、ACL中の実行許可はチェックされないため、クライアントは、 ファイルに実行許可がついていなくても、ファイルを実行できる。 Samba 4.0からはこの問題は修正され、既定値、すなわちパラメータが "False"に 設定されている場合、"open for execution" は、実行パーミッションが設定されて いない場合、拒否する。
もしもこのパラメータが、"True" に設定された場合、Sambaは open for execution" において、実行パーミッションをチェックしないので、Samba 3.6の動作と同じになる。 これは、古い Samba バージョンから、4.0以降へ、スムースにアップグレードするのに 便利に使える。この設定は、恒久的な設定として使われることを意味しないが、 一時的な救済としての意味合いはある。ACL 中のパーミッションを修正し、適切な 移行期間後にパラメータを既定値にすることを推奨する。
既定値: acl allow execute always
= no
このパラメーターはSamba 3.6.2 ではすでに使用されておらず、将来のSambaバージョン において削除されることに注意。
この真偽値パラメーターは、 smbd(8) が Windows クライアントから「open for delete」というプロトコル要求を受けとった際の挙動を制御する。 Windows クライアントにファイル削除のパーミッションがない場合は、オープン時に失敗することが想定される挙動である。しかし、POSIX システムでは、実際にファイルやディレクトリを削除しようとした段階で、初めて削除のパーミッション確認が行なわれる。 Windows クライアントは「delete on close」ビットを外すことで、削除のリクエストを「取り止める」ことが可能である。 このため、Samba が「open for delete」リクエストが行なわれた時点で該当のファイルを削除してみるといった方策も、 一度削除されたファイルを復活させることはできないため難しい。 このパラメーターが true (デフォルト) の場合、smbd は「open for delete」リクエストの際にファイルシステムのパーミッションを直接チェックし、 ファイルシステムのパーミッション上削除できないと考えられる場合、該当のリクエストを拒否するようになる。 これは完全な方法ではなく、Samba がパーミッションを適切に確認できない場合に、ユーザーがファイルを削除できてしまう可能性があるが、 大半の場合は Windows と同様の挙動となるであろう。 通常 Samba は POSIX ACL の挙動を適切に確認できるはずである。
このパラメーターを「false」に設定した場合、Samba は「open for delete」リクエストの際にパーミッションの確認を行なわずにオープンを許可する。 ユーザーにファイルを削除するアクセス許可がない場合は、クローズする時までわからない。 Windows 上のツールにとって、クローズ時点でこれが判明しても遅過ぎるため、ユーザーにエラーメッセージが表示されるだろう。 また、削除したように見えたファイルが Windows 側のエクスプローラーで再表示すると「魔法のように」復活するといった現象も発生するであろう。 これは非常に高度なプロトコルに関するパラメーターであり、通常変更する必要はないはずである。 このパラメーターは Samba 3.0.21 で現在の形となったが、現在とは若干挙動が異なる古い版は Samba 3.0.20 で導入された。古い版の挙動について、ここでは言及していない。
既定値: acl check permissions
= yes
このオプションは、Active Directory 要求に関して、Samba で セキュリティ記述子の評価を処理する方法を制御する。Windows 2012 で導入された AD 要求は、基本的に管理者が定義する key-value ペアで あり、Active Directory(Kerberos PACを介して通信) とセキュリティ 記述子自体の両方で設定できる。
Active Directory 要求は Samba 4.20 で新しくなった。 要求はセキュリティ記述子内の非常に柔軟な式言語に対して 評価されるため、このオプションは、管理者が必要とする場合に このロジックを無効にするメカニズムを提供する。
この既定の動作では、AD DC でのみ要求の評価が有効になる。また、 AD DC での要求の評価は、DC の機能レベルが 2012 以上の場合にのみ 有効になる。 ad dc functional level を参照のこと。
取り得る値は以下の通り:
AD DC only
: Samba AD
DC (DC 機能レベルが 2012 あるいはそれ以降用)用に有効化。
never
: 全ての場合で無効。
このオプションは、AD DC で Windows 2012R2 機能レベルの認証
ポリシー機能と認証ポリシーサイロ機能の一部を無効にする。
既定値: acl claims evaluation
= AD DC only
このオプションは、Samba がファイルおよびディレクトリのセキュリティ記述子を 設定するクライアント要求を処理する方法と、セキュリティ記述子フラグ "DACL auto-inherited"(DI) に対する操作の影響を制御する。通常、 このフラグは、親ディレクトリに DI セットがあり、継承可能な ACE もある場合、 作成時にファイル(またはディレクトリ)に設定される。
一方、セキュリティ記述子がファイルに明示的に設定されている場合、フラグ "DACL Inheritance Required"(DR) が新しいセキュリティ記述子にも 設定されていない限り(念のため,DR はディスクに格納されない)、DI フラグはクリアされる。
これは、このオプションが有効な場合(既定値)の既定の動作である。このオプションを
no
に設定すると、ディスク上の DI フラグの結果の値は、
設定されるセキュリティ記述子の DI の値から直接取得される。これを使用すると、
acl_xattr VFS モジュールによって作成された ACL を表す xattrs から
data blob をコピーする rsync などのダンプツールによって、ソースと同一の
ACL のコピーが作成されるようになる。このオプションを使用しない場合、コピー
された ACL がソースに設定されていると、DIフラグがすべて解除される。
既定値: acl flag inherited canonicalization
= yes
POSIX ファイルシステムでは、ファイルまたはディレクトリの所有者とスーパーユーザーのみがファイルのパーミッションや ACL を修正できる。 このパラメーターを有効にすると、Samba はこの制約を無視して、 ファイルやディレクトリの プライマリグループ所有者 が、 ファイルのパーミッションや ACL を修正することを可能とする。
Windows サーバーでは、グループがファイルやディレクトリの所有者となることができるため、 そのグループに所属する誰もがパーミッションを修正することができる。 これにより、ディレクトリのグループ所有者が、ファイルシステムのある地点以下のセキュリティ管理を委任することが可能となり、 その配下に作成されるファイルやディレクトリについても、そのグループが所有者となる。
このパラメーターにより、公開されたディレクトリ階層内で Samba が Windows と類似した制御の制御を行なうことを可能とする。 これは、UNIX グループのメンバー全員がグループ所有者となっているファイルやディレクトリのパーミッション制御を行なうことが可能となることを意味する。
このパラメーターは、inherit owner パラメーターが有効で、 ディレクトリに UNIX の setgid ビット が設定された共有で用いる のが最適であり、共有内に作成される新しいファイルやディレクトリに、 親ディレクトリのグループ所有者を継承させることが可能となる。
このパラメーターは、Samba 3.0.23 において、廃止予定の(deprecated)パラメーターとなった。
しかし、Samba 3.0.31以降で復活し、ユーザーが、所有するプライマリグループ中にいるとき、
パーミッションの変更を制御するのみになった。もはや
dos filemode
オプションとは異なる。
既定値: acl group control
= no
この真偽値パラメーターは、 smbd(8) が POSIX の ACE エントリでは最大のアクセス権を許可した状態である「rwx(read/write/execute)」を Windows 側の ACL の「フルコントロール」に対応づけるかどうかを制御する。 このパラメーターを true に設定した場合、POSIX ACE で「rwx」のエントリに対して、Windows 側の ACL としては「フルコントロール」が返却される。 このパラメーターが false に設定された場合、POSIX ACE で「rwx」のエントリに対して、 Windows 側の ACL としては read/write/execute を表すビットを設定したエントリが返却される。
既定値: acl map full control
= yes
このパラメータの値(文字列)は、このドメインコントローラがサポートを要求する Active Directory の機能レベルである。
取り得る値は以下の通り :
2008_R2
: Windows
2008 R2 機能レベルと同等
2012
: Windows
2012 機能レベルと同等
2012_R2
: Windows
2012 R2 機能レベルと同等
2016
: Windows
2016 機能レベルと同等
通常 Samb aは Samba Active Directory ドメインコントローラのリリース された機能に従って動作するため、このオプションは設定すべきでない。
ただし、ドメイン機能レベル 2016 の不完全な機能にアクセスするには、 ドメイン機能レベルをアップグレードする前にこの値を設定すると便利な場合がある。
これを手動で設定すると、ドメインコントローラ間の機能の不一致に対する保護が 軽減されるため、すべてのドメインコントローラで同じバージョンの Samba を実行して、 どの DC に接続してもクライアントから見た動作が同じになるようにする必要がある。
これを2016
に設定すると、
samba-tool domain level raise --domain-level=2016
で
ドメインの機能レベルを上げることができ、Samba の Kerberos Claims および
Dynamic Access Control 機能へのアクセスが提供される。
2016
で有効にした Samba の
Kerberos Claims と Dynamic Access Control 機能は
Samba 4.19 では不完全である。
既定値: ad dc functional level
= 2008_R2
例: ad dc functional level
= 2016
このパラメーターは、新しいグループの作成が要求された際に、 smbd(8) によって ROOT 権限で 実行されるスクリプトのフルパス名である。
%g
はグループ名に展開される。
スクリプトは Windows NT のドメイン管理ツールを使用して設定を行なう際にのみ有効である。
このスクリプトでは、UNIX 側のグループ名の制約に捕らわれず、任意の名前のグループを作成することができる。
ただし、その場合スクリプトは標準出力に作成されたグループの gid の数値を表示する必要がある。
既定値: add group script
=
例: add group script
= /usr/sbin/groupadd %g
このホストを識別できる追加DNS名の一覧
既定値: additional dns hostnames
=
# 空白文字列(追加DNS名なし)
例: additional dns hostnames
= host2.example.com host3.other.com
このパラメーターは、"$"を付けたマシン名が、SambaのドメインとUnix アカウントと一致しなかった場合に、 smbd(8)がマシンを追加する時に実行されるスクリプトのフルパス名である。
このオプションは、add user scriptととてもよく 似ていて、さらに、アカウント名の置換として%uを使う。%mの置換を使ってはいけない。
既定値: add machine script
=
例: add machine script
= /usr/sbin/adduser -n -g machines -c Machine -d /var/lib/nobody -s /bin/false %u
Samba 3.0.23 では、Windows の"Add Standard TCP/IP Port ウィザード"によるリモートからのプリンターポートの追加がサポートされた。 このオプションは、smbd がシステムに対する新しいポートの追加要求を受信した際に、 実行される外部のコマンドを定義する。 スクリプトは以下の 2 つのパラメーターをとる。
ポートの名称
device URI
deviceURI は socket://<hostname>[:<portnumber>] もしくは lpd://<hostname>/<queuename> のように指定する。
既定値: addport command
=
例: addport command
= /etc/samba/scripts/addport.sh
Samba 2.2 における Windows NT/2000 クライアントに対応した MS-RPC ベースの印刷サポートの実装にともない、 共有の一覧に表示される "Printers... " フォルダー中の "プリンターの追加"ウィザード(Add Printer Wizard (APW))アイコンを利用することが可能になった。 APW により、Samba や Windows NT/ 2000 プリンターサーバーに別のマシンからのプリンター追加が可能となった。
Samba ホストの場合、これは、下位レイヤの印刷システムにプリンターを物理的に追加できる必要があるということである。
add printer command
は、
印刷システムにプリンターを追加するとともに、
smb.conf
ファイルに対して、
smbd(8) によって共有が行なわれるサービスのエントリを適切に追加するのに必要な処理を行なうスクリプトを設定する。
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 エラーを返却する。
addprinter command
は Samba が新しいプリンターが接続するポートとして設定した
文字列からなる1行を返却する。
返却されない場合、Samba は印刷共有の再読み込みを行なわない。
既定値: add printer command
=
例: add printer command
= /usr/bin/addprinter
Samba 2.2.0 では、Windows NT 4.0 のサーバーマネージャーを利用して共有設定を
を追加・削除する機能が追加された。
add share command
は、
smb.conf
に新しいサービスの設定を追加
する外部のプログラム、もしくはスクリプトを設定するためのパラメーターである。
add share command
を実行するため、管理者は smbd
にroot
アカウント(uid = 0)で接続するか、アカウントにSeDiskOperatorPrivilege
が付与されている必要がある。
add share command
で指定された
スクリプトは root 権限で実行される。
コマンド実行時に、smbd
は自動的に以下の
5 つの引数を付加してadd share command
を実行する。
configFile
- smb.conf
の場所
shareName
- 新しい共有名
pathName
- ディスク上に「存在している」ディレクトリへのパス名
comment
- 新しい共有に対するコメント文字列
max connections
共有への最大同時接続数。
このパラメーターは、ファイル共有の追加にのみ使われる。印刷共有の追加については、 addprinter command を参照のこと。
既定値: add share command
=
例: add share command
= /usr/local/bin/addshare
このパラメーターは、以下に記述する特別な条件下において、 smbd(8) によって ROOT 権限で 実行されるスクリプトのフルパス名である。
通常、Samba サーバーでは、サーバー上のファイルにアクセスするすべてのユーザーに対して対応する UNIX ユーザーが存在している必要がある。しかし、Windows NT のアカウントデータベースをユーザーデータベースのマスターとして使うサイトでは、 Samba サーバー上のユーザーの作成や保守を Windows NT の PDC と同期して行なうのは骨の折れる作業である。このオプションにより、Samba サーバーに対してユーザーがアクセスした時点で smbd が UNIX のユーザーを 必要に応じて 作成することが可能になる。
Windows のユーザーが Samba サーバーにアクセスしようとして、
ログイン(SMB プロトコルの session setup) を行なう時に、
smbd(8) は、送信されたユーザー名とパスワードを認証するために、
password server と通信を行なう。
認証が成功すると、 smbd
は
UNIX 上のパスワードデータベース中から対応する UNIX のユーザーを検索して
Windows のユーザーに対応づけようとする。この検索が失敗し、
add user script が設定されていると、
smbd
は、
%u
引数を作成すべきユーザー名に展開した上で、
設定されたスクリプトを ROOT 権限で 呼び出す。
スクリプトがユーザーの作成に成功すると、 smbd
は、その UNIX ユーザーがすでに存在していたかのようにして処理を継続する。このようにして、存在する Windows NT のアカウントに対応する UNIX のユーザーが動的に作成される。
(訳注: この他に、Samba のドメイン環境において add user script はリモートからの要求によりユーザーを作成するという重要な役割がある。)
security, password server, delete user script も参照のこと。
既定値: add user script
=
例: add user script
= /usr/local/samba/bin/add_user %u
このパラメーターは、 Windows NT のドメイン管理ツールによってユーザーにグループが追加された際に実行されるスクリプトのフルパス名である。
これは smbd(8) によって ROOT 権限で 呼び出される。
%g
はグループ名に置換され、
%u
はユーザー名に置換される。
adduser
コマンドは、すべてのシステムにおいて、
以下の例で用いた構文をサポートしているわけではないことに注意。
既定値: add user to group script
=
例: add user to group script
= /usr/sbin/adduser %u %g
このパラメーターが共有のために yes
になっている場合、その共有は管理用となる。管理用の共有は Windows NT
ベースのすべてのオペレーティングシステムで作られるデフォルトの
ネットワーク共有であり、C$, D$, ADMIN$ などと同様のものである。
これらの共有のタイプは STYPE_DISKTREE_HIDDEN となる。
このオプションに関する詳細は、後述の security を参照してほしい。
既定値: administrative share
= no
このパラメーターは、共有上で管理者権限が与えられるユーザーのリストである。 指定されたユーザーは、すべてのファイル操作をスーパーユーザー (root) として実行できる。
このリストに登録されているユーザーは、 ファイルのパーミッションに関係なくあらゆる操作を行うことができてしまうため、 このオプションは十分に注意して使用すべきである。
既定値: admin users
=
例: admin users
= jason
このパラメーターは、共有に対して AFS 特有の機能を有効にするかどうかを指定する。
もし有効な場合、path
パラメーターでエクスポートされているディレクトリをローカルの AFS インポートとして扱う。
特殊な AFS の機能というのは、もし configure 時に
--with-fake-kaserver オプションを有効にした場合に、
AFS トークンを作成しようとする機能などが含まれる。
既定値: afs share
= no
このパラメーターはAFSの fake-kaserver 要求トークンの生存時間を制御する。 実際は、これらの期限は満了しないが、この生存時間は、afsクライアントがトークンを 廃棄する時を制御する。
This parameter controls the lifetime of tokens that the AFS fake-kaserver claims. In reality these never expire but this lifetime controls when the afs client will forget the token.
このパラメーターを0に設定すると、NEVERDATE
を得る。
既定値: afs token lifetime
= 604800
ダミーの kaserver の AFS 機能を使用している場合、 作成するトークンのユーザー名を指定したい場合もあるだろう。 たとえば、AFS Protection Database に複数のドメインのユーザーが混在している場合などが挙げられる。 一つの解決策は、winbind と同じように + をセパレーターとして DOMAIN+User と指定することである。
マップされたユーザー名はログインするためのセル名を含んでいる必要がある。 そのため、このパラメーターが指定されていない場合、トークンは使用されない。
(訳注: AFS に関する知識不足のため、訳の正確性については担保できない)
既定値: afs username map
=
例: afs username map
= %u@afs.samba.org
この整数値パラメータは、パラレル非同期 IO 呼び出しを行う時、各 smbd プロセスが作成する、スレッドの最大数を指定する。 もしも、未処理の呼び出しがこの値よりも大きい場合、リクエストは 拒否されないが、キューに入り、未処理の要求として順番にスケジュール される。
関連コマンド: aio read size
関連コマンド: aio write size
既定値: aio max threads
= 100
この整数パラメーター が非ゼロ値にセットされている場合、ファイルリードする際に要求された I/O サイズがこの値より大きければ、Samba は非同期リードを行う。 注意:非同期リードが行われるのは、non-chained と non-chaining リード の場合に限られる。
Samba 3.0 における非同期 I/O におけるサポートは、リードとライトを合わせて 10個までの、未解決の非同期リクエストに限られる。
このパラメータの最適な値は 0 (非同期I/Oを行わない) と 1 (常時非同期I/Oを行う) のみである。
関連コマンド: aio write size
既定値: aio read size
= 0
例: aio read size
= 16384
#
リクエストサイズが 16KB を超えるリードについて非同期 I/O を使用する。
もしも、Sambaが非同期I/Oをサポートするように構築された場合、 このパラメーターで示されたファイルに対して、クライアントに対する 結果を返す前に、 Sambaは書き込み要求が完了するまで待たない。その代わり、実際の操作が 成功するか否かに関係なく、Sambaは書き込み要求が正常に終わったと、即座に 結果を返す。これはaioサポートがないクライアントのスピードを向上させるかも しれないが、データが亡失し、ファイルが壊れるという観点で、これはとても 危険である。
文法は、veto filesと同一である。
既定値: aio write behind
=
例: aio write behind
= /*.tmp/
この整数パラメーター が非ゼロ値にセットされている場合、ファイルをライトする際に要求された I/O サイズがこの値より大きければ、Samba は非同期ライトを行う。 注意:非同期ライトが行われるのは、non-chained と non-chaining ライトの 場合に限られる。
Samba 3.0 における非同期 I/O におけるサポートは、リードとライトを合わせて 10個までの、未解決の非同期リクエストに限られる。
このパラメータの最適な値は 0 (非同期I/Oを行わない) と 1 (常時非同期I/Oを行う) のみである。
aio read size と比べると、ほとんどの書き込み動作は ファイルシステムキャッシュで終了するため、このパラメータは影響度が小さい。 スペースの割り当てを必要とする書き込み動作は、非同期にすると 効率がよくなるかもしれない。
関連コマンド: aio read size
既定値: aio write size
= 0
例: aio write size
= 16384
#
リクエストサイズが 16KB を超えるライトについて非同期 I/O を使用する。
このパラメーターにより、 Samba が UID や GID を NT セキュリティ識別子(訳注:SID)の構築に必要な RID に機械的に対応づける際の RID の値が設定される。
Windows NT/2000 から移行を行なうサイトでは、存在しているユーザーやグループの RID がシステムのユーザーと競合してしまうことを防ぐため、この値を大きい値にすることが有用な場合もあるだろう。
サーバー上の ACL が正しく機能する上では、すべての UID および GID が SID に変換できることが必須である。 このため、機械的な対応づけを無効にせずに、一定の範囲を対象領域から除外することが、 問題を避ける上で必要である。 RID の競合に対応したパスワード機構において、ユーザーおよびグループには、 「小さな」 RID が割り当てられる。
既定値: algorithmic rid base
= 1000
例: algorithmic rid base
= 100000
このパラメーターにより、管理者が Windows クライアントから見たアロケーションサイズを切り上げることが可能となる。 これは、新しい SMB バージョン がそのボトルネックを排除し、既定で より良いパフォーマンスを提供するため、古い SMB1 クライアントに対して のみ有効である。ただし、Visual Studio のように、 問題が発生するアプリケーションもある。 Visual Studio のコンパイラーが内部エラーでクラッシュしてしまうような場合は、 該当の共有でこのパラメーターを 0 に設定すること。 このパラメータお大きな値にすると、小さなファイルは、ディスク上で必要とする サイズよりも大きなサイズを割り当てることにもなる。
このパラメータは非推奨であり、将来のSambaバージョンでは削除される。
このパラメーターには、切り上げるサイズをバイト単位の整数値で指定する。
既定値: allocation roundup size
= 0
例: allocation roundup size
= 1048576
# (1MiBに設定する)
このオプションは、DCERPC サービスが、認証を提供するが、 メッセージ単位の整合性や、プライバシーの保護を行わない、 DCERPC_AUTH_LEVEL_CONNECT といっしょに使われるかどうかを制御する。
samr ,lsarpc と netlogon のようないくつかのインタフェースでは、
既定値が、no
にハードコードされ、epmapper, mgmt と rpcecho は
既定値が yes
にハードコードされている。
動作は、allow dcerpc auth level connect:interface = yes' をオプションとして 使う事によって、インタフェース名ごとに上書きできる(たとえば lsarpc, netlogon, samr, srvsvc, winreg, wkssvc ...)。
このオプションは、実装固有の制限によって上書きされる。たとえば、 drsuapi と backupkey プロトコルは DCERPC_AUTH_LEVEL_PRIVACY を必要とする。 dnsserver プロトコルは DCERPC_AUTH_LEVEL_INTEGRITY を必要とする。
既定値: allow dcerpc auth level connect
= no
例: allow dcerpc auth level connect
= yes
このオプションは DNS に対する、どの種のアップデートが許可されるかを決める。
DNS アップデートは、これをdisabled
に設定して
完全に無効にするか、これをsecure only
に設定して、
セキュアな接続上でのみ有効にするか、これをnonsecure
に
設定して、すべての場合において許可するかを指定できる。
既定値: allow dns updates
= secure only
例: allow dns updates
= disabled
通常動作時においては、共有パスの外側へのシンボリックリンク許可 を制御するwide linksオプションは、 Samba サーバ上で、unix extensionsが有効な 時には、自動的に無効にされる。これは、管理者がエクスポートする ことを期待しないサーバーファイルシステムの領域へのシンボリックリンク をUNIXクライアントが作成することを防ぐことを、セキュリティ上の 目的とするために設定された。
allow insecure wide linksを真に設定する と、2つのパラメーター間のリンクを無効にし、この保護を無効にし、 unix extensionsが on になっていたとしても、 (wide linksを"真"にすることによって) シンボリックリンクをたどれるサーバーを構成するサイトを設定できる。
UNIX クライアントによって作成されたシンボリックリンクを たどることをサーバーに対して許可する実装を完全に理解するまでは、 このオプションを有効にすることは推奨しない。通常 大多数の Samba 設定では、これを行うとセキュリティホールに なり、このパラメーターを設定することは推奨されない。
このオプションは、すでにこの方法で意図的に Samba を設定していて、 この機能を継続的にサポートするために Samba のソースコードに パッチを当て続けることをなくすために、サイトの要求によって 追加されたものである。
既定値: allow insecure wide links
= no
このオプションは、"no" に設定しないことで、セキュリティ問題を生じるため、廃止予定で あり、将来削除される(将来は "no" がハードコードされる予定)。
このオプションは、netlogon サーバ(現在 'active directory ドメインコントローラ' モードのみ)が、NETLOGON_NEG_STRONG_KEYS も、NETLOGON_NEG_SUPPORTS_AESも サポートしないクライアントを拒否するかどうかを制御する。
このオプションは、Samba 4.2.0 で追加された。これは、Samba 4.1.xまでの バージョンでは、既定値が "yes" であったが、 4.2.0 以降は "no" に 変更になったため、以前のバージョンで問題なく接続出来ていたクライアント が繋がらなくなるかもしれない。
もしも、レジストリ中に、RequireStrongKey = 1 を設定していないクライアントが あるならば、すべてのクライアントを修正するまで、"allow nt4 crypto = yes" を設定しなければならない。
"allow nt4 crypto = yes" とすると、たとえばダウングレード攻撃で、 暗号化レベルを下げたネゴシエーションを許すことになる。
"allow nt4 crypto = yes" allows weak crypto to be negotiated, maybe via downgrade attacks.
このオプションを使わないこと! そのかわりに明示的に 'allow nt4 crypto:COMPUTERACCOUNT = yes' を使うこと! ごれは、 CVE-2022-38023 のパッチに含まれている。 https://bugzilla.samba.org/show_bug.cgi?id=15240 を参照のこと
Samba は ログレベル 0 で、クライアントに対して、旧来の(レガシーの)クライアントが 拒否されたか、明示的に 'allow nt4 crypto:COMPUTERACCOUNT = yes' オプションなしで許可された場合、ログファイルにエラーを記録する。メッセージは 旧来の(レガシーの)クライアントソフトウェアがそれを必要とする場合、 明示的に allow nt4 crypto:COMPUTERACCOUNT = yes' 行が追加されることを示す。(ログレベルは 'CVE_2022_38023:error_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
これにより、明示的な 'allow nt4 crypto:COMPUTERACCOUNT = yes' オプションを収集するために、管理者は短い猶予期間にのみ「yes」を使うことが できる。
このオプションは、 'server reject md5 schannel:COMPUTERACCOUNT' または 'reject md5 clients' オプションが の有効な値が 'yes' の場合に上書きされる。
既定値: allow nt4 crypto
= no
もしも、'allow nt4 crypto = yes' を必要とする旧来の(レガシー)ドメインメンバが 依然として存在するならば、'allow nt4 crypto:COMPUTERACCOUNT = yes' を オプションとして使うことにより、コンピュータアカウント単位で明示的に 例外を指定することが可能である。 COMPUTERACCOUNT は コンピュータアカウント(末尾の '$' 記号を含む) の、sAMAccountName 値でなければならないことに注意。
オプションが "yes" に設定されていても、関連するコンピュータが それを必要としない場合、Samba はログレベル 0 で、 セキュリティ問題についての情報を記録する。 (ログレベルは 'CVE_2022_38023:warn_about_unused_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
Samba は、設定が引き続き特定のコンピュータアカウントに対して必要な場合、 ログレベル 5 でログファイル中に警告を記録する。
CVE-2022-38023, https://bugzilla.samba.org/show_bug.cgi?id=15240を参照のこと。
このオプションは allow nt4 crypto オプションで上書きされる。
このオプションは、 'server reject md5 schannel:COMPUTERACCOUNT' または 'reject md5 clients' オプションが の有効な値が 'yes' の場合に上書きされる。
これは、'allow nt4 crypto:COMPUTERACCOUNT = yes' が 'server reject md5 schannel:COMPUTERACCOUNT = no' と組み合わせた場合にのみ有用であることを意味する。
allow nt4 crypto:LEGACYCOMPUTER1$ = yes server reject md5 schannel:LEGACYCOMPUTER1$ = no allow nt4 crypto:NASBOX$ = yes server reject md5 schannel:NASBOX$ = no allow nt4 crypto:LEGACYCOMPUTER2$ = yes server reject md5 schannel:LEGACYCOMPUTER2$ = no
既定値なし
このパラメーターは、security パラメーターが server
、
domain
もしくは ads
に設定されている時のみ有効である。
no に設定されていると、 smbd が動作しているドメインもしくはワークグループ外からのリソースへの
接続要求は、失敗する。
これは、たとえそのドメインが認証を行なうサーバーによって信頼されている場合であっても同様である。
このオプションは、 Samba サーバーが所属するドメインのユーザーのみにリソースを提供させたい場合に便利である。 一例として DOMA と DOMB という 2 つのドメインがあって、 DOMA は Samba サーバーを含み、DOMB を信頼している場合を想定する。 通常の条件では、DOMB 中にアカウントを持つユーザーは、 Samba サーバーに同じ名前の UNIX アカウントがあれば、 DOMA にアカウントがなくてもリソースにアクセスできるため、 セキュリティ境界の区分けが困難である。
既定値: allow trusted domains
= yes
no(既定値)に設定すると、smbd の起動時、クラスター内に
別バージョンの smbd が起動していないかをチェックし、起動していれ
ば新たな起動を取りやめるようにする。同一クラスター内に互換性の
ない Samba バージョンが同時に稼動していたとしても、内部データ
構造を壊さないようにするためである。このパラメーターを
yes
に設定したときは、この安全
性チェックは無効になる。
既定値: allow unsafe cluster upgrade
= no
このオプションは、Winbindが、グループポリシー更新のタイミングごとに、 gpo update command で定義した gpupdate コマンドを、 実行するかどうかを制御する。グループポリシー更新の間隔は、基本 90分ごとで、さらに、0 から 30 分の間でのランダムなオフセットが加えられる。 このオプションを指定すると、グループポリシーマシンのポリシーを、 クライアントまたは KDC に、マシンポリシーをサーバに適用する。
既定値: apply group policies
= no
例: apply group policies
= yes
Samba 中の、非同期 DNS リゾルバコードが応答を待つときの秒数。 ある種の Samba クライアントライブラリコードは、 Active Directory ドメインコントローラを見つけるため、A と AAAA レコードに対して、 内部非同期 DNS 解決を使う。この値は、この名前解決コードが、 DNS サーバのタイムアウトを待つことを防ぐ。
このパラメータの最小値は固定されている。 at 1 second.
既定値: async dns timeout
= 10
例: async dns timeout
= 20
このパラメーターは、Samba が非同期 smb エコーハンドラーを フォークすべきかを指定する。もしも使用するファイルシステムが とても長い時間システムコールをブロックするのであれば、これは 便利に使える。ある種の環境では、接続が切れてしまったどうかを 決めるために、Windows が使うタイムアウトを延長する。このパラメータは SMB1専用である。SMB2またはそれ以降については、代わりに TCP キープアライブ を使う事ができる。
既定値: async smb echo handler
= no
このオプションを有効にすると(Active Directory ドメインコン
トローラーとして動作している)Samba に対して、認証イベントを
内部メッセージバスに流すように指示する。
Samba の python バインディングを用いて構築されているスクリプト
を auth_event
サービスに
登録すれば、認証イベントをリッスンするようになる。
これは、log level 中で記述される 監査ログのためには必要ではない。
メッセージの配信は保障されていないので(testsuite で対応する 機能)、代わりに、これは、外部監査用の機能ではなく、開発者オプション (Samba testsuiteを手助けする)と考えるべきである。
認証イベントは、auth_json_audit:3
のように、log level を適切に設定
していれば、通常のログ収集方式でもログが記録される。
既定値: auth event notification
= no
これは、ブラウズリストに自動的に追加されることを希望する、サービスのリストである。 これは、そうしなければ見えない、home と printer サービスにとって、とても有用である。
もしも printcap ファイル中にあるすべてのプリンタをロードしたいならば、 load printersオプションのほうがより簡単である。
既定値: auto services
=
例: auto services
= fred lp colorlp
このパラメーターにより、サービスを「無効」とすることが可能である。
available = no
の場合、
サービスに対する接続はすべて失敗する。これらの失敗は記録される。
既定値: available
= yes
このパラメータは、samba が、 named.conf といった BIND 用の設定ファイルを格納する ディレクトリを定義する。 参考: このディレクトリは private ディレクトリ (private dir パラメーターを参照) 同じファイルシステム上に配置する必要がある。
既定値: binddns dir
= ${prefix}/bind-dns
このグローバルパラメーターにより、 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
パラメーターで指定されたインタフェースにのみバインドするようになる。
これにより、 smbd
がサービスを提供するネットワークを指定したインタフェース経由のものに制限することが可能である。
PPP などの間欠的なネットワークインタフェースや、非ブロードキャストなネットワークインタフェースにサービスを提供している場合は、
これらの非永続的なインタフェースをうまく処理できないため、このパラメーターを使わないこと。
bind interfaces only が設定されているが、 127.0.0.1 のネットワークアドレスが interfaces パラメーターに指定されていない場合は、 以下に示すような理由のため、smbpasswd(8) が期待したように動作しないことがある。
ユーザーの SMB パスワードを変更するために、 smbpasswd
はデフォルトで localhost - 127.0.0.1 のアドレスに
SMB クライアントとして接続を行ない、パスワード変更要求を送信する。
bind interfaces only が設定されているにも関わらず、
127.0.0.1 のネットワークアドレスが
interfaces パラメーターに含まれていなかった場合、
smbpasswd
のデフォルトの状態では接続に失敗してしまう。
smbpasswd
については、
smbpasswd(8) に -r
パラメーターを指定して、
remote machine
remote machine
にローカルホストのプライマリインタフェースのIPアドレスを設定することにより、
強制的にローカルホストのプライマリIPインタフェースを利用させることも可能である。
既定値: bind interfaces only
= no
このパラメーターは、クライアントからオープン中のファイルの一部範囲に対して、 バイト範囲のロック(byte range lock)が要求された際に、タイムアウトが発生した場合の smbd(8) の動作を制御する。
このパラメーターが設定されている場合にロック範囲の要求が即座に処理できない場合、 Samba は内部的にロック要求をキューイングして、タイムアウトが来るまで定期的にロックを取得する動作を行なう。
このパラメーターが no
の場合、
Samba は以前のバージョンの Samba (訳注: Samba 1.9.x 以前)と同様に振舞い、
ロック範囲が取得できない場合にただちにロック要求を失敗させる。
既定値: blocking locks
= yes
このパラメーターにより、ディスクの空き領域を報告する際の smbd(8) の動作が制御される。 デフォルトでは、ディスクのブロックサイズを 1024 バイトとして報告が行なわれる。
このパラメーターを変更した場合、クライアントからの書き込みに影響がでることが予想されるが、確認されていない。このパラメーターは、熟練した管理者が(通常より大きい値に)変更を行なうことで、再コンパイルを行なうことなく、クライアントからの書き込みパフォーマンスへの影響をテストすることを可能とするために追加された。これは実験的なオプションのため、将来のリリースでは削除されるかも知れない。
このオプションを変更しても、報告されるディスクの空き容量自体は変わらない。クライアントに報告されるディスクのブロックサイズが変更されるだけである。
既定値: block size
= 1024
例: block size
= 4096
このパラメーターは、クライアントからの NetServerEnum
コールに対して、 smbd(8) がブラウズリストを提供するかどうかを制御する。
通常 true
に設定されている。
これを変更する必要はまずないであろう。
既定値: browse list
= yes
通常 TDB ファイルのほとんどは
lock directory
中に格納される。Samba 3.4.0 からは
state directory
と
cache directory
オプションを使うことで、
持続的データを持つ TDB ファイルと持続的データを持たない TDB ファイルとを区別することが出来る。
このオプションは、持続的なデータを持たない TDB ファイルを置くディレクトリを指定する。 非持続的であってもサービスの再起動中はデータは保持される。 ディレクトリは、永続的なストレージに置かれるべきだが、データは、 管理者によって安全に削除できる。
既定値: cache directory
= ${prefix}/var/cache
例: cache directory
= /var/run/samba/locks/cache
このパラメーターは、Samba がクライアントからのファイル変更通知要求に対して 返信するべきかどうかを指定する。
このパラメーターを変更する必要はないはずである
既定値: change notify
= yes
Samba 2.2.0 では、Windows NT 4.0 のサーバーマネージャーを利用して共有設定を
を追加・削除する機能が追加された。
change share command
は、
smb.conf
の既存のサービスの設定を変更
する外部のプログラム、もしくはスクリプトを設定するためのパラメーターである。
change share command
を実行するため、管理者は smbd
にroot
アカウント(uid = 0)で接続するか、アカウントにSeDiskOperatorPrivilege
が付与されている必要がある。
add share command
で指定された
スクリプトは root 権限で実行される。
コマンド実行時に、smbd
は自動的に以下の
6 つの引数を付加してchange share command
を実行する。
configFile
- smb.conf
の場所
shareName
- 新しい共有名
pathName
- ディスク上に「存在している」ディレクトリへのパス名
comment
- 新しい共有に対するコメント文字列
max connections
共有への最大同時接続数。
CSC policy
- 文字列形式での
クライアント側でのキャッシングポリシー。有効な値は:
manual, documents, programs, disable である。
このパラメーターは、ファイル共有設定の変更にのみ使われる。印刷共有の設定を 変更にするには、共有されているホストのプリンターフォルダーを使用する。
既定値: change share command
=
例: change share command
= /usr/local/bin/changeshare
Windows SMB サーバは、delete-on-close フラグが設定されているディレクトリ 中に、クライアントがファイルを作成することを抑止する。Samba は チェックにいくらかの負荷がかかるため、既定値ではチェックしない。
既定値: check parent directory delete on close
= no
パスワードの複雑性を検証するためのプログラム名を指定する。 パスワードはプログラムの標準入力に送られる。
プログラムは、パスワードが良好であった場合に 0 を、それ以外の場合は他の値を返却しなければならない。 パスワードが脆弱であると判断された (プログラムが 0 を返却しなかった) 場合、 ユーザーには、パスワード変更の失敗が通知される。
Samba AD において samba(8) は、 変数置換操作なしに ROOT 権限 でこのスクリプトを実行する。
Samba 4.11 から、以下の環境変数がスクリプトに対してエクスポートされる:
SAMBA_CPS_ACCOUNT_NAME は常時提供され、ユーザの sAMAccountName が設定され、これは、 AD DC が無い場合の、%u と同じである。
SAMBA_CPS_USER_PRINCIPAL_NAME は AD DC で userPrincipalName がある場合オプションである。
SAMBA_CPS_FULL_NAME は、displayName がある場合にオプションである。
example ディレクトリに、crackcheck
という
サンプルのプログラムがある。
これは cracklib を用いてパスワードのチェックを行なっている。
既定値: check password script
=
# Disabled
例: check password script
= /usr/local/sbin/crackcheck
このパラメータの値(文字列)は、 DCERPC 通信 として IPC$ 接続用にサポート される、もっとも上位のプロトコルレベルである。
通常、このオプションは、SMB プロトコル中で、自動的なネゴシエーションフェーズが 適切なプロトコル選定を行うので、設定すべきでない。
値default
はもっとも最近の、サポートされているプロトコル
を参照し、それは現在 SMB3_11
である。
client max protocol に、有効なプロトコル のすべての一覧がある。値 CORE, COREPLUS, LANMAN1, LANMAN2 は、自動的に NT1 にアップグレードされる。
既定値: client ipc max protocol
= default
例: client ipc max protocol
= SMB2_10
この設定は、DCERPC 通信として IPC$ 接続用に使う場合の、最小プロトコルを 定義する。
通常、このオプションは、SMB プロトコル中で、自動的なネゴシエーションフェーズが 適切なプロトコル選定を行うので、設定すべきでない。
値default
は、NT1
と、
client min protocol の実効値よりも大きな
値を参照する。
client max protocol に、有効なプロトコル のすべての一覧がある。値 CORE, COREPLUS, LANMAN1, LANMAN2 は、自動的に NT1 にアップグレードされる.
既定値: client ipc min protocol
= default
例: client ipc min protocol
= SMB3_11
これは、DCERPC 転送として IPC$接続用に SMB 署名の使用を要求するか、許可するかを 制御する。とりうる値はdesired、required、 とdisabled である。
required に設定するか default の場合、SMB署名が必須である。
desired に設定した場合, SMB 署名は提供されるがそれは強制ではなく、 また、もしも disabled に設定した場合、SMB 署名は提供されない。.
winbindd から Active Directory ドメインコントローラへの接続は、 常時署名が強制される。
既定値: client ipc signing
= default
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、 クライアントとして、LanMan 認証(NTLM,NTLMv2 又は Kerberosとは異なる) のサポートが削除される。
このため、将来は、現在の既定値である
client NTLMv2 auth = yes
が強制的に設定される。
このパラメーターは、smbclient(8) などの Samba のクライアントツールが 脆弱な LANMAN パスワードハッシュを使用した認証を行なうか否かを制御する。 無効にした場合、 Samba クライアントからは、NT パスワードハッシュを利用するクライアント (Windows NT/2000クライアント、Samba など。しかし Windows 95/98 は含まない) に対してのみ接続できる。
LANMAN 暗号化レスポンスは簡単に解読することが可能である。 これは大文字と小文字を区別しないことや、使用しているアルゴリズムなどに起因する。 Windows 95/98 サーバーが存在しない場合は、このオプションを無効にした方がよいだろう。
このオプションを無効にすると、client plaintext auth
オプションも同時に無効となる。
同様に、 client ntlmv2
auth
パラメーターを有効にした場合、NTLMv2 ログインのみが可能となる。
既定値: client lanman auth
= no
client ldap sasl wrapping は、ldap との通信が 署名付きか、署名+暗号化(シールされている)かを定義する。設定可能な値は、 plain, sign とsealである。
値signとsealは、 もしも Samba が最新の OpenLDAP バージョン(2.3.xかそれ以降)とともに コンパイルされた時に有効である。
このオプションは、特にユーザからの、パスワードの新規作成又はリセットなど、
samba-tool
からの管理接続のプライバシーを保護するために
最初に必要である。このため、既定値はsealである。
さらに、winbindd
およびnet
ツールは LDAP を
使用してドメインコントローラと通信できるため、このオプションはこれらの接続の
プライバシーのレベルも制御する。サポートされているすべての AD DC バージョンは、
既定で少なくとも署名付きの LDAP 接続の使用を強制するため、実際には少なくとも
signの値が必要である。
既定値はsealである。これは、Kerberos を使う場合においては、KDC との時刻同期があることをを暗黙的に示している。
既定値: client ldap sasl wrapping
= seal
このパラメーターの値(文字列)は、クライアントがサポートする 最上位のプロトコルを指定する。
設定可能な値は以下の通りである。
CORE
: 最初期のバージョン。ユーザーという
概念がない。
COREPLUS
: 効率化のため CORE を若干改良した
ものである。
LANMAN1
: 最初の 近代的な
プロトコルであり、長いファイル名をサポートしている。
LANMAN2
: LANMAN1 プロトコルを改良したものである。
NT1
: 最新のプロトコルであり、Windows
NT で使用されている。CIFS としても知られている。
SMB2
: SMB プロトコルを実装し直したもので、
Windows Vista 以降で使用されている。SMB2 にはいくつかのサブプロトコルが
存在する。
SMB2_02
: 最初期の SMB2 プロトコル
SMB2_10
: Windows 7 の SMB2 プロトコル
SMB2 を指定した場合、デフォルトでは SMB2_10 が選択される。
SMB3
: SMB2 と同じく、SMBプロトコルを実装し直したものであり、
Windows 8 で使用されている。 SMB3 にもサブプロトコルが存在する。
SMB3_00
: Windows 8 の SMB3 バージョン。
SMB3_02
: Windows 8.1 の SMB3 プロトコル
SMB3_11
: Windows 10 SMB3 バージョン。
SMB3 を指定した場合、デフォルトでは SMB3_11 が選択される。
通常は、SMB プロトコルの自動ネゴシエーションフェーズにより 適切なプロトコルが選択されるため、このオプションを設定する必要はない。
default
の値は SMB3_11
を参照する。
たとえば、winbindd のような、 DCERPC 用の IPC$ 接続は、 client ipc max protocol オプションによって制御される。
既定値: client max protocol
= default
例: client max protocol
= LANMAN1
この設定は、クライアントが使用を試みる最低位のプロトコル を制御する。
通常は、SMB プロトコルの自動ネゴシエーションフェーズにより適切なプロトコルが 選択されるため、古い SMB1 のみのサーバに接続する場合を除き、このオプションを設定する必要はない。
有効なプロトコルの完全な一覧については
関連コマンド: client max protocol
を参照のこと。
たとえば、winbinddのような、 DCERPC 用の IPC$ 接続は、 client ipc max protocolオプションによって制御される。
ほとんどのコマンドラインツールは --option='client min protocol=NT1' をサポートしているため、smb.conf 中で、グローバルに SMB1 プロトコルを 有効にしなくてもよい。
既定値: client min protocol
= SMB2_02
例: client min protocol
= NT1
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、 NTLM と LanMan 認証(NTLMv2 又は Kerberosとは異なる) のサポートが削除される。
このため、将来は、現在の既定値である
client NTLMv2 auth = yes
が強制的に設定される。
このパラメーターにより、smbclient(8) がサーバーへの接続時に NTLMv2 暗号化パスワードレスポンスを使用した認証を行なうかどうかが設定される。
有効にすると、NTLMv2 および LMv2 レスポンス(両方とも以前のバージョンよりはセキュアである) が送信される。 ただし、古いバージョンのサーバー(Windows NT 4.0 SP3以前、Windows 9x および Samba 2.2)は、NTLMv2をサポートしているドメインにいない時、 NTLMv2 と互換性がない。
同様に、有効にした場合 NTLMv1、 client lanman auth
および client plaintext auth
認証は無効となる。また、共有レベルの認証も同時に無効となる。
無効にした場合、 NTLM レスポンス (および可能であれば LANMAN レスポンス)
が、client lanman auth
の値に応じてクライアントから送信される。
Windows Vista および後継のバージョンはすでに NTLMv2 のみを使い、また、サイトに よって(特に「ベストプラクティス」のセキュリティポリシーを適用しているサイト)は NTLMv2 のみを許可し、脆弱な LM および NTLM レスポンスは許可していない。
client use spnegoもyes
に
設定した場合、拡張セキュリティ (SPNEGO) が、NTLMSSPのみをNTLMv2で使うために
必要とされる。この動作はCVE-2016-2111 用のパッチによって導入された。
既定値: client NTLMv2 auth
= no
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、plaintext 認証(NTLM , NTLMv2 又は Kerberosとは異なる) のサポートが削除される。
このため、将来は、現在の既定値である
client plaintext auth = no
が強制的に設定される。
このパラメーターは、サーバーが暗号化パスワードをサポートしていない場合にクライアントから平文パスワードを送出するかどうかを制御する。
既定値: client plaintext auth
= no
このパラメータは、Samba クライアントツールが、既定値で使う プロテクションがどれかを定義する。
取り得る値は以下の通り:
default - オプションにおける 個々の既定値を使用する:
client signing
client smb encrypt
plain - これを指定すると すべてを平文とし、署名又は暗号化は行わない。
sign - これを指定すると、 整合性チェックを有効にする。
encrypt - これを指定すると、 整合性チェックと、プライバシーのために強制的な暗号化を 有効にする。
既定値: client protection
= default
このオプションは Samba 4.8 では廃止予定となり、将来廃止される。 同時に、既定値は、将来ハードコードされた動作となる、 yes に変更となった。
このパラメーターはクライアントが netlogon セキュアチャネルの使用を有効にするか、もしくは要求するかを制御する。 client schannel = no はセキュアチャネルを有効にしない。 client schannel = auto はセキュアチャネルを有効にするが、強制はしない。 client schannel = yes はサーバーが netlogon セキュアチャネルを理解できない場合、アクセスを許可しない。
Active Directory に対しては、client schannel = yes がハードコードされている事に注意。
このオプションはrequire strong key によって上書きされる。
既定値: client schannel
= auto
例: client schannel
= yes
このパラメーターは、SMB署名を使うために、クライアントに対して有効にするか、もしくは強制するかを設定する。 設定可能な値は、desired、required、 disabled である。
desired または default に設定した場合、SMB 署名が有効になるが、 強制はしない。
required に設定すると、SMB 署名が必須となり、 disable に設定すると、SMB 署名は有効にならない。
DCERPC に対する IPC$ 接続、すなわち、 winbindd 中では、 client ipc signing オプションによって制御される。
既定値: client signing
= default
このパラメータは、クライアントが SMB 暗号化の使用を試みるか、それが必要で あるかを制御する。これは、接続が SMB1 または SMB3 のどちらかに よって影響が異なる:
SMB1 で接続する場合、このオプションは、Unix 拡張を使う、Samba 3.2 で 導入された、SMB プロトコルに対する Samba 固有の拡張の使用を制御する。
SMB2 以降で接続する場合、このオプションは、SMB バージョン 3.0 以降で サポートされる、Windows 8 以降で有効な、SMB レベルの暗号化を 使うかを制御する。
このパラメータはグローバルに設定できる。取り得る値は以下の通り off, if_required, desired, と required. 特別な値 default は、if_requiredの 暗黙の設定である。
SMB1 における Samba 固有の暗号化接続は、UNIX 拡張の一部として ネゴシエーションされる、SMB プロトコルの拡張である。SMB 暗号化は SMB プロトコルストリーム中で、リクエスト/応答を毎回暗号化および 署名する機能を持つ GSSAPI(Windows 上の SSPI)を使う。有効にすると、 ssh で保護されたセッションのように、SMB/CIFS 通信をセキュアにする 機能を提供するが、暗号化のネゴシエーションおよびキーの署名には SMB/CIFS の認証を使う。現在これは Samba 3.2 以降の smbclient のみ でサポートされている。Windows クライアントはこの機能をサポートしない。
既定値に設定した場合、SMB 暗号化が使えるか調べるが、強制はされない。 required に設定した場合、SMB 暗号化が要求され、disabled に 設定した場合、SMB 暗号化はネゴシエートされない。
本来の SMB トランスポート暗号化は、SMB バージョン 3.0以降で有効 である。これは、client max protocolが SMB3以降に設定された場合にのみ使われる。
これらの機能は、client smb encryptを 以下のように設定することで制御できる:
既定のままにするには、明示的に default を設定するか、 if_requiredをグローバルに設定すると、 暗号化のネゴシエーションを有効にするが、データ暗号化はグローバルには 有効にしない。
グローバルに、desired を設定すると、 ネゴシエーションを有効化し、これをサポートするサーバに対して、 セッション上と共有接続上におけるデータ暗号化を有効化する。
グローバルに、required を設定すると、 ネゴシエーションを有効化し、セッション上と共有接続上における データ暗号化を有効化する。暗号化をサポートしないクライアントは サーバに対するアクセスが拒否される。
グローバルに、off を設定すると、 すべての接続で暗号化機能を完全に無効化する。
既定値: client smb encrypt
= default
このパラメーターは SMB3_11 ダイアレクトのネゴシエーション時にサーバに 提示する有効な暗号化アルゴリズムとその優先順位を指定する。
これはまた、先頭に '-' を付けることで、既定のリストから個々のアルゴリズムを 削除することもできる。これにより、ハードコートされたリストを指定する必要性が なくなる。
注意: リストから aes-128-ccm を削除すると、SMB3_00 及び SMB3_02 は 使えなくなる。これは既定であり、それらのダイアレクトでは AES-128-CCM が 既定値で、かつ唯一有効な暗号化アルゴリズムである。
既定値: client smb3 encryption algorithms
= aes-128-gcm, aes-128-ccm, aes-256-gcm, aes-256-ccm
例: client smb3 encryption algorithms
= aes-256-gcm
例: client smb3 encryption algorithms
= -aes-128-gcm -aes-128-ccm
このパラメータは、 SMB3_11 ダイアレクトのネゴシエーション時にサーバに 提示する、有効な署名アルゴリズムとその優先順位を指定する。
これはまた、先頭に '-' を付けることで、既定のリストから個々のアルゴリズムを 削除することもできる。これにより、ハードコートされたリストを指定する必要性が なくなる。
注意: リストから aes-128-ccm を削除すると、SMB3_00 及び SMB3_02 は 使えなくなり、hmac-sha-256 を削除すると、SMB2_02 と SMB2_10 は使えなくなる。 これは既定であり、これらのダイアレクトでは、それらが既定値で、かつ唯一有効な 暗号化アルゴリズムである。
既定値: client smb3 signing algorithms
= aes-128-gmac, aes-128-cmac, hmac-sha-256
例: client smb3 signing algorithms
= aes-128-cmac, hmac-sha-256
例: client smb3 signing algorithms
= -aes-128-cmac
このパラメータは、Samba クライアントツールが、Kerberos を使って 認証を行うかどうかを指定する。Kerberos 認証のためには、サービス接続時に、 IP アドレスの代わりに DNS変更 名を使う必要がある。
取り得るオプション設定は以下の通り:
desired - Kerberos 認証が最初に試行され、それが失敗した場合に、 自動的に NTLM にフォールバックする。
required - Kerberos 認証が要求される。この場合は NTLM や他の 代替のものにはフォールバックしない。
off - Kerberos を 使わず、NTLM または他の代替のものを代わりに 使う。
弱い暗号が許されない場合 (たとえば FIPS モード)、 既定値は強制的に required になる。
既定値: client use kerberos
= desired
このパラメーターは、smbclient(8)をはじめとする、Samba のコンポーネントが、 クライアントとして動作する時に、SPNEGO 交換の際にサーバーから提供されることが あるプリンシパルを使うかどうかを制御する。
これを有効にした場合、Samba は IP アドレスのみで定義されている サーバーへ接続する際にも Kerberos を使うことを試行する。しかし、Kerberos は名前に依存したプロトコルなので、通常こうした状況においては機能しない。
セキュリテイの観点から、これは *とても悪いアイデア* であり、 このパラメータは *使うべきではない* 。将来の Samba のバージョンでは これは削除される予定である。
これを無効にした場合、Samba はチケットを KDC に問い合わせる時、 サーバーを検索する時に用いた名前を使う。これにより、あるサーバーが ネットワーク上で用いられている名前とは別のプリンシパルとして認証を 要求することで、別のサーバーになりすましてしまうという事態を避ける ことができる。
Windows XP SP2 以降のバージョンは後者の動作を行うように変更されている。 また、Windows Vista 以降がサーバーとして機能する際にも、この 'rfc4178 hint' プリンシパルを提供しないようになっている。
このパラメータは Samba 4.2.1 では 無視され、この後の Samba リリースで(その機能と一緒に)削除予定である。
既定値: client use spnego principal
= no
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、 NTLMv2, NTLM と NTLMSSP外の LanMan 認証 のサポートが削除される。
このため、将来は、現在の既定値である
client use spnego = yes
が強制的に設定される。
この値により、Samba クライアントが認証の際に Simple and Protected NEGOtiation (RFC2478 で規定) をサポートしたサーバー (Windows XP 、 Windows 2000 、Samba 3.0 を含む) に対して SPNEGO の使用を試みるかどうかが制御される。 SPNEGO は Kerberos 認証の際に有効となる。
client NTLMv2 auth も
yes
に設定した場合、拡張セキュリティ (SPNEGO) が、
NTLMSSP内でのみ NTLMv2を使うために必要とされる。この動作は、
CVE-2016-2111 に対するパッチで導入された。
既定値: client use spnego
= yes
このパラメーターを使うと、nmbd が WINS サーバーに登録する追加のアドレスを 付加することができる。同様に、これらのアドレス(群)は、 clustering = yesが設定されているときに、 net ads dns registerが呼ばれると、既定で登録される。
既定値: cluster addresses
=
例: cluster addresses
= 10.0.0.1 10.0.0.2 10.0.0.3
このパラメーターは、Samba が ctdb に接続して tdb ファイルにアクセスし、 さらにメッセージ処理のバックエンドとして ctdb を使うべきかどうかを 指定する。
ctdb が動作している状態でクラスター構成を取る場合にのみ、
このパラメーターを yes
にすること。
既定値: clustering
= no
これは、クライアントから「ネットワークコンピューター」や net view
コマンド経由でサーバー上で利用可能な共有を一覧する際に、共有名の横に表示される文字列である。
コンピューター名の横に表示される文字列を設定したい場合は、server string パラメーターを参照のこと。
既定値: comment
=
# コメント文字列なし
例: comment
= Fred's Files
設定内容を格納するためのバックエンドを切り替える。設定可能な値は
file(デフォルト)およびregistry
である。smb.conf を読み込んでいる途中で
config backend = registry
を検出すると、それまでに読み込まれた設定内容は破棄され、その代りに
グローバルオプションがレジストリから読み込まれる。つまり、これは
レジストリのみの設定にするための仕組みである。共有の定義は即時には
読み込まれないが、その代りに registry shares
を yes にセットしてくれる。
注意:このオプションは、レジストリ設定自身の中でセットすることもできる。
既定値: config backend
= file
例: config backend
= registry
このオプションを指定することで、デフォルトの設定ファイル
(通常smb.conf
)の代わりのファイルを利用して、
設定を上書きすることが可能になる。このオプション自身が
config file 中に記述されるため、これには「鶏と卵」問題がある。
そのため、このパラメーターによって設定ファイルが変更されると、 新しい設定ファイルの内容が先頭からロードされる。
このオプションには、通常の変数置換が適用されるので、 うまく使えばとても便利であろう。
指定された設定ファイルが存在しない場合は読み込まれない (これにより、特定クライアントに対して、 特別な設定ファイルを指定するということが可能となる)。
既定値なし
例: config file
= /usr/local/samba/lib/smb.conf.%m
このパラメーターにより、サービスエントリの「複製」 が可能となる。指定されたサービスの設定が単純に現在のサービスへと複製される。 現在のセクションに設定されているパラメーターは、 複製元のセクションの設定を上書きする。
この機能を使うと、「ひな型(template)」となるサービスを作成した上で、 同様の設定のサービスを単純に作成するということが可能となる。 複製元のサービスは、 設定ファイル内で複製先のサービスより前に記述する必要があることに注意。
既定値: copy
=
例: copy
= otherservice
このパラメーターをno
にすると、winbindが
固有の krb5.conf を作成することを防止する。krb5 ライブラリが AD のサイトを
認識せず、そのため、可能性のある任意のドメインコントローラーから対象として
外すことがとても多いという理由で、winbind は通常これを行う。winbind は
サイトを認識し、固有の krb5.conf ファイルを作成することにより、
krb5ライブラリがローカルの DC を使うようにする。
winbind がこれを行うことを防止することは、winbind が知ることの出来ない、 システム上にある、システムの krb5.conf 中に特別なオプションを追加しなければ ならない場合に必要かもしれない。
既定値: create krb5 conf
= yes
ファイル作成時に付与されるパーミッションは、 DOS の属性を UNIX のパーミッションに変換することにより生成されるが、 最終的には、このパラメーターとビット単位の AND 演算が行なわれる。 このパラメーターは、ファイルの UNIX のパーミッションに対するビットマスクと 考えることができる。ここで設定されないビットは、 ファイル作成時のパーミッションから削除される。
このパラメーターの既定値は、
「group」
と「other」
の書き込みおよび実行権を UNIX のパーミッションから取り除いた値である。
この処理に引続き、Samba はこのパラメーターにより生成されたパーミッションを force create mode パラメーターの値とビット単位の OR 演算を行なう。 なおパラメーターの値はデフォルトで、000 に設定されている。
このパラメーターは、ディレクトリのパーミッション生成には関与しない。 directory mask パラメーターを参照のこと。
既定値: create mask
= 0744
例: create mask
= 0775
このパラメーターは、クライアントサイドのキャッシングポリシーを規定し、 オフラインキャッシュ機能を持つクライアントが、 共有上のファイルをどのようにキャッシュするかを規定する。 有効な値は、manual, documents, programs, disable である。
これらの値は、Windows のサーバー側の設定に対応している。
例えば、移動プロファイルが格納されている共有では、 csc policy = disable とすることで、 オフラインキャッシュを無効にできる。
既定値: csc policy
= manual
例: csc policy
= programs
clustering=yes
の指定を行う場合は、
ctdbd がどの unix ドメインソケットを監視するのかを、Samba に対して
教えてやる必要がある。ctdb 1.0 におけるデフォルトのパスは /tmp/ctdb.socket
であるが、これを smb.conf で明示してやらなければならない。
既定値: ctdbd socket
=
例: ctdbd socket
= /tmp/ctdb.socket
Samba と ctdb を使うクラスター環境において、 locking.tdb のような ctdb が扱う中心的なデータベースは、 長時間ロックしないことが重要である。 現在の Samba アーキテクチャにおいては、Samba がロックを行ったときに、 そのロックが続いた状態で、共有クラスターファイルシステムに対してファイルシステムコールが起きる場合がある。 指定したミリセカンド秒以上のロックの継続が検出された場合に、 このオプションによって Samba から警告を出力させることができる。 それが検出されたときには、smbd のログにデバッグレベル 0 のメッセージが出力され、 場合によっては syslog にも出力される。 このようなログメッセージが出力される理由として、 Samba がエクスポートするクラスターファイルシステムに対して実行する処理が、 通常よりも長くかかってしまった場合に発生することが多い。 クラスターに関する潜在的な問題をデバッグする際には、このメッセージが役に立つこともある。
既定値は 0 で、このログ出力を抑止する。
既定値: ctdb locktime warn threshold
= 0
このパラメーターは Samba と ctdb 間での接続のタイムアウト時間をミリ秒単位で指定する。
これは Samba をクラスターリングがサポート出来るようにコンパイルし、
clustering=yes
を設定した場合にのみ有効である。
クラスターブロック内に何らかのものがある場合、ブロック状態に追加しようと するときに、ctdb をとても長い時間待つことがたまにある。うまく動作するクラスター 環境においては、これは決して発生しないが、ちょっとした問題があるかもしれない とてもたくさんのコンポーネントがクラスター中にはある。クラスター間で何かを転送 するために、長いサービス時間がかかる、負荷の高いクラスター上では有効かもしれない という理由で、この値の正しい落とし所を選択するのはとてもトリッキーである。 この値を小さくしすぎると、クラスターが提供するサービスをデグレードする事になり、 長くしすぎると、クラスターそれ自身を、何らかの重大な障害から、長い時間リカバリ できなくなるかもしれない。
もしも、このパラメーターを設定する場合、これは smb.conf 中に存在する必要があるが、 レジストリに接続するのに ctdb が必要であるという理由で、レジストリ設定中 (通常はクラスター上)に配置するのは好ましくないことに注意。
ctdb timeout
を n に設定することは、クラスターのパニック
による応答に、どのプロセスも n ミリ秒以上待たないということになる。既定値として強く
推奨する0に設定(既定値)すると、Samba はそれを永久にブロックする。
既定値: ctdb timeout
= 0
このパラメーターはprintingでcups
が指定されたときだけ有効になる。
これが有効な場合、smbd が CUPS サーバーに接続時にタイムアウトするまでの時間を 指定する。もし、指定時間以上の秒数が経過しても接続が確立しない場合には 接続エラーとなる。
既定値: cups connection timeout
= 30
例: cups connection timeout
= 60
このパラメーターは、もしもprintingが
cups
で、もしもCUPSが1.0.x よりも新しいものを
使っている場合にのみ適用可能である。これは、Samba が CUPS サーバーと通信する時に、
暗号化を使うべきか否かを定義する。設定可能な値は
auto, yes と
noである。
auto に設定した場合、各 CUPS 接続のセットアップ時に TLS のハンドシェークを試みる。 もしもそれが失敗した場合、暗号化なし操作に切り替える。
既定値: cups encrypt
= no
このパラメーターは printing が
cups
に設定されている場合のみ有効である。
この値は、 CUPS ライブラリに直接渡されるオプションを記述した任意の形式の文字列である。
CUPS で有効な一般の印刷オプション ( CUPS の「Spftware Users' Manual」に記載されているもの ) はすべて設定できる。 また、設定対象のキューで有効な ( 「lpoptions -d printername -l」で表示される ) 任意のプリンター固有のオプションも設定できる。 複数のパラメーターは、ABNF指定のPAPIテキストオプションに準じた、空白で 分離された名前/値ペアでなければならない。複数の値を持つ場合 ("name={a=... b=... c=...}")は、中括弧がそのままで格納される。
Windows クライアントが Samba を経由して印刷を行なう際に CUPS サーバーの error_log
ファイルに
「Unsupported format 'application/octet-stream'」といったメッセージが含まれている場合、
このパラメーターを raw
に設定するとよい。
現在では /etc/cups/mime.{convs,types}
において、
システム全体で raw 印刷を有効にする必要はない。
既定値: cups options
= ""
例: cups options
= "raw,media=a4
このパラメーターは printing が
cups
に設定されている場合のみ有効である。
このパラメーターが設定されると、CUPS の client.conf
で設定された ServerName オプションの値が置き換えられる。
これは、仮想 Samba サーバー毎に異なる CUPS デーモンに接続する際に必要である。
なお、サーバー名に続きコロンの後ろにポート番号を記述することで、ポー ト番号を指定することも可能である。 ポートの指定が行なわれなかった場合、IPP のデフォルトポート (631) が使われる。
既定値: cups server
= ""
例: cups server
= mycupsserver
例: cups server
= mycupsserver:1631
実行するための DCE/RPC エンドポイントサーバーを指定。
既定値: dcerpc endpoint servers
= epmapper, wkssvc, samr, netlogon, lsarpc, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver
例: dcerpc endpoint servers
= rpcecho
このパラメーターの値(10進の整数)は、接続が利用されなくなったとみなされて 切断が行なわれるまでの経過時間(分)を表す。 deadtime はオープンされているファイ ルが存在しない時のみ有効である。
このパラメーターは、多数の利用されていない接続によって、サーバー上のリソースが 枯渇するのを防ぐのに有効である。
多くのクライアントは、このパラメーターをユーザーに意識させないように、 接続が切断されていた際に、自動で再接続を行なう機能を持っている。
ほとんどのシステムにおいて、このパラメーターを利用して、 数分でタイムアウトが発生するようにすることを推奨する。
deadtime が 0 の場合、タイムアウトによる自動的な切断は行なわれない。
既定値: deadtime
= 10080
例: deadtime
= 15
このブール値パラメーターが有効の場合、デバッグ用ヘッダーの中にデバッグクラス (DBGC_CLASS) が表示される。
現在利用可能なデバッグクラスに関する詳細は、log level の章を参照してほしい。
既定値: debug class
= no
このオプションを使うと、libsmb を使う smbd サーバおよびクライアント (smbclient, smbget, smbspool, ...) に対し、SMB3+ セッションが 確立されているときは常に、セッション ID、 復号化されたセッションキー、署名のキー、アプリケーションキー、 暗号化キーと復号化キーがダンプできるようになる。この情報は レベル0 のログ中に出力される。
注意: それらの値にアクセスすることは、ダンプしているセッション上で、 任意の暗号化した通信を復号化できることになる。このオプションはデバッグ 目的のためだけに有効にすること。
既定値: debug encryption
= no
ログメッセージに秒単位以上のタイムスタンプが必要な場合、 この真偽値のパラメーターを有効にすることにより、 マイクロ秒単位のタイムスタンプがメッセージに付加される。
このパラメーターを有効にする際は、 debug timestamp または debug syslog format が有効になっている必要があることに注意。
既定値: debug hires timestamp
= yes
fork されて生成された smbd(8) プロセスが同一のログファイルを共用している場合、 どのプロセスがメッセージを出力しているかを識別することは非常に難しい。 この真偽値パラメーターを有効にすることで、ログファイル中のタイムスタンプメッセージのヘッダーにプロセスIDが付加されるようになる。
このパラメーターを有効にする際は、 debug timestamp が有効になっている必要があることに注意。
既定値: debug pid
= no
このオプションを有効にすると、デバッグメッセージにタイムスタンプメッセージ ヘッダーが付くようになる。ただし debug timestamp に含まれるファイル名や関数情報には付加されない。 タイムスタンプを表すためだけに、新たなデバッグ行が発生することはない。
注意:このパラメーターは debug timestamp を上書きする。
既定値: debug prefix timestamp
= no
このオプションを有効にすると(yes
(別名 in_logs
) 又は always
) 、
デバッグメッセージは、従来 syslog に
よって生成されていたような1行形式で出力される。タイムスタンプは、
省略された月、スペースが埋め込まれた日付、および秒を含む時間で
構成される。これに続いて、ホスト名とプログラム名、および角カッコで
囲まれたプロセスIDが続く。
値 always
は、
STDOUT
又は STDERR
に対してもこのログ形式を生成する。
値no
は他のパラメータに依存し、通常は従来の2行形式
Samba ログをログファイルに生成する。
debug hires timestamp も有効にした場合、 RFC5424 形式のタイムスタンプが代わりに使用される。
既定値: debug syslog format
= no
Samba は root 権限で動作する時もあれば、 接続したユーザーの権限で動作する時もある。 このパラメーターを有効にすると、現在の euid、egid、uid、gid をログファイル中のタイムスタンプメッセージに付加する。
このパラメーターを有効にする際は、 debug timestamp が有効になっている必要があることに注意。
既定値: debug uid
= no
kerberos methodが "dedicated keytab" に設定されている場合に、kerberos の keytab ファイルへの絶対パスを指定する。
既定値: dedicated keytab file
=
例: dedicated keytab file
= /usr/local/etc/krb5.keytab
このパラメーターは、printable サービスにのみ適用される。 smbd が、Windows NT/2000/XP クライアントに対してプリンタードライバーを提供する際に、 Samba サーバー上の各プリンターでは、用紙サイズ、用紙の方向、両面印刷指定、 settings といった情報が定義されたデバイスモード(device mode)という値を設定する必要がある。 デバイスモードの適切な値は、プリンタードライバー自身のみが生成することができる (この処理は、Win32 プラットフォームでのみ実行することができる)。 smbd はデバイスモードを生成するドライバーのコードを実行できないため、 このフィールドの既定値としては、NULL が設定される。
Windows NT/2000/XP クライアントに対してプリンタードライバーを提供する上での問題点の多くは、 デバイスモードの生成に関するものである。 ドライバーによっては、デバイスモードとして NULL を設定すると、 クライアント側の Explorer.exe をクラッシュさせるものがある。 また、デバイスモードがドライバー自身によって生成されていないと(たとえば smbd がデフォルトのデバイスモードを生成するなど)、 クライアントのスプーラサービス(spoolsv.exe)を停止させてしまうものもある。
このパラメーターは、熟慮の上、プリンタードライバーのテストを行なった上で用いること。
デバイスモードを NULL のままにしておき、Windows クライアントに適切な値を設定される方が好ましい。
ただし、ドライバーが常にこの処理を行なうとは限らないため、
default devmode = yes
の設定を行なうことで、smbd にデフォルトのデバイスモードを生成するような指示を行なうことができるようになっている。
Windows NT/2000 の印刷システムやデバイスモードに関する詳細な情報については、 MSDN documentation を参照のこと。
既定値: default devmode
= yes
このパラメーターは、 要求されたサービスが存在しなかった場合に接続されるサービス名を指定する。 パラメーターの値に、大括弧('[' と ']')は不要であることに注意(設定例を参照のこと)。
このパラメーターに既定値はない。 このパラメーターが設定されていない場合、 存在しない共有に対する接続は失敗する。
default service は guest ok と read only パラメーターを有効にしたサービスにするのが一般的である。
外面的なサービス名はクライアントから要求されたサービス名に変換される。
これは、%S
のようなマクロをワイルドカードサービスに適用する際に、非常に有用である。
default service のサービス名に現れる「_」文字は、「/」にマッピングされる。 これにより、いろいろと面白いことができるだろう。
既定値: default service
=
例: default service
= pub
Windows ではファイルのオープン時に他のプロセスとの共有方法を指定することができる。 あるプロセスがファイルを開こうとした時に指定した共有方法が 別のプロセスによって指定された共有方法と共存できないようなものであった際に 共有違反が発生する。 このパラメーターにより、smbd は Windows サーバーのように動作するようになり、 「共有違反」のエラーメッセージを 1 秒待ってから返却するようになり、 クライアントはこの間に共有違反を起こしたファイルをクローズすることが可能となる。
UNIX のデフォルトでは、こうした挙動は行なわれない。
このパラメーターは Samba の挙動をより Windows に近づけるためのものであり、 無効にする必然性はないであろう。
既定値: defer sharing violations
= yes
このパラメーターは、グループの削除が要求された際に、 smbd(8) によって ROOT 権限で 実行されるスクリプトのフルパス名である。
%g
はグループ名に置換される。
スクリプトは Windows NT のドメイン管理ツールを使用して設定を行なう際にのみ有効である。
既定値: delete group script
=
Samba 2.2 における Windows NT/2000 クライアントに対応した MS-RPC ベースの印刷サポートの実装にともない、 DeletePrinter() RPC 呼び出しを発行することにより、 実行中にプリンターを削除することが可能になった。
Samba ホスト上では、
実際の印刷システム上から物理的にプリンターが削除される。
deleteprinter command パラメーターには、
プリンターを印刷システムとsmb.conf
から削除するために
必要な操作を実行するためのスクリプトを設定する。
deleteprinter command は printer nameのみをパラメーターに設定されて自動的に呼び出される。
deleteprinter command が実行されると、
smbd
は削除対象のプリンターを無効にするために、
smb.conf
を読み直す。
共有名が依然として有効な場合、smbd
はクライアントに
ACCESS_DENIED エラーを返却する。
既定値: deleteprinter command
=
例: 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
を実行するため、管理者は smbd
にroot
アカウント(uid = 0)で接続するか、アカウントにSeDiskOperatorPrivilege
が付与されている必要がある。
delete share command
で指定された
スクリプトは root 権限で実行される。
コマンド実行時に、smbd
は自動的に以下の
2つの引数を付加してdelete share command
を
実行する。
configFile
- smb.conf
の場所
shareName
- 既存の共有名
このパラメーターは、ファイル共有設定の削除にのみ使われる。印刷共有の設定を 削除するときはdeleteprinter commandを参照のこと。
既定値: delete share command
=
例: delete share command
= /usr/local/bin/delshare
このパラメーターは、 Windows NT のドメイン管理ツールによってユーザーがグループから削除された際に実行されるスクリプトのフルパス名である。
これは smbd(8) によって ROOT 権限で 呼び出される。
%g
はグループ名に置換され、
%u
はユーザー名に置換される。
既定値: delete user from group script
=
例: delete user from group script
= /usr/sbin/deluser %u %g
このパラメーターは、リモート RPC (NT) ツールによってユーザーの管理が行なわれた際に、 smbd(8) によって実行されるスクリプトのフルパス名である。
このスクリプトは、「ドメインユーザーマネージャ」や rpcclient
により、リモートのクライアントがサーバーからユーザーを削除した際に呼び出される。
このスクリプトは指定されたユーザー名の UNIX ユーザーを削除するものでなければならない。
既定値: delete user script
=
例: delete user script
= /usr/local/samba/bin/del_user %u
このオプションは、アクセスが禁止 (veto) されたディレクトリ、
ディレクトリ、不可視なファイル、あるいは(どこにも繋がっていない
シンボリックリンクのような)ディレクトリをを含むディレクトリを削除しようと
する際に使われる
(veto files, hide special files,
hide unreadable, hide unwriteable files
オプションを参照のこと)。
このオプションが no
(デフォルト) の場合、
アクセスが禁止されたディレクトリ内にアクセスを禁止されていない
ファイルやディレクトリが含まれていても、
ディレクトリ内の削除は失敗する。これは通常期待されている動作であろう。
このオプションを yes
に設定すると、
Samba はアクセスが禁止されたディレクトリ内でも
再帰的にすべてのファイルやディレクトリを削除しようとする。
NetAtalk のようなファイルサーバーを併用する際は、
通常 DOS/Windows ユーザーからの参照するのを禁止しているディレクトリ内にメタファイル
(たとえば .AppleDouble
など)を作成するため、このオプションが有用である。
delete veto files = yes を指定することで、 これらのディレクトリは、親ディレクトリが削除された際に、自動的に削除される (ただし、ユーザーはディレクトリを削除するパーミッションを持っている必要がある)。
既定値: delete veto files
= no
dfree cache time
パラメーターは、
Samba のディスク空き容量の計算で問題が発生するシステムでのみ利用すること。
Ultrix では問題の発生することが知られているが、
他のオペレーティングシステムで発生するかも知れない。
この問題は、各々のディレクトリの一覧表示の終了時に
「終了 再試行 無視 (Abort Retry Ignore)」のエラーが発生する形で顕在化する。
このパラメーターは Samba 3.0.21 で新設されたものである。 これは、smbd がディスク空き容量の結果をキャッシュする時間を秒単位で指定する。0 (既定値) の場合、キャッシュは行なわれない。 これにより、高負荷のサーバーで dfree command のスクリプトが頻繁に呼ばれて負荷が増大することが避けられる。
このパラメーターのデフォルト値は 0 であり、キャッシュは行なわれない。
既定値なし
例: dfree cache time
= 60
dfree command
パラメーターは、
Samba のディスク空き容量の計算で問題が発生するシステムでのみ利用すること。
Ultrix では問題の発生することが知られているが、
他のオペレーティングシステムで発生するかも知れない。
この問題は、各々のディレクトリの一覧表示の終了時に
「終了 再試行 無視 (Abort Retry Ignore)」のエラーが発生する形で顕在化する。
このパラメーターでは、 総ディスク容量と空き容量を計算する内部ルーチンを置き換える外部スクリプトを指定する。 以下に、この機能を果たすスクリプトの仕様を示す。
Samba 3.0.21 において、このパラメーターは共有単位に設定可能なパラメーターとなり、 新たに追加された dfree cache time パラメーターにより、 高負荷のシステムにおいて、このスクリプトの出力結果をキャッシュできるようになった。
外部スクリプトは、対象となるファイルシステム中のディレクトリを示すパラメーター 1 つを受け取る。
これは通常 ./
という文字列からなる。
スクリプトはアスキー文字で 2 つの整数を返さなければならない。
1 つめはブロック単位のディスク総容量で、 2 つめは利用できるブロック数でなければならない。
3 番目の戻り値として、オプションでブロックサイズをバイト単位で返却させることもできる。
デフォルトのブロックサイズは 1024 バイトである。
注意: スクリプトは、setuid や setgid しては ならず、 (root のみ書き込み可能で)所有者は root である必要がある。
dfree スクリプト(実行可能にする必要がある)を以下に示す:
#!/bin/sh df "$1" | tail -1 | awk '{print $(NF-4),$(NF-2)}'
もしくは、以下のようなものも考えられる(Sys V ベースのシステムの場合):
#!/bin/sh /usr/bin/df -k "$1" | tail -1 | awk '{print $3" "$5}'
システムによっては、コマンド名をフルパスで記述する必要がある場合があるので注意。 さらに、スクリプトに渡される引数は、空白や改行のような特殊文字を含む場合、 引用符でくくらなければならないことにも注意。
デフォルトは内部ルーチンにより、ディスクの総容量と空き容量が計算される。
既定値なし
例: dfree command
= /usr/local/samba/bin/dfree
このパラメーターは、パーミッションを示す8進数の数値であり、 UNIX 側のディレクトリ作成時に DOS の属性から UNIX のパーミッションを生成する際に使われる。
ディレクトリ作成時に付与されるパーミッションは、 DOS の属性と UNIX のパーミッションとのマッピングにしたがって、 DOS の属性を UNIX のパーミッションに変換することにより生成されるが、 最終的には、このパラメーターとビット単位の AND 演算が行なわれる。 このパラメーターは、ディレクトリの UNIX のパーミッションに対するビットマスクと 考えることができる。ここで設定されないビットは、 ディレクトリ作成時のパーミッションから削除される。
このパラメーターの既定値は、 「group」と「other」の書き込み権を UNIX のパーミッションから取り除き、ディレクトリの所有者のみが変更可能にしたものである。
この処理に引き続いて、Samba はこのパラメーターで生成された UNIX のパーミッションと force directory mode パラメーターの値との OR 演算を行う。 このパラメーターは既定では 000 に設定されている(つまり、追加されるパーミッションはない)。
既定値: directory mask
= 0755
例: directory mask
= 0775
このパラメーターを有効にすると、 Samba の NetBIOS サポート機能が無効になる。 Windows 2000 より後のバージョンの Windows では、NetBIOS のみを使用できる。
NetBIOS サポートを無効にすると、 NetBIOS のみをサポートするクライアントからは Samba サーバーにアクセスできなくなることに注意。
既定値: disable netbios
= no
このパラメーターを有効にすることで、 Samba の SPOOLSS MS-RPC サポートを無効にし、Samba 2.0.x と同様の動作をさせることが可能となる。 Windows NT/2000 クライアントは、Lanman 形式の印刷コマンドを利用することも可能である。 Windows 9x/Me は、このパラメーターに影響されない。 なお、このパラメーターを有効にすると、NT のプリンタープロパティを利用した、 Windows NTのプリンター追加ウィザードによる Sambaマシンへのプリンタードライバーのアップロード機能が無効になる。 また、Windows NT/2000 クライアントが、必要に応じて Samba マシンからプリンタードライバーをダウンロードする機能も同時に無効になる。 このパラメーターを有効にする際は、充分注意すること。
既定値: disable spoolss
= no
このパラメーターにより、Samba がオフラインのファイルの判定に DMAPI を用いるかどうかが制御される。 これは、通常ファイルを自動的にテープに移動していくような階層型ストレージとの連携の際に用いられる。
Samba はファイルの状態を DMAPI アプリケーションが登録したイベントを確認することで推測することに注意。 この方法は、多くの階層型ストレージシステムで機能するが、一部機能しないシステムもあるかも知れない。この場合、 Samba はファイルがオフラインであるという誤った報告を行なうことになる。
このパラメーターは、コンパイル時に DMAPI の実装サポートを確認できた場合にのみ有効となる。 また、実行時にシステムで DMAPI が使用可能であることが確認できた場合にのみ使用される。
既定値: dmapi support
= no
このオプションは、Sambaサーバー自身で処理できない DNS リクエストの フォワード先となる DNS サーバー群を指定する。
このパラメーターは、Samba 内蔵の DNS サーバーが使用されている場合 のみ有効である。コロン(':') を使い、アドレス部分と分離することで、ポート 番号を追加できる。ポート番号を指定した場合、IPv6 アドレスは大括弧 ('[' と ']') でくくらなければならない。ポート指定の無いIPv6 フォワーダー アドレスは、大括弧は不要で、既定のポートは 53 となる。
既定値: dns forwarder
=
例: dns forwarder
= 192.168.0.1 192.168.0.2 ::1 [2001:db8::1] [2001:db8:1:2::1]:54
サーバが DNS トラフィックを監視するポートを指定する。
これにより、他の DNS サーバを Samba のフロントにして、フォワード として使用させることが可能になる。
動的 DNS 更新は、Samba へのフォワード時に、フロント DNS サーバによってプロキシされない場合がある。動的 DNS 更新 プロキシは、 フロントとして使われる他の DNS サーバの機能に依存する。
既定値: dns port
= 53
WINS サーバーとして機能している nmbd(8) が WINS サーバーとして機能している場合、ある NetBIOS 名が登録されていなかった時に、その NetBIOS 名を DNS 名として扱い、名前の問い合わせを行ったクライアントに代わってその名前を DNS サーバーに対して問い合わせるように設定する。
NetBIOS 名の最大長は 15 文字であるため、 問い合わせる DNS 名(もしくはDNSの別名)も、最大15文字に制限される。
nmbd
が DNS への名前解決を行う際には、問い合わせにより他の処理が停止させないために、自分自身を複製したプロセスを生成する。
既定値: dns proxy
= yes
このオプションは、DNS の更新が行われる際に実行されるコマンドを 設定する。コマンドは、TSIG-GSS を使ってローカルマシンの DNS 名を 更新する必要がある。
既定値: dns update command
= ${prefix}/sbin/samba_dnsupdate
例: dns update command
= /usr/local/sbin/dnsupdate
有効にすると(既定値では無効)、未使用のダイナミックDNSレコードは定期的に 削除される。
このオプションは Samba 4.9 より前のバージョンでインストールされて 作成された環境では有効にすべきでない。これを動作させると、静的な DNS エントリを失うことになる。これは、ダイナミック DNS レコードを静的に、 静的なレコードをダイナミックに設定してしまうという、以前の Samba バージョン でのバグ (BUG 12451) である。
もしも、ある DNS 名用のレコードが静的 (エージングなし)であれば、それ以外の、 その DNS 名用のレコードは削除されない。
既定値: dns zone scavenging
= no
このオプションは、bind DLZ モジュールから、DNS ゾーン転送を 要求する権限がある IP アドレスの一覧を指定する。
IP リストは、カンマ と 空白で分離され、 hosts allow で 使われているのと同じ文法、具体的には、IP アドレス、IP プレフィックス、 IP アドレスマスク を使って指定する。
これは DNS サーバオプションなので、当然、ホスト名は使えない。
規定の動作はすべての要求を拒否する。要求は、要求元クライアントが、このリスト 中にあった場合にのみ、かつ、smbconfoption name="dns zone transfer clients deny"/> に無い場合にのみ許可される。
既定値: dns zone transfer clients allow
=
例: dns zone transfer clients allow
= 192.168.0.1
このオプションは、bind DLZ モジュールから、DNS ゾーン転送を 要求する権限がある IP アドレスの一覧を指定する。
IP リストは、カンマ と 空白で分離され、 hosts allow で 使われているのと同じ文法、具体的には、IP アドレス、IP プレフィックス、 IP アドレスマスク を使って指定する。
これは DNS サーバオプションなので、当然、ホスト名は使えない。
このリスト内にあるクライアントが zone 転送要求を送信した場合、 たとえそれらが dns zone transfer clients allow 中に あったとしても常時拒否される。これにより、承認されたサブネット内の、 特定の拒否クライアントとを定義できる。
既定値: dns zone transfer clients deny
=
例: dns zone transfer clients deny
= 192.168.0.1
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、 NT4 形式のドメインログオン(Samba AD DCとは異なる) のサポートが削除される。
このため、将来は、現在の既定値である
domain logons = no
が強制的に設定される。
このパラメーターが yes
に設定されると、
Samba サーバーは、自身が所属する workgroup
に所属する Windows 95/98 に対するドメインログオン機能を提供するようになる。
さらに、Samba サーバーは、
Windows NT 4.0 形式のドメインコントローラーとしても機能するようになる。
この機能の設定に関する詳細な記述は、
Samba-PDC-HOWTO の「Domain Control」章を参照のこと。
既定値: domain logons
= no
このオプションにより、 smbd(8) が
WAN 環境におけるブラウズリストの統合を行なうことが可能になる。
このオプションを設定すると、nmbd
は、指定された workgroup
のドメインマスターブラウザーであることを表す、ドメイン固有の特別な
NetBIOS 名(訳注:NetBIOS 名で末尾が 0x1b のユニーク名を指す) を登録する。
各サブネット上にある、同じ名前の workgroup
に属するローカルマスターブラウザーは、この nmbd
に対して、
ローカルに収集したブラウズリストを提供するとともに、
smbd(8)
に対してネットワーク全体のブラウズリストの完全な複製の提供を要求するようになる。
ブラウザーのクライアントは、ローカルマスターブラウザーと通信することで、
個々のサブネットのブラウズリストではなく、
そのドメイン全体のブラウズリストを取得できるようになる。
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 logons = Yes の場合、このパラメーターもデフォルトで Yes となり、Samba は PDC として動作するようになる。 domain master = No の場合、Samba は BDC として動作するようになる。通常、このパラメーターを「No」に設定する必要があるのは、BDC として機能させる場合のみである。
既定値: domain master
= auto
システムに存在するディレクトリには、
クライアントに参照させたくないものや、
無限に深い(再帰的)なものが存在する(たとえば Linux での /proc
)。
このパラメーターは常に空のように見せかけるサーバー側のディレクトリをカンマで区切って指定する。
Samba が要求する「dont descend」の書式は一定ではない。
たとえば /proc
ではなく ./proc
でなければならないかもしれない。
実験してみるのが最良の方法である。 :-)
既定値: dont descend
=
例: dont descend
= /proc,/dev
DOS SMB クライアントは、サーバー側でも自身と同じ文字コードセットを使用していると想定する。 このオプションにより、 Samba が DOS クライアントと通信する際に用いられる文字コードセットを指定する。
デフォルトは Samba にインストールされた文字コードセットによって異なる。 Samba は、文字コードセット 850 の使用を試みるが、使用できない場合は ASCII を使用する。 testparm(1) コマンドを実行することで、システム上の既定値を確認することが可能である。
既定値なし
Samba の既定の動作では、ファイルやディレクトリの所有者のみが アクセス権を変更できるという、UNIX的な仕様になっている。しかし、この仕様が DOS/Windows のユーザーを混乱させてしまうことも多い。このパラメーターを有効に することによって、(何らかの手段によって)ファイルに書き込み権のあるユーザーは、 パーミッション( ACL を含む)の変更もできるようになる。ファイルの所有グループに 所属しているユーザーは、グループに対して読み込み権限しか与えられていない場合は パーミッションの変更を行なうことができないことに注意。ファイルやディレクトリの 所有者を変更することも可能である。 ネイティブな Windows データをメタデータとして格納する、VFS モジュール acl_xattr か acl_tdb は、ロードされるどのような共有に対しても、Windows の ACL を正しく エミュレートするために、このオプションを自動的にオンにする事が要求される ことに注意。
既定値: 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++ はファイルが変更されたと報告し続けてしまう。
このオプションをyes
に設定することで 2 つの日付は一致し、Visual C++ も幸福になれる。
既定値: dos filetime resolution
= no
DOS や Windows では、ファイルに書き込み権のあるユーザーが、
ファイルのタイムスタンプを変更することが可能である。POSIXの仕様では、
ファイルの所有者かrootのみがタイムスタンプを変更できる。Sambaの既定値は、DOSの
仕様をエミュレートし、smbd
の実効ユーザーが、
ファイルの所有者でなくても、タイムスタンプの変更を可能にする。
Microsoft Office 2000 以降で行なわれた変更に対応するため、Samba 3.0.14 以降では
既定値が「no」から「yes」に変更された。このパラメーターが「yes」になっていない
場合、ファイルが複数のユーザー間で共用されていると、Microsoft Excel はファイルが
他のユーザーによって変更されたという警告のダイアログボックスを表示してしまう。
既定値: dos filetimes
= yes
有効にした場合、このオプションは Samba に(Active Directory
のドメインコントローラとして動作している場合) 、内部メッセージ
バスを使ってデータベースイベントをストリーミングさせる。
Samba の python バインディングを使ってビルドされたスクリプトは、
dsdb_event
を使って
サービスとして登録することで、そのイベントをリッスンできる。
これは、log level 中で記述される 監査ログのためには必要ではない。
メッセージの配信は保障されていないので(testsuite で対応する 機能)、代わりに、これは、外部監査用の機能ではなく、開発者オプション (Samba testsuiteを手助けする)と考えるべきである。
Samba データベースイベントは、dsdb_json_audit:5
のように、log level を適切に設定
していれば、通常のログ収集方式でもログが記録される。
既定値: dsdb event notification
= no
有効にした場合、このオプションは Samba に(Active Directory
のドメインコントローラとして動作している場合)、内部メッセージ
バスを使ってグループメンバシップの変更をストリーミングさせる。
Samba の python バインディングを使ってビルドされたスクリプトは、
dsdb_event
を使って
サービスとして登録することで、そのイベントをリッスンできる。
これは、log level 中で記述される 監査ログのためには必要ではない。
メッセージの配信は保障されていないので(testsuite で対応する 機能)、代わりに、これは、外部監査用の機能ではなく、開発者オプション (Samba testsuiteを手助けする)と考えるべきである。
Samba データベースイベントは、dsdb_json_audit:5
のように、log level を適切に設定
していれば、通常のログ収集方式でもログが記録される。
既定値: dsdb group change notification
= no
有効にした場合、このオプションは、Samba に(Active Directory
のドメインコントローラとして動作している場合)、内部メッセージ
バスを使ってパスワードの変更とリセットイベントを、ストリーミングさせる。
Samba の python バインディングを使ってビルドされたスクリプトは、
dsdb_event
を使って
サービスとして登録することで、そのイベントをリッスンできる。
これは、log level 中で記述される 監査ログのためには必要ではない。
これは、メッセージの配信が保証されていない(テストスイートが 動作する機能)ため、外部監査用の機能ではなく、(Samba のテストスイートを) 支援する)開発者向けオプションとしてのものであると考えるべきである。
Samba データベースイベントは、dsdb_password_json_audit:5
のように、log level を適切に設定
していれば、通常のログ収集方式でもログが記録される。
既定値: dsdb password event notification
= no
この真偽値パラメーターは、Samba が共有上で SMB2 の永続的ファイルハンドル (durable file handle) の取得を許可するかどうかを制御する。
永続的ファイルハンドルは、 kernel oplocks = no、 kernel share modes = no、 posix locking = noの場合、すなわち 共有が CIFS/SMB2 によるアクセス専用に設定され、ローカルの UNIX プロセスや NFS 経由での操作との相互運用性をサポートしない設定となっている場合に 限り有効となる点に注意すること。
また、永続性は、delete on close フラグが設定されている ファイルハンドルに対しては許可されないことにも注意すること。
既定値: durable handles
= yes
この真偽値パラメーターは、smbd(8) のクライアントが、共有上の拡張属性へ のアクセスを行ってよいかどうかを定める。既定の VFS モジュールを用いてこのパラ メーターを有効にするためには、以下のことが必要である。
Samba は拡張属性サポートを有効にしてビルドされていること が必要である。
共有により用いられるファイルシステムは、拡張属性をサポート している必要がある。(例えば getfattr(1)、 setfattr(1) といったユーティリティが動作しなければ ならない。)
拡張ユーザ属性へのアクセスは、ベースとなるファイルシステムで 許可されている必要がある(すなわち、Linux 上での user_xattr システム依存オプション のようなものを付けてマウント)。
このオプションは、ファイルシステム上の "user" 属性名前空間をクライアントに対して公開する。 Windows の規則に適合するため、名前空間のプレフィックス ("user.") は クライアント上においては、属性の名前から取り去られる。他の属性の名前空間 (たとえば "security", "system", や "trusted" など) の取り扱いは、このオプションでは 影響しない。
SMB プロトコルでは、属性値が 64K におよぶ長さであっても設定できる。 そして NTFS 上では、各ファイルごとの拡張属性の保存容量は、最大 64K である。 ある種のファイルシステムでは、制限が小さすぎるかもしれない。EA 空間 の制限が小さすぎる ファイルシステムでは予期しない異常な結果が発生する場合がある。 Samba 4.9.0 とそれ以降、既定値は yes に変更となり、既定の状態でインストール する場合、Windows ファイルサーバとの互換が向上する。
既定値: ea support
= yes
Elasticsearch バックエンドを、Spotlight 問い合わせで使う時に、 Elasticsearch サーバの名前を指定する。
既定値: elasticsearch:address
= localhost
例: elasticsearch:address
= needle.haystack.samba.org
検索クエリで不明なスポットライト属性を無視する。サポートされていない属性
"kMDItemTopic"
を使用するクエリの例は、
次のようになる。
kMDItemTopic=="hotstuff"
既定では、このような型を使用するクエリは完全に失敗する。このオプションを
有効にすると、型の一致がより大きな式の下位式である場合、この下位式は無視される。
既定値: elasticsearch:ignore unknown attribute
= no
例: elasticsearch:ignore unknown attribute
= yes
検索クエリで不明なスポットライトの種類を無視する。サポートされていない種類の
"public.calendar-event"
を使用するクエリの例は
kMDItemContentType=="public.calendar-event"
のようなものである。既定ではこのような型を使用するクエリは完全に失敗する。
このオプションを有効にすると、型の一致がより大きな式の下位式である場合、
この下位式が無視される。
既定値: elasticsearch:ignore unknown type
= no
例: elasticsearch:ignore unknown type
= yes
Elasticsearch バックエンドを Spotlight 問合せのバックエンドとして 使う場合、 Elasticsearch インデックスの名前を指定する。 既定値は "_all" で、これは、すべてのインデックスに対して検索操作を実行 する特別な Elasticsearch の値である。
既定値: elasticsearch:index
= _all
例: elasticsearch:index
= spotlight
JSON 形式での、メタデータ属性マッピングを指定するファイルへのパス。 Spotlight RPC サービスの Elasticsearch バックエンドで使われる。
既定値: elasticsearch:mappings
= ${prefix}/var/samba/elasticsearch_mappings.json
例: elasticsearch:mappings
= /usr/share/foo/mymappings.json
JSON 形式での、メタデータ属性マッピングファイルへのパス。 Spotlight RPC サービスの Elasticsearch バックエンドで使われる。 値 0 は無制限を意味する。
既定値: elasticsearch:max results
= 100
例: elasticsearch:max results
= 10
Elasticsearch バックエンドを使う Spotlight 問い合わせで使う Elasticsearch サーバの TCP ポートを指定する。
既定値: elasticsearch:port
= 9200
例: elasticsearch:port
= 9201
Elasticsearch バックエンドを使う Spotlight 問い合わせで使う、 Elasticsearch サーバと通信する時 HTTPS を使うかどうかを指定する。
既定値: elasticsearch:use tls
= no
例: elasticsearch:use tls
= yes
「Advanced Server for Unix (ASU)」というプロダクトを実行しているホストでは、 IPC コネクションのみをサポートするビルトイン [ADMIN$] 共有が作成されるなど、 ASU 特有の動作が幾つか存在する。長年、これは smbd の既定値の動作でもあった。 ところが、Print Migrator tool というマイクロソフトのアプリケーションでは、 リモートのサーバーで [ADMIN$] というファイル共有がサポートされている必要がある。 このパラメーターを無効にすることで、smb.conf に [ADMIN$] というファイル共有を作成することが可能になる。
既定値: enable asu support
= no
このパラメーターは、コアダンプが内部出口(internal exits)に書かれるように
指定する。通常これはyes
に設定する。
決してこれを変更してはならない。
既定値: enable core files
= yes
例: enable core files
= no
この廃止予定のパラメーターは、smbd が
net rpc rights
もしくは Windows 側のユーザー、グループ管理ツールにより、特定の SID に対して指定のユーザー権利を付与する機能を制御する。
このパラメーターはデフォルトで有効となっているが、Domain Admins
グループのメンバーがユーザーやグループにユーザー権利を割り当てることで、
root 権限で実行される smbd の処理が該当ユーザーとして接続した状態で実行されることを防止するために無効にすることも可能である。
ユーザー権利を使用することで、例えば smbd が動作するサーバーの root 権限を与えずに、 Samba ドメインに参加する権利を付与することが可能である。
より詳細な説明については、Samba HOWTO 中の記載を参照のこと。
既定値: enable privileges
= yes
このパラメータは Samba 4.11 から非推奨となり、 (NTLM, NTLMv2 または Kerberos 認証とは異なり) 平文のサポート は将来の Samba リリースでは削除される。
そのため、将来は、現在の既定値である encrypt passwords = yes
が強制された動作となる。
この真偽値パラメーターにより、 クライアントとのネゴシエーションに暗号化パスワードを利用するかどうかが決定される。 Windows NT 4.0 SP3 以降 や Windows 98 以降では、 レジストリの変更をしない限り、暗号化パスワードがデフォルトである。(訳注: これ以前のバージョンでも暗号化パスワードがデフォルトである。ただし、暗号化パスワードの利用ができなかった場合に平文パスワードを送出する点が異なる。) Samba で暗号化パスワードを使う方法は Samba HOWTO collection 中の「User Database」の章を参照してほしい。
Microsoft の暗号化パスワードを想定して、 平文パスワードのサポートを無効にした Windows クライアントは、 暗号化パスワードが有効になっており、 アカウントのパスワードが適切に暗号化されている Samba サーバーにのみ接続できる。 ユーザーアカウントに対して暗号化パスワードを作成する方法については、 smbpasswd コマンドのマニュアルページを参照のこと。
Microsoft 社の Windows 製品では、すでに平文パスワードのサポートは行なわれていない(訳注: 設定としては残存している)ため、 平文パスワードの利用は推奨できない。 平文パスワードを使用した場合は、このパラメーターを no にすること。
暗号化パスワードを正しく機能させるためには、
smbd(8) がローカルの
smbpasswd(5) ファイル (設定と保守の方法に関する情報は
smbpasswd(8) プログラムを参照)を参照するようにするか、
security = [domain|ads] パラメーターを設定して、
smbd
が別のサーバーで認証を行うようにする必要がある。
既定値: encrypt passwords
= yes
このオプションにより、 Samba に実装されている複数サブネット間でのブラウザーのアナウンスメントに関する拡張が有効になる。 ただし、この拡張は、Microsoft の実装の標準とは異なる。
ブラウザーのアナウンスメントに関する一つ目の拡張点は、 Samba のWINS サーバーに登録されているすべてのドメインマスターブラウザーを問い合わせる定期的なワイルドカードクエリと、 返答に含まれる各 DMB と行なわれるブラウズリストの同期処理のサポートである。 二つ目の拡張点は、DMB として識別されているマシンとの間で 定常的に行なわれるランダムなブラウズリストの同期処理のサポートである。 (訳注: これは 120151 などで記載されている、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
このパラメーターは、
Samba がマイクロソフトの「イベントビューアー」ユーティリティ経由での表示を可能とするログファイル名の一覧を定義する。
一覧に含まれるログに対しては、ディスク上の
$(statedir)/eventlog
内に、
対応する TDB ファイルが割り当てられる。
管理者は、外部のプロセスを用いて
/var/log/messages
のような一般の UNIX ログファイルを解析し、
イベントログの TDB ファイルにエントリを書き込む必要がある。
イベントログのエントリを書き込む方法については、eventlogadm(8) ユーティリティを参照のこと。
既定値: eventlog list
=
例: eventlog list
= Security Application Syslog Apache
NTFS や Windows VFAT ファイルシステムでは、
すべてのファイルとディレクトリの作成時刻を保持している。
これは UNIX が保持している ctime (状態変更時刻)とは異なるため、
Samba の既定動作では UNIX が保持している中で最も古い時刻を報告する。
共有でこのパラメーターを yes
にした場合、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
この真偽値オプションは smbd
が
Linux 上で Open File Description locks の使用を強制的にに無効にする。
このオプションは、これが何を引き起こすかを分かっていない限り既定値から 変更してはならない。
既定値: smbd force process locks
= no
このパラメーターは、Samba によって作成されたファイルのパーミッションに
必ず設定される UNIX のパーミッションビットを指定する。
これは、ファイルの作成時時に、ファイルのパーミッションビットに対して、
このパラメーターの値でビット単位の OR 演算を行なうことで実現される。
このパラメーターの既定値は(8進で)000である。
このパラメーターの値がビット単位の OR 演算に用いられるのは、
create mask
パラメーターの適用後である。
下記の例は、作成されるすべてのファイルに対し、 グループ(group)とその他のユーザー(others)の読み込みと実行ビットと、 所有者(user)の読み込み/書き込み/実行ビットが必ず付与されるようにする。
既定値: force create mode
= 0000
例: force create mode
= 0755
このパラメーターは、Samba によって作成されたディレクトリのパーミッションに
必ず設定される UNIX のパーミッションビットを指定する。
これは、ディレクトリの作成時に、
パーミッションビットに対して、このパラメーターの値でビット単位の
OR 演算を行なうことで実現される。
このパラメーターの既定値は 000 (8 進数表記)である。この場合、作成されるディレクトリに対して特にパーミッションビットは追加されない。
このパラメーターの値が適用されるのは、
directory mask
パラメーターの適用後である。
下記の例は、作成されるすべてのディレクトリに対し、 グループ(group)とその他のユーザー(others)の読み込みと実行権ビットと、 所有者(user)の読み込み/書き込み/実行ビットが必ず付与されるようにする。
既定値: force directory mode
= 0000
例: force directory mode
= 0755
このパラメーターには、 このサービスに接続するすべてのユーザーのデフォルトの所属グループと見なされる UNIX のグループ名を指定する。 このパラメーターを使うと、サービス上のファイルに対するアクセスの際のパーミッションチェックには、 ここで指定したグループを用いることができるため、ファイル共有を行う際に便利である。 この設定を行うことで、 このサービス内において提供するファイルやディレクトリに対して指定されたグループ名にパーミッションを割り当てることにより、 Samba の管理者がこれらのファイルの共有を許可/不許可にすることができるようになる。
Samba 2.0.5 以降では、このパラメーターの機能が拡張されている。
'+' 文字からはじまるグループ名が設定されていた場合、
現在共有にアクセスしているユーザーが設定されたグループのメンバーだった場合のみ、
そのグループをユーザーのデフォルトのプライマリグループに設定する。
この動作により、該当のグループに予め所属しているユーザーのみが、
そのグループを所有者とするファイルを作成する設定を行うことが可能となる。
これにより、所有権の設定をより細かく行なうことが可能となる。
たとえば、force group = +sys
という設定を行った場合、
sys グループに所属しているユーザーが Samba の 共有 にアクセスした際にのみ、
デフォルトのプライマリグループが sys に設定される。
その他すべてのユーザーは、通常のプライマリグループのままとなる。
force user
パラメーターも設定した場合、
force group
で指定したグループが
force user
で指定したユーザーのプライマリグループよりも優先される。
既定値: force group
=
例: force group
= agroup
Windows NT (以降)の OS から印刷を行なう場合、
smb.conf
中の各プリンターには、
クライアントから使用可能な名前が 2 つある。
最初のものは smb.conf で定義された共有名(短い名前)である。
Windows 9x クライアントからは、このプリンター名しか使用できない。
プリンターに割り当てられたもう一つの名前は、Samba サーバーの「プリンター」
(プリンターとFAX)フォルダー」を参照すると表示されるものである。
これは、(printer name
オプションと混同しないように)
単にプリンター名と記載する。
Samba を含む Windows 互換のリモートのプリンターサーバー上で、
プリンターに対して新しいドライバーが割り当てられた際、
Windows クライアントは、そのドライバーの名前に合致するように、プリンター名を変更する。
これは、複数のプリンターに同じドライバーを割り当てているユーザーを混乱させる結果となる。
Samba において、プリンターのプリンター名を smb.conf で定義された共有名と異なる名称にすることを禁止したい場合は、
force printername = yes
と設定すること。
Windows では、プリンター名と共有名を強制的に一致させることができないため、 このパラメーターを有効にすると、Windows サーバーから Samba サーバーへプリンターの移行を行なう際に問題が発生するので注意。
プリンターがクライアントにより使用を開始された後にこのパラメーターの値を変更することは、 ユーザーが自身の「プリンター」フォルダーからプリンターを削除することができなくなるため、推奨しない。
既定値: force printername
= no
このパラメーターを設定すると、 ファイルの所有者や所有グループとして不明な 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 unknown acl user
= no
このパラメーターは、サービスに対する接続のすべてで、 デフォルトのユーザーとみなされる UNIX ユーザーの名前を指定する。 これはファイルを共有する上で便利であるが、誤って使用すると、 セキュリティ上の問題を引き起こす原因となるので、慎重に使用すべきである。
このユーザー名は接続の確立後に適用される。 従って、クライアントが有効なユーザー名とパスワードで接続を行う必要があることには変わりはない。 接続が確立すると、全てのファイル操作は強制的に「force user」で指定されたユーザーの権限で実行される。 クライアントが接続を確立した際のユーザー名は無視される。 これは大変便利なことがある。
Samba 2.0.5 以降では、このパラメーターによって 設定されたユーザーのプライマリグループが、 すべてのファイル操作においてプライマリグループとして利用される。 Samba 2.0.5 以前では、プライマリグループは本来接続を行ったユーザーのプライマリグループのまま変わらない(これはバグである)。
既定値: force user
=
例: force user
= auser
これを有効にした場合、Samba のファイルサーバーリモート VSS プロトコル (FSRVP)サーバーは、すべての、FSRVP が、スタートアップ時にスナップショット を開始したかを確認し、存在しないスナップショットパスに 対応するステート(共有定義も含む)を削除する。
既定値: fss: prune stale
= no
例: fss: prune stale
= yes
ファイルサーバーリモート VSS プロトコル(FSRVP)サーバーは、予期しないクライアントからの 切断時にクリーンアップを確実に行うための、メッセージシーケンスタイマーを組込む。 このパラメーターは、FSRVP 操作間での既定値のタイムアウトを上書きする。 FSRVP タイムアウトは、値を 0 にする事で、完全に無効化できる。
既定値: fss: sequence timeout
= 180 または 1800 で、操作に依存する
例: fss: sequence timeout
= 0
このパラメーターは、
クライアントが共有のファイルシステムを問い合わせた際に、
smbd(8)
が返却する共有のファイルシステム名を指定する。
デフォルトは Windows NT 互換の NTFS
だが、
必要に応じて Samba
や
FAT
といった別の文字列に、変更することができる。
既定値: fstype
= NTFS
例: fstype
= Samba
get quota command
は Samba が実行されている OS 上で、API が提供されていない場合に限り使用すべきである。
このオプションはSambaがquotaをサポートするようにコンパイルされた時に のみ有効である。
このパラメーターは、指定されたディレクトリが存在するパーティションについて、指定されたユーザーやグループのクオータ情報を取得するスクリプトへのパスを指定する。
このスクリプトは三つの引数をとる:
ディレクトリ
問い合わせのタイプ
ユーザーの uid もしくはグループの gid
ディレクトリは、実際はほとんど "." である。これは、スクリプト が問い合わせもできるカレントワーキングディレクトリからの相対として 扱われる必要がある。
問い合わせのタイプは以下のいずれかの値をとる:
1 - ユーザーのクオータ
2 - ユーザーのデフォルトのクオータ (uid = -1)
3 - グループのクオータ
4 - グループのデフォルトのクオータ (gid = -1)
スクリプトの出力は、以下の要素をスペースで区切った1行の形式で行なわれる:
要素1 - クオータフラグ (0 = クオータは無効、 1 = クオータは有効、 2 = クオータは有効で使用を強制されている)
要素2 - 現在の使用済ブロック数
要素3 - ブロック数のソフトウェア的な上限
要素4 - ブロック数のハードウェア的な上限
要素5 - 現在の使用済 inode 数
要素6 - inode 数のソフトウェア的な上限
要素7 - inode 数のハードウェア的な上限
要素8(オプション) - ブロックあたりのバイト数(デフォルト1024)
既定値: get quota command
=
例: get quota command
= /usr/local/sbin/query_quota
これはチューニングのためのオプションである。このパラメーターを有効にすると、 getwd() の呼び出し時間を減らすためのあるキャッシュアルゴリズムが有効になる。特に
wide links パラメーターが no
に設定された場合は、パフォーマンスに対して相当な効果がある。
既定値: getwd cache
= yes
このオプションは、 GPO ポリシー を適用する為に呼ばれるコマンドを設定する。 samba-gpupdate スクリプトは System Access と Kerberos Policies を KDC に 対して適用する。System Access ポリシーは、minPwdAge, maxPwdAge, minPwdLength, と pwdProperties を samdb 中に設定する。 Kerberos Policies は kdc:service ticket lifetime, kdc:user ticket lifetime, と kdc:renewal lifetime を smb.conf に設定する。
既定値: gpo update command
= ${prefix}/sbin/samba-gpupdate
例: gpo update command
= /usr/local/sbin/gpoupdate
このパラメーターは、 guest ok (以下を参照のこと) が設定されたサービスにアクセスする際に使用されるユーザー名である。 ゲストサービスに接続しているクライアントすべてに対して、 ここで設定したユーザーの権限が適用される。 このユーザーはパスワードファイルに存在している必要があるが、ログイン可能となっている必要はない。 このパラメーターとして、「ftp」ユーザーを利用するのもよいであろう。
システムによっては、アカウント「nobody」では印刷することができない。
この場合は別のアカウントを使用すること。
ゲストユーザーでログイン(su -
コマンドなどを使用する)して、
lpr(1)
や lp(1)
などの、
システムにある印刷コマンドを実行して印刷を行ってみることで、
これを確認しておくべきであろう。
このパラメーターは % マクロを受け付けない。 システムの大半の箇所では、正常動作する上でこの値が静的に設定されていることが必要とされるためである。
既定値: guest account
= nobody
# default can be changed at compile-time
例: guest account
= ftp
このパラメーターが yes
のサービスに付いては、
サービスへの接続の際にパスワードが要求されない。
この場合、guest account の権限で操作が行われる。
このパラメーターは restrict anonymous = 2 のメリットを無効にする。
このオプションに関する詳細については、 security セクションを参照のこと。
既定値: guest ok
= no
これは、見せたくないがアクセスは許可したいファイルやディレクトリのリストを指定する。 DOSの「隠し」属性が該当するファイルやディレクトリに付加される。
リストの各エントリは、 スペースをエントリ中に含められるようにするため、「/」で区切る必要がある。 「*」と「?」は、DOSのワイルドカードと同様にして、 複数のファイルやディレクトリを指定するために利用することができる。
各エントリはUNIXのパス形式で指定すること。DOSのパス形式で指定したり、 UNIXでディレクトリを意味する「/」を含んだりはできない。
この設定には、 case sensitive オプションの設定が影響することに注意。
このパラメーターを設定すると、 全てのファイルやディレクトリに対して該当するかどうかの確認を行う必要が発生するため、 Samba のパフォーマンスに影響がでる。
以下の設定例は、Thursby から入手可能な Macintosh 上の SMB クライアント (DAVE) が内部的な用途に作成するファイルの指定に加え、 ドットで始まるファイルを隠しファイルとして指定したものである。
このパラメーターの設定例を以下に示す。
hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/
既定値: hide files
=
# どのファイルも隠されない
このパラメータを0以外に設定すると、N 秒前未満内に更新された ファイルを非表示にする。
これは、 ingest (取込) /process (処理) キュー形式のワークロードで利用できる。 処理を行うアプリケーションは、処理が完了したファイルのみを対象にすべきである。 しかし、多くのアプリケーションは、適切な外部のワークフロー制御を有していない。 そこで、この方法を使う事により、ファイル処理と取込との干渉が避けられる。
既定値: hide new files timeout
= 0
このパラメーターにより、読みとりができないファイルの存在をクライアントから隠蔽できる。 このパラメーターのデフォルトは off になっている。
このパラメーターを有効にすると、特に大量のディレクトリ表示において 表示スピードが遅くなることに注意。Samba はすべてのディレクトリメンバー の ACL を評価しなければならないため、大量の処理を行わなければならない からである。
既定値: hide unreadable
= no
このパラメーターにより、書き込みができないファイルの存在をクライアントから隠蔽できる。 このパラメーターのデフォルトは off になっている。 書き込みができないディレクトリについては通常通り表示されることに注意。
既定値: hide unwriteable files
= no
このオプションは、change notify privilege を使用できるようにします。 既定では、通知の結果は、ファイルシステムパーミッションに対しては チェックされない。
"honor change notify privilege" が有効になった場合、 change notify privilege か、あるいは適切なファイルシステムパーミッションが あるときにのみ通知の結果を受け取る。 change notify privilege を持っている場合は、ファイルシステム上に パーミッションを持っていない場合でも、すべての要求された通知結果を 受け取る。
既定値: honor change notify privilege
= no
yes
の場合、 Samba は DFS サーバーとして機能し、 DFS を利用可能なクライアントは、サーバー上で提供された
DFS ツリーを参照することが可能となる。
共有単位のパラメーターである msdfs root も参照のこと。 Samba で DFS ツリーを構成する場合の詳細な情報については、 Samba3-HOWTO の MSDFS の章を参照のこと。
既定値: host msdfs
= yes
Samba が(負荷のかかる)ホスト名検索を行なうか、 IP アドレスを使用するかを指定する。現在ホスト名検索を使用している箇所としては、
hosts deny
および hosts allow
の確認箇所などが挙げられる。
既定値: hostname lookups
= no
例: hostname lookups
= yes
このパラメーターの同義語として 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 ネットグループ netgroup "foonet" 中のホストは許可するが、 特定のホストはアクセスを拒否する
hosts allow = @foonet
hosts deny = pirate
実際のアクセスには、ユーザーレベルで適切なパスワード指定する必要があることに注意。
ホストレベルのアクセス制御が期待通りになっているかどうかの確認手段については testparm(1) を参照のこと。
既定値: hosts allow
=
# なし (全てのホストがアクセス許可される)
例: hosts allow
= 150.203.5. myhost.mynet.edu.au
hosts allow
の反対の意味を持ち、
このパラメーターで指定されたホストは、サービス内で明示的にアクセスが許可されない限り、
サービスへのアクセスを拒否される。
両者の設定が矛盾した場合は、allow
側の設定が優先される。
デフォルトでアクセスを拒否したい場合は、
ALL (もしくはネットマスク 0.0.0.0/0
) の指定を行ない、
hosts allow = hosts allow パラメーターにより、
アクセスを許可したいホストを明示的に指定すること。
既定値: hosts deny
=
# なし (アクセスを拒否されるホストはない)
例: hosts deny
= 150.203.4. badhost.mynet.edu.au
idmap backend は Winbind が SID/uid/gid のマッピングテーブルを 格納するための様々なバックエンドを利用するためのプラグイン インターフェースを提供する。
このオプションは、何も指定されていないときに、既定値として利用する バックエンドを指定するときに利用するが、新しい、 idmap config * : backendが出来たので、 現在廃止予定である。
既定値: idmap backend
= tdb
このパラメーターには Winbind の idmap インターフェースが SID/uid/gid の問い合わせに成功した結果をキャッシュする秒数を設定する。 既定値では、Samba は1週間それらの要求をキャッシュする。
既定値: idmap cache time
= 604800
Samba における ID のマッピングは、Windows SID と UNIX のユーザーと グループとの間でのマッピングである。これは設定可能な(configurable) プラグインインタフェースとして Winbindd によって処理される。Samba の ID マッピングは、idmap config プレフィックス から始まるオプションによって設定される。プレフィックスのあとには、 ドメイン名または アステリスク (*)、コロンと選択されたドメインの idmap 設定名が続く。
idmap の構成は、それ故グループに分割され、各ドメイン用のグループが 設定できる。 dmap 設定を明示的に持たないすべてのドメインに対しては、 特定のドメイン名の代わりに "*" を使い、これが既定値の設定となる。
3 つの基本オプションが存在する。
これは、このドメインに対して SID/uid/gid バックエンドとして 使う idmap プラグインの名前を指定する。標準のバックエンドは、 tdb (idmap_tdb(8))、 tdb2 (idmap_tdb2(8))、 ldap (idmap_ldap(8))、 rid (idmap_rid(8))、 hash (idmap_hash(8))、 autorid (idmap_autorid(8))、 ad (idmap_ad(8))、 nss (idmap_nss(8)) である。 対応するマニュアルページには詳細が記載されているが、以下はその 要約である。
最初の 3 つは、内部 unixid カウンターを使って固有のマップを作成し、 データベースにマッピングを格納する。それらは規定の idmap 構成として 使うのに適している。 rid と hash バックエンドは、アルゴリズムのみによる計算方法を 使って、SID用の unix ID を決める。 autrid モジュールは tdb と rid バックエンドを合成したものである。 これは、対応する各ドメイン用のレンジを生成し、自動的に設定された各 ドメインに対して、個別に rid アルゴリズムを適用する。 ad バックエンドは 標準のスキーマ拡張経由で unix ID を Active Directory に格納する。nss バックエンドは ldap の設定中で便利な、 nsswitch からの名前経由による unixid の 標準的な winbind による 設定と取得を反転する。
バックエンドの管轄下にある、利用可能な uid と gid の範囲を指定する。 この値は、割り当てを行うバックエンドにおいては、 新しい ユニーク ID を割り当てるための、レンジの開始終了の定義である。
Winbind は、このパラメーターを使って信頼できるバックエンドから unix ID と SID のマッピング情報を検索する。そのため、この設定は、 各ドメインごとと、既定値用に設定する必要がある。設定されたレンジはお互いに 重複してはならない。
小さな方の値は min domain uid オプションと相互作用することに注意!
このオプションは、tdb、tdb2 と ldap バックエンドをリードオンリ モードにするのに使うことが出来る。これは、たとえば、あらかじめ データが入っている、自動的に拡張すべきでない、データベースを 使う場合に便利である。
次の例は CORP ドメインがidmap_ad(8) バックエンド で、他の全てのドメインが idmap_tdb(8) バックエンドとしてどのように 設定されるかを示している。 この設定では、CORP ドメインの管理者が SFU を使って 1000000 以下をアサイン しており、winbind が次の 1000000 台を、自分の管轄下のドメインとローカル グループのためのマッピングに使う場合の例である。
idmap config * : backend = tdb idmap config * : range = 1000000-1999999 idmap config CORP : backend = ad idmap config CORP : range = 1000-999999
既定値なし
idmap gid パラメーターは、既定値の idmap 設定のための、 グループ id の範囲を指定する。これは、 idmap config * : range があるので 廃止予定である。
idmap configオプションも参照のこと。
既定値: idmap gid
=
例: idmap gid
= 10000-20000
このパラメーターは Winbind の idmap インターフェースが SID/uid/gid の問い合わせに失敗した結果をキャッシュしておく秒数を 指定する。
既定値: idmap negative cache time
= 120
idmap uid パラメーターは、既定値の idmap 設定の ユーザー id の範囲を指定する。 これは、 idmap config * : rangeがあるので 廃止予定である。
idmap configオプションも参照のこと。
既定値: idmap uid
=
例: idmap uid
= 10000-20000
このパラメーターを使うと、ある設定ファイル中に別の設定ファイルを挿入できる。 挿入されるファイルは、挿入された場所に記述されたかのように、 そのままの形で挿入される。
このパラメーターには、%u
、
%P
、%S
パラメーターを除き、標準の変数置換が適用される。
include = registry
というパラメーターには特殊な意味が
ある。これはカレントディレクトリから registry という
名前のファイルをインクルードするのではなく、
レジストリーからグローバル設定を読み込む。詳細はレジストリーベースの設定
に関する章を参照されたい。注意:このオプションはレジストリー共有を自動的に
有効にする。
既定値: include
=
例: include
= /usr/local/samba/lib/admin_smb.conf
このパラメータを no
にすると、
winbind が生成する krb5.conf ファイルに対して、システムの /etc/krb5.conf
ファイルの内容を含めないようにする。create krb5 conf
も参照のこと。
このオプションは MIT Kerberos を用いてビルドされた Samba にのみ適用可能。
既定値: include system krb5 conf
= yes
このパラメーターは、 標準化された NFS4 ACL をサポートしないが、Linux 上のほとんどのファイルシステムと 同様にデフォルト ACL を実装する、POSIX ドラフト ACL 実装のみをサポートする ファイルシステムにのみ関係する。これを使用すると、 親ディレクトリに既定の ACL が存在しており、それらの親ディレクトリに 新しいファイルやサブディレクトリを作成するときに、常時引き継がれるようにできる。 既定の動作はディレクトリ作成時に設定される unix のモードが用いられる。この オプションを有効にすると、モードが 0777 となり、 ディレクトリの既定の ACL を確実に継承できるようになる。 ネイティブな Windows データをメタデータとして格納する、VFS モジュール acl_xattr か acl_tdb は、ロードされるどのような共有に対しても、Windows の ACL を正しく エミュレートするために、このオプションを自動的にオンにする事が要求される ことに注意。
既定値: inherit acls
= no
新規作成したファイルやディレクトリの所有者としては、 通常接続しているユーザーの実行 UID の値が用いられる。 このパラメーターにより、Samba の管理者は、 新規作成したファイルやディレクトリの所有者を 親ディレクトリの所有者と同一にすることが可能となる。
有効なオプションは以下の通り:
no
-
あるファイルの Windows (SID)所有者と UNIX (uid) 所有者の両方は
ファイルを作成した時の利用者の ID に設定される。
windows and unix
-
新規ファイルやディレクトリにおける Windows の (SID)所有者と
UNIX (uid)の所有者を、親ディレクトリの所有者に設定する。
yes
-
windows and unix
の別名。
unix only
-
UNIX の所有者は、親ディレクトリのUNIX 所有者に設定される。
この動作が有用な状況としては、 ユーザーがファイルの作成や修正はできるが、削除はできないようにした drop box や、 あるユーザーの移動プロファイルのディレクトリ内に新規作成されたファイルの所有者が そのユーザーとなるようにしたい場合などが挙げられる。
unix only
オプションはファイルのWindowsでの所有者と
UNIX での所有者の間の結合を事実上断ち切る。その結果、このモードでは、
ファイルのWindowsでの所有者を設定しても、UNIXの所有者を変更しない。
このモードを使用するには、acl_xattr:ignore system acls = yes
といっしょの acl_xattr VFS モジュールのような、完全な NT ACL モデルをエミュレートできる
バッキングストアをいっしょに使うべきである。また、(UNIX拡張なしで) SMB 経由でのみ
ファイルが公開される時に、フォルダのquota をエミュレートする事にも使用できる。
ディレクトリの UNIX 所有者はローカルに設定され、すべてのサブディレクトリに継承され、
それらはすべて同じ quota を消費する。
既定値: inherit owner
= 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] 共有を各ユーザーが柔軟に利用できるようにさせる際に、 特に有用であろう。
既定値: inherit permissions
= no
このパラメーターはinit logon delayed hostsで指定 したホストに対してinitial samlogonの応答を保留する長さをミリ秒で指定する。
既定値: init logon delay
= 100
このパラメーターには、最初に返される samlogon 応答を遅延させるべき ホスト名や IP アドレス、ネットワーク等のリストを指定する(本ホスト 以外にもドメインコントローラーがある場合、この設定により、Windows XP 端末はそれらの DC を参照するようになる)。
応答を保留する長さはinit logon delayで指定する。
既定値: init logon delayed hosts
=
例: init logon delayed hosts
= 150.203.5. myhost.mynet.de
このオプションにより、Samba がブラウジング、名前の登録その他のNBTの通信に 利用する既定のネットワークインタフェースリストを設定することが可能となる。 既定値では、Samba はカーネルに対して有効なインタフェースのリストを問い合わせ、 127.0.0.1以外のブロードキャスト可能なインタフェースをすべて利用する。
このオプションはインタフェースを示す文字列のリストとなる。 各文字列は以下の形式のいずれで指定してもよい。
ネットワークインタフェース名( eth0 など)。 シェルのようなワイルドカード指定も可能である。 例えばeth*は「eth」から始まるすべてのインタフェースを指定したことになる。
IP アドレス。 この場合、ネットマスクの値は、カーネルから取得されたインタフェースのリストにより設定される。
IP/mask のペア。
ブロードキャスト/mask のペア。
「mask」パラメーターはビット長(例えば24はクラスCネットワーク)で指定しても、 ドット区切り10進数表記で指定してもよい。
上記の「IP」パラメーターは、ドット区切り10進法で指定しても、 OSの標準的なホスト名解決機構で解決可能なホスト名で指定してもよい。
デフォルトで、Samba はループバックインタフェース (IPアドレス 127.0.0.1) を除くブロードキャスト可能なすべての有効なインタフェースを使用する。
SMB3 マルチチャネルの設定をサポートするため、smbd は、以下の拡張文法を 実際のインタフェースの後に追加した、いくつかの拡張パラメータを受け付ける (; と , 文字を扱うために引用することは重要であることに注意):
interface[;key1=value1[,key2=value2[...]]] "interface[;key1=value1[,key2=value2[...]]]"
指定出来るキーは、speed, capability, と if_index である。Speed は 秒単位のビット数で指定する。指定出来る capability は、RSS とRDMAである。 if_index は、注意して使うべきである: 値は、kernel によって使われる インデックスと一致してはならない。 これらのオプションは、実際に運用で使うというよりは、テストと開発用 であることに注意。少なくとも、Linux システム上では、これらの値は 自動的に検出されるべきであるが、設定は自動認識が動かないあるいは 無効の時に、最後の手段として使える。 指定された値は、自動検出した値を上書きする。
以下の最初の2つの例では、eth0 デバイスと 192.168.2.10 および 192.168.3.10 の IP アドレスに対応する 3 つのネットワークインタフェースが指定されている。 後者のインタフェース 2 つに対するネットマスクは 255.255.255.0 に設定されている。
他の例は、インタフェース毎の拡張パラメータをどのように指定するかを示している。 二重引用符が必要な、"," と ";" の使い方に注意。
既定値: interfaces
=
例: interfaces
= eth0 192.168.2.10/24 192.168.3.10/255.255.255.0
例: interfaces
= eth0, 192.168.2.10/24; 192.168.3.10/255.255.255.0
例: interfaces
= "eth0;if_index=65,speed=1000000000,capability=RSS"
例: interfaces
= "lo;speed=1000000000" "eth0;capability=RSS"
例: interfaces
= "lo;speed=1000000000" , "eth0;capability=RSS"
例: interfaces
= "eth0;capability=RSS" , "rdma1;capability=RDMA" ; "rdma2;capability=RSS,capability=RDMA"
これは、サービスに対するログインを許可しないユーザーのリストを指定する。 このパラメーターは、不適切な設定により発生しうるセキュリティ上の問題を完全に抑止する、 パラノイド的設定である。
「@」で始まる名前は、(使用しているシステムが NIS をサポートしている場合) 最初にUNIX のグループとして解釈され、次に、NIS ネットグループデータベースに 名前がない場合、UNIX グループとして解釈される。
「+」 で始まる名前は、NSS getgrnam() インタフェース経由で
UNIX グループデータベースを検索するときのみ解釈される。「&」で始まる
名前は、NIS ネットグループデータベース中を検索する時のみ解釈される
(これは、使用しているシステム上でNISが動作していることが前提である)。
「+」と「&」文字はこの順で使用できる。そのため、
+&group
の値は、UNIX グループ
データベースを検査し、その後で NIS ネットグループデータベースを検査する
ことを意味する。そして、
&+group
の値は、NIS ネットグループ
データベースを検査し、その後で UNIX グループデータベースを検査することを意味する
(これは「@」接頭辞と同じ)。
%S
は、
現在のサービス名に置換される。これは [homes] セクションで有効である。
既定値: invalid users
=
# invalid users は空である
例: invalid users
= root fred admin @wheel
このパラメーターは、printing が iprint
に設定されている場合のみ有効である。
設定されている場合、CUPS の client.conf
で指定された ServerName オプションの値がこのパラメーターによって上書きされる。
複数の仮想 Samba サーバーが起動している環境で各々が異なる CUPS デーモンに接続している環境では、このパラメーターが必要となる。
既定値: iprint server
= ""
例: iprint server
= MYCUPSSERVER
msDS-SupportedEncryptionTypes
の既定値を、この値がないか、
msDS-SupportedEncryptionTypes
が 0 に設定されている
Active Directory 中のサービスアカウント用に設定する。
これにより、Samba 管理者は、Windows 上の、
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\KDC\DefaultDomainSupportedEncTypes
レジストリ値によって提供される設定の柔軟性に合わせることができる。
指定された値はビット単位で OR が取られ、現在サポートされている値は以下の通り:
arcfour-hmac-md5
, rc4-hmac
, 0x4
, or 4
Windows では Kerberos RC4 暗号化と呼ばれる
aes128-cts-hmac-sha1-96
, aes128-cts
, 0x8
, or 8
Windows では Kerberos AES 128 bit 暗号化と呼ばれる
aes256-cts-hmac-sha1-96
, aes256-cts
, 0x10
, or 16
Windows では Kerberos AES 256 bit 暗号化と呼ばれる
aes256-cts-hmac-sha1-96-sk
, aes256-cts-sk
, 0x20
, 又は 32
AES セッションキーを許可する。これが設定された場合、
たとえaes256-cts
と aes128-cts
が
設定されていなくても、AES セッションキーが使えることを KDC に示す。これにより、
ホストに対して AES キーが使えるようになり、それ以外は、 RC4 のみでチケットキーを
設定する(それが既定値)。
既定値: kdc default domain supported enctypes
= 0
# 現在ソフトウェアがサポートしている物に対応: arcfour-hmac-md5 aes256-cts-hmac-sha1-96-sk
RFC8429
は
rc4-hmac
Kerberos 暗号化が脆弱で、
この暗号化の仕組みを使用する Active Directory への
既知の攻撃方法があると言うこととを言っている。
しかしながら、Microsoft Windows との互換性のために、
このオプションは、
古い可能性があるクライアントが要求してきた場合、
(service keytab にある ticket キーとは異なる)
rc4-hmac
Kerberos セッションキーを、
サービスアカウントの
msDS-SupportedEncryptionTypes
属性
の値に関係なく、KDC が使用できると仮定する。
既定値: kdc force enable rc4 weak session keys
= no
Active Direcory ドメインコントローラ上で、これは、ローカルで実行している kdc がサポートしている暗号化タイプの一覧である。
これにより、Samba 管理者は、
Network security: Configure encryption types allowed for Kerberos
GPO/ローカルポリシー/セキュリティオプションの値によって提供される設定の柔軟性と同様の、
弱い/未使用の暗号化タイプを取り去れるようになり、その結果は、Windows 上での
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters\SupportedEncryptionTypes
レジストリ値中に格納される。
Windows レジストリキー(10進数のみを使う)とは異なり、Samba ではこの値は16進 あるいは Kerberos 暗号化タイプ名の一覧でで表現される。
指定された値はビットごとに OR が取られ、現在サポートされている物は以下の通り:
arcfour-hmac-md5
, rc4-hmac
, 0x4
, or 4
Windows では Kerberos RC4 暗号化と呼ばれる
aes128-cts-hmac-sha1-96
, aes128-cts
, 0x8
, or 8
Windows では Kerberos AES 128 bit 暗号化と呼ばれる
aes256-cts-hmac-sha1-96
, aes256-cts
, 0x10
, or 16
Windows では Kerberos AES 256 bit 暗号化と呼ばれる
既定値: kdc supported enctypes
= 0
# 現在ソフトウェアがサポートしている物に対応: arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
このパラメーターの値(整数値)により、 keepalive
パケットが送出される秒単位の間隔が設定される。このパラメーターの値が0の場合、 keepalive パケットは送出されない。
keepalive パケットを送出することにより、サーバーはクライアントマシンが存在していて応答があることを確認することが可能になる。
ソケットにデフォルトで SO_KEEPALIVE 属性が設定されている場合( socket options を参照のこと)、通常 keepalive は不要である。基本的に、このオプションは問題が発生している場合にのみ使用すべきである。
このオプションは SMB1 クライアント接続にのみ適用され、 SMB2 クライアントには何ら影響しないことに注意
既定値: keepalive
= 300
例: keepalive
= 600
このパラメータは、Kerberos クライントとしての動作時に、利用する暗号タイプを設定する。 とりうる値はall, strong, legacy である。
Samba が Kerberos チケットを必要とする場合は Kerberos ライブラリ (MIT または Heimdal) を利用する。 このライブラリは通常 krb5.conf ファイルによって Samba とは無関係に設定が行われる。 そのファイルにおいてはディレクティブにより利用する暗号タイプを設定する。 一方 Samba には Active Directory プロトコルとドメインコントローラーを定めるアルゴリズムがある。 したがって Kerberos ライブラリが正しくドメインコントローラーを利用するように以下のような仕組みを設けている。 すなわち winbindd(8) や net(8) といった Samba プロセスにおいて、独自の krb5.conf ファイルを作り出し、Samba から呼び出された Kerberos ライブラリは このファイルを用いるようにしている。 この独自のファイルは Kerberos ライブラリの処理をすべて制御し、 本パラメーターはその独自ファイル内において暗号タイプの設定を制御する。 つまりは Samba が扱う暗号タイプを制御することにもなる。
all
を設定すると、 Active Directory における暗号タイプをすべて許可する。
strong
を設定すると、AES ベースの暗号タイプのみを利用する。
これはダウンクレード攻撃を避けるような堅牢な環境において利用する。
legacy
を設定すると RC4-HMAC-MD5 のみを許可する。
CVE-2022-37966
と言う理由によりこのオプションの使用は*避けること*。
https://bugzilla.samba.org/show_bug.cgi?id=15237 を参照。
既定値: kerberos encryption types
= all
Kerberos チケットをどのように検査するかを制御する。
有効な値は以下の通り:
secrets only - チケットの検査に secrets.tdb のみを使用する(デフォルト)
system keytab - チケットの検査にシステムの keytab ファイルのみを使用する
dedicated keytab - チケットの検査に Samba 専用の keytab ファイルを使用する
secrets and keytab - 最初に secrets.tdb 、その後システムの keytab ファイルを使用する
「system keytab」と「dedicated keytab」の主な違いは、 適切な keytab エントリを見つける際に、前者は期待するプリンシパルに 基づくフィルタリングを行うのに対し、後者は Kerberos に依存するところである。
このパラメーターの値が「dedicated keytab」の場合、 keytab ファイルのパスを指定するため dedicated keytab file パラメーターを必ず設定しなければならない。
既定値: kerberos method
= default
このパラメーターは、Samba がカーネルに対してディレクトリの変更 通知を要求するか指定でき、この機能を使用すれば、サーバー上にある データに変更があった場合に SMB クライアントがその結果を 反映できるようになる。
このパラメーターは使用しているカーネルが inotify インターフェース を使用してユーザープログラムに対しての変更の通知をサポートしている 場合にのみ使用される。
既定値: kernel change notify
= yes
カーネルベースの oplocks をサポートしている UNIX (現在は と Linux のみ) の場合、 このパラメーターにより oplock の利用を制御できる。しかし、これは Linux カーネルがそれらを適切にサポートしないので、クライアントに 対してレベルII oplock を無効にする。
カーネル oplocks のサポートにより、
smbd(8) が oplock を行ったファイルに対して、
ローカルな UNIX プロセスや NFS 経由でのアクセスがあった際に、
Sambaが oplocks
を破棄することが可能となる。
これにより、 SMB/CIFS と NFS やローカルファイルアクセスとの間の完全な一貫性が確保される
(これは非常に素晴らしいことである :-)。
もしもこの相互作用が不要なら、レベルII oplockと、それに関連して性能向上 が得られるように、Linux 上でパラメーターを無効にすべきである。
このパラメーターの既定値は、 no
であるが、
カーネルがこの機能をサポートしていないシステムでは、自動的に無効にされる。
既定値: kernel oplocks
= no
このパラメーターは、SMB 共有モードを ファイルシステム固有の sharemode 呼び出しにに変換するかどうかを制御する。
kernel share モードは、SMB 共有モードに対応するアクセスを防止する ことにより、ローカルの UNIX プロセスと NFS による操作との 間での、最低限の相互運用性を提供する。これには、適切なサポートを 備えたファイルシステム固有の VS モジュールを要求する。
共有内で SMB2 の永続的ファイルハンドルを使うためには、このパラメーターを 無効にする必要があることに注意すること。
このパラメーターの既定値はno
である。
yes
に設定する場合は、ファイルシステムの
share modes をサポートするシステムモジュールが必要であり、
そうでない場合、ファイルへのアクセスは共有違反で失敗する。
既定値: kernel share modes
= no
このパラメータは Samba 4.11 から非推奨となり、 (NTLM, NTLMv2 または Kerberos 認証とは異なり) LanMan は将来の Samba リリースでは削除される。
そのため、将来は、現在の既定値である lanman auth = no
が強制された動作となる。
このパラメーターは、smbd(8) が LANMAN パスワードハッシュを使用した 認証を行なうか否かを制御する。無効にした場合、 NT パスワードハッシュを利用する クライアント(Windows NT/2000クライアント、smbclient など。しかし Windows 95/98 や MS-DOS クライアントは含まない)のみが Samba ホストに接続できる。
LANMAN 暗号化レスポンスは簡単に解読することが可能である。これは大文字と小文字を 区別しないことや、使用しているアルゴリズムなどに起因する。Windows 95/98 や MS-DOS クライアントが存在しない場合は、このオプションを無効にした方がよいだろう。
このパラメーターが no
に設定された場合、これは、次のパスワードの
変更時に Samba の passdb 中の sambaLMPassword を空白にする動作も行う。この結果、
lanman クライアントは、あとで lanman auth を再度有効にしたとしても認証できなくなる。
encypt
passwords
オプションとは異なり、このパラメーターはクライアントの挙動を
制御するものではなく、 LANMAN レスポンスは依然としてネットワーク上を送信される。
Samba のクライアント(smbclient など)で LANMAN レスポンスを無効にするには
client lanman auth
を参照のこと。
このパラメータは ntlm auth
パラメータによって上書きされるため、ntlmv1-permitted
または
yes
が設定されてない限り、NTLMv2 ログインのみが許可され、
LM ハッシュは格納されない。最近のクライアントはすべて NTLMv2をサポートしている
が、いくつかのクライアントは特別な設定をすることが必要である。
このパラメータは Samba AD DC に影響せず、LM 認証は常に 無効で、LM パスワードは保存されない。
既定値: lanman auth
= no
このパラメーターは、Windows 2000 で導入された、 さまざまな SMB リクエストにおける新しい 64K のストリーム読み取りおよび書き込みを smbd(8) がサポートするかどうかを制御する。 Windows 2000 クライアントのリダイレクタにはバグがあるため、 このパラメーターを利用するには、SambaがIRIX、Solaris、Linux 2.4 カーネルのような64ビットOS で動作している必要がある。 Windows 2000 クライアントにおいては、10% のパフォーマンス向上が見込まれる。 既定値は on であるが、他の Samba コードほどにはテストが充分には行われていない。
既定値: large readwrite
= yes
ldap admin dn は、 Samba
がユーザーのアカウント情報を取得するために ldap サーバーに接続する際に
用いられる、Distinguished Name (DN) を指定する。
ldap admin dn は、
private/secrets.tdb
ファイルに
格納された admin dn のパスワードとともに用いられる。
これがどのように連携するかについての詳細な情報は、
smbpasswd(8)
のマニュアルページを参照のこと。
ldap admin dn には完全な DN 名を指定する必要がある。 ldap suffix の値が ldap admin dn に付加されることはない。
既定値なし
このパラメーターは、LDAP サーバーに対して最初のコネクションを確立する間に保持するための LDAP ライブラリ呼び出しの秒単位のタイムアウトを指定する。これは実際、フェールオーバー の手順においてとても便利である。もしも、1つまたはそれ以上の LDAP サーバーが接続不能に なった時、TCP のタイムアウトが満了になるのを待つ必要が無くなる。この機能は、LDAP ライブラリによってサポートされなければならない。
このパラメーターは、存在するコネクションを使っての LDAP サーバー上の操作に影響する ldap timeoutとは異なり、最初の接続を確立しない。
既定値: ldap connection timeout
= 2
このパラメーターは LDAP ライブラリコールのデバッグレベルをコントロールする。 OpenLDAP の場合、これはサーバーで解釈されるビットフィールドと同じものであり、 slapd.conf(5) のマニュアルにその解説がある。よく使われる有用な値として、 1 がある。これは関数コールをトレースする。
LDAP ライブラリからのデバッグ出力は、Samba のログ出力の中で頭に [LDAP]
がついたものである。LDAP がログ出力をするレベルは
ldap debug threshold
パラメーターでコントロール
できる。
既定値: ldap debug level
= 0
例: ldap debug level
= 1
このパラメーターは、Samba のデバッグレベルの中で、LDAP ライブラリの
デバッグ出力を Samba のログに出力するためのレベルをコントロールする。
詳細は ldap debug level
を参照のこと。
既定値: ldap debug threshold
= 10
例: ldap debug threshold
= 5
このオプションは、Samba が、LDAP ライブラリに、ある alias dereferencing 方法を 使う事を指定するかどうかを制御する。この既定値はauto であり、これは、ldap クライアントライブラリの既定値の設定がそのまま保持される 事を意味する。これ以外に設定可能なは、 never, finding, searching と alwaysである。 より詳細な情報は、使用している LDAP のマニュアルで探してみること。
既定値: ldap deref
= auto
例: ldap deref
= searching
このオプションは、LDAP データベース中でエントリを検索する時に、 LDAP referral を利用するかどうかを制御する。設定可能な値は、 referral 機能の利用を有効にする場合は、on、 これを無効にする場合は、off、 libldap の既定値の設定を使う場合はautoである。 libldap による refarral 機能の仕様の有無は、ldap.conf(5) 中に記述がある、 REFERRALS パラメーターによって、/etc/openldap/ldap.conf 中で 設定される。
既定値: ldap follow referral
= auto
例: ldap follow referral
= off
このパラメーターは、グループが LDAP ディレクトリに加えられるときの サフィックスを指定する。もしこのパラメーターが設定されていない場合、 ldap suffix の値が代わりに使用される。 サフィックスの文字列には、ldap suffix の文字列が付加されるため、相対 DN で指定を行なうこと。
既定値: ldap group suffix
=
例: ldap group suffix
= ou=Groups
このパラメーターは idmap mapping の情報の保存先のサフィックスを 指定する。このパラメーターが設定されていない場合、 ldap suffix の値が代わりに使用される。 サフィックスの文字列には、ldap suffix の文字列が付加されるため、相対 DN で指定を行なうこと。
既定値: ldap idmap suffix
=
例: ldap idmap suffix
= ou=Idmap
このパラメーターはマシンアカウントが LDAP ツリーのどこに 追加されるかを指定する。もしこのパラメーターが設定されていない場合、 ldap suffix の値が代わりに使用される。 サフィックスの文字列には、ldap suffix の文字列が付加されるため、相対 DN で指定を行なうこと。
既定値: ldap machine suffix
=
例: ldap machine suffix
= ou=Computers
このパラメータは、匿名接続時に受け取る LDAP 要求の最大許容サイズ (バイト単位)を指定する。
要求サイズがこの制限を超過した場合、要求は拒否される。
既定値: ldap max anonymous request size
= 256000
例: ldap max anonymous request size
= 500000
このパラメータは、認証済みの接続時に受け取る LDAP 要求の最大許容サイズ (バイト単位)を指定する。
要求サイズがこの制限を超過した場合、要求は拒否される。
既定値: ldap max authenticated request size
= 16777216
例: ldap max authenticated request size
= 4194304
このパラメータは、LDAP 検索要求時に受け取る LDAP 要求の最大許容サイズ (バイト単位)を指定する。
要求サイズがこの制限を超過した場合、要求は拒否される。
既定値: ldap max search request size
= 256000
例: ldap max search request size
= 4194304
このパラメーターは1ページあたりのエントリ数を指定する。
もしも、LDAP サーバーが paged results をサポートする場合、クライアントは すべての一覧の代わりに、検索結果(ページ)のサブセットを要求できる。 このパラメーターはそのページの大きさを指定する。
既定値: ldap page size
= 1000
例: ldap page size
= 512
このオプションは、Samba によるパスワード変更時に、Samba が通常のアカウント (ワークステーション、サーバーやドメインの信頼関係は含まない) の NT ハッシュや LM ハッシュと、LDAP のパスワード の同期をおこなうかを定義する。
ldap passwd sync には、 以下の 3 つのうちの 1 つを設定することができる:
Yes
=
LDAP、NT、LM パスワードの更新を試み、pwdLastSet
time を変更する。
No
=
NT、LM パスワードと pwdLastSet time を更新する。
Only
=
LDAP パスワードのみを変更し、あとの処理は LDAP サーバーに
委任する。
既定値: ldap passwd sync
= no
Samba が読みとり専用の LDAP レプリカに対して、書き込みの要求を行なった際には、読み書き可能なマスターサーバーと通信するようにリダイレクトを行なう。 その後マスターサーバーは、変更を最初に通信した「ローカル」サーバーに対して複製を行なうが、特に遅い回線越しの場合、これには数秒の時間を要する。 特にドメインへの参加といったクライアント側の処理については、「成功」した処理が LDAP のデータに即座に反映されないことで、 混乱する可能性がある。
このオプションにより、LDAP サーバーに変更が反映されるのを待つために Samba が短い時間待機するようになる。 遅延の大きいネットワークの場合、LDAP の複製に要する時間をネットワークモニターで取得の上、それに応じて値を増減すればよいだろう。 データの複製が完了したかどうかについてのチェックが行なわれるわけではない点に注意すること。
この値はミリ秒単位で指定する。最大値は 5000 (5秒)である。
既定値: ldap replication sleep
= 1000
Editposix は ldapsam:trusted を利用してドメインコントローラーの管理をより 簡単にするためのオプションである。これを使えば posix ユーザーやグループの 追加や保守のためのカスタムスクリプトを設定しなくてもすむ。その代わりこの オプションでは、LDAP ツリー上のユーザーやグループのエントリを直接生成、 削除、編集できる。なお、このオプションを使うにあたっては、ユーザー/グループ の生成をする際に新しい uid/gid を割り当てるための winbindd が動いている 必要がある。その割り当て範囲はあらかじめ設定されていなければならない。
このオプションを使うためには、基本的な LDAP ツリーが提供され、また LDAP
サフィックスが適切に設定されていなければならない。構築したてのサーバーでは、
net sam provision
コマンドで事前に
デフォルトのユーザーとグループ (Administrator, Guest, Domain Users,
Domain Admins, Domain Guests) を作成できる。このコマンドを動かす際は
LDAP サーバーと winbindd が動いており、かつ smb.conf の LDAP オプション
群が適切に構成されていなければならない。
ldapsam:trusted = yes オプションで
使われる典型的な LDAP 構成であれば、通常は
ldapsam:editposix = yes を使うのに
十分である。
設定例を以下に示す:
encrypt passwords = true passdb backend = ldapsam ldapsam:trusted=yes ldapsam:editposix=yes ldap admin dn = cn=admin,dc=samba,dc=org ldap delete dn = yes ldap group suffix = ou=groups ldap idmap suffix = ou=idmap ldap machine suffix = ou=computers ldap user suffix = ou=users ldap suffix = dc=samba,dc=org idmap backend = ldap:"ldap://localhost" idmap uid = 5000-50000 idmap gid = 5000-50000
この設定例では、ディレクトリのレイアウトが以下の LDIF で示すように なっていることを想定している:
dn: dc=samba,dc=org objectClass: top objectClass: dcObject objectClass: organization o: samba.org dc: samba dn: cn=admin,dc=samba,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret dn: ou=users,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: users dn: ou=groups,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: groups dn: ou=idmap,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: idmap dn: ou=computers,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: computers
既定値: ldapsam:editposix
= no
デフォルトで、ドメインコントローラーとして動作し、認証に LDAP を用いている Samba は、ユーザーやグループの情報を取得するために、UNIX の NSS サブシステムを必要とする。 UNIX がユーザー情報を /etc/passwd や /etc/group に格納する機構からすると、これは明らかに非効率である。 ユーザーが把握する必要がある重要な項目の一つに、所属グループの一覧がある。 通常の UNIX のユーザー管理機構であれば、/etc/group ファイルの全体を参照するか、LDAP 環境においては NSS 機構を用いて同様のことを行なう。 UNIX には group のメンバーを参照するのに最適化された関数が存在している。 しかし、残念なことに、ユーザーやグループを扱うその他の関数については、こうした最適化は行なわれていない。
o Samba を大規模環境に適用させるため、ldapsam:trusted = yes オプションにより、Samba に関係するユーザーおよびグループのデータベースは LDAP 標準の posixAccount/posixGroup 属性に格納されているとみなす。 さらに、Samba の AUXILIARY(補助) オブジェクトクラスについても、同じ LDAP オブジェクト中に POSIX データとして格納されているものとみなす。 これらの前提条件に適合する場合、 ldapsam:trusted = yes を設定することが可能となる。 この場合、Samba はユーザー情報の NSS に対する問い合わせを完全にバイパスする。 最適化された LDAP クエリにより、ログオンや管理作業が劇的に高速化される。 LDAP データベースのサイズにもよるが、共通的なクエリについては、100 倍以上の高速化が容易に達成される。
既定値: ldapsam:trusted
= no
ldap server require strong authは、ldap サーバが ldap 通信データに対して、署名付きか、署名+暗号化(シールされているか)を定義する。 設定可能な値はno, allow_sasl_without_tls_channel_bindings とyesである。
Windows には HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\ 配下にLdapEnforceChannelBindingがある。
値noは、すべての通信において、シンプルおよび sasl バインド を許可する。これは LdapEnforceChannelBinding=0 と一致する。
allow_sasl_without_tls_channel_bindingsの値 は、TLS で暗号化された接続上で、シンプルおよび sasl バインド (署名またはシールなしでの)を許可する。失敗した tls チャネルバインディングは 無視されるため、yesの値が使用できない場合にのみ使用すること。 暗号化されていない接続では、sign または seal を使用した sasl バインド だけが許可される。これは、LdapEnforceChannelBinding=1 に一致する。
Samba で tls チャネルバインディングがサポートされる前は、tls チャネル バインディングなしで sasl バインディングを許可するために、 allow_sasl_over_tlsの値が使えた。 これは、yesという値が tls チャネルバインディングを 使用した sasl バインドが可能になったため誤解を招くようになった。 設定は、yesか、本当に必要な場合は、代わりに allow_sasl_without_tls_channel_bindingsに 変更する必要がある。現在、allow_sasl_over_tlsは allow_sasl_without_tls_channel_bindingsの エイリアスにすぎないが、将来のバージョンでは削除される予定である。
yesの値は、単純なバインドのみが許可され、 sasl は TLS 暗号化接続上で正しい TLS チャネルバインディングを 使用してバインドする。TLS チャネルバインディングを使用しない sasl バインドは許可されない。暗号化されていない接続では、sign または seal を使用した sasl バインドのみが許可される。これは LdapEnforceChannelBinding=2 に一致する。
既定値: ldap server require strong auth
= yes
このオプションは Samba が LDAP サーバーへの接続に SSL を利用するかを
指定する。以前の Samba のバージョンにおいて
configure スクリプト
の--with-ssl
で指定された Samba の古い SSL サポートとは関係ない。
LDAP サーバーとの接続は可能な限り暗号化すべきである。これは、
start_tls
パラメーターを指定する、
またはpassdb backendにおける URL の指定に
ldaps://
を指定するか、のいずれか
によって設定される。
ldap sslオプションは、2つのうちいずれかを 選択する。
Off
=
ディレクトリに問い合わせする時SSLを使わない。
start_tls
=
ディレクトリに問い合わせする際に LDAPv3 StartTLS 拡張オプション
(RFC2830)を利用する。
このパラメーターはrpcメソッドのみ影響する。
既定値: ldap ssl
= start tls
全体に適用される LDAP サフィックスを指定すると共に、sambaDomain オブジェクトの格納先を指定する。
ldap suffix は、ldap user suffix、 ldap group suffix、ldap machine suffix、 ldap idmap suffix で指定された値に付加される。 これらのパラメーターでは ldap suffix からの相対 DN で指定が行なわれる。
既定値: ldap suffix
=
例: ldap suffix
= dc=samba,dc=org
このパラメーターは、ユーザーが LDAP ディレクトリに加えられるときの サフィックスを指定する。もしこのパラメーターが設定されていない場合、 ldap suffix の値が代わりに使用される。 サフィックスの文字列には、ldap suffix の文字列が付加されるため、相対 DN で指定を行なうこと。
既定値: ldap user suffix
=
例: ldap user suffix
= ou=people
このパラメーターにより、 Samba が共有上で level2(読みとり専用) oplock をサポートするかどうかが制御される。
level2 の読みとり専用 oplock を利用することで、 Windows NT クライアントは、既に oplock が行われているファイルを別のクライアントがオープンしようとした際に (今までの排他的な oplock の場合に行われていた関連するすべての oplock を廃棄する処理の代わりに)、 読み書き可能な oplock から読みとり専用の oplock へのダウングレードを行うような oplock をファイルに対して行うことが可能になる。 これにより、ファイルをオープンしているクライアントのうち、level2 oplock をサポートしているものは、 ファイルの先読みのみを行うキャッシュ(このキャッシュは書き込みキャッシュやロックを行わない)を引続き行うため、 書き込みが行われないようなファイル(例えばアプリケーションの exe ファイルなど)に対して 多くのアクセスが行われる際のパフォーマンスが改善される。
read only の oplock を行っていたクライアントのいずれかがファイルに書き込みを行った時点で、 すべてのクライアントに対して、 oplock を「なし(none)」の状態に解除し、先読みキャッシュを破棄するように通知が行なわれる(応答待ちは行なわれない)。
このパラメーターを有効にして、 共有されている実行ファイルのアクセスを高速化することを推奨する。
level2 oplock に関する詳細な議論については、CIFS の仕様を参照のこと。
現在、kernel oplocks がサポートされていると、
level2 oplock は(このパラメーターがyes
になっていても)、利用されない。
このパラメーターを機能させるためには、
oplocks
パラメーターが、共有上で yes
である必要があることに注意。
既定値: level2 oplocks
= yes
このパラメーターにより、 nmbd(8) が、 OS/2
クライアントのブラウズリスト上に Samba サーバーを格納するために必要な
lanman announce のブロードキャストを送出するかどうかが制御される。
このパラメーターは3つの値、yes
、
no
、auto
をとる。
デフォルトは auto
である。
no
の場合、Samba は決してこのブロードキャストを送出しない。
yes
の場合、Samba は lanman announce のブロードキャストを
lm interval によって設定された間隔で定期的に送出する。
auto
の場合、
Samba はデフォルトでは lanman announce を送出しないが、受信を待機する。
そして、このブロードキャストを受信すると、
lm interval によって設定された間隔で定期的なブロードキャストの送出を開始する。
既定値: lm announce
= auto
例: lm announce
= yes
Samba が OS/2 クライアントが必要とする lanman announce のブロードキャストを送出するように設定されている場合 (lm announce パラメーターを参照のこと)、 このパラメーターにより送出間隔が秒単位で指定される。 これが 0 の場合、 lm announce パラメーターの設定に関わらず、 lanman announce は送出されない。
既定値: lm interval
= 60
例: lm interval
= 120
このパラメーターは、printcap ファイル中で定義されたすべてのプリンターをデフォルトでブラウジング可能とするかどうかを制御する真偽値パラメーターである。 詳細は、 printers セクションを参照のこと。
既定値: load printers
= yes
このオプションにより、 nmbd(8)
がサブネットのローカルマスターブラウザーになるかどうかが制御される。
no
の場合、 nmbd
はサブネットのローカルマスターブラウザーになろうとせず、
すべてのブラウザー選定において、常に敗退することになる。
デフォルトで、このパラメーターは yes
に設定されている。
このパラメーターを yes
にすることは、
Samba がサブネットのローカルマスターブラウザーとなることを意味するものではなく、
nmbd
がローカルマスターブラウザーの選定に
参加する ということを意味するものに過ぎない。
このパラメーターの値を no
にすると、nmbd
は 決して ローカルマスターブラウザーにならなくなる。
既定値: local master
= yes
このオプションは、ロックファイルを置くためのディレクトリを 指定する。ロックファイルは max connections オプションにより利用される。
注意:レジストリ設定の中では、このオプションは指定できない。
このディレクトリ内のファイルは、サービスの再起動中に存在していな くてもよい。したがって、揮発性のストレージ(たとえば、Linux 上の tmpfs)に 配置しても問題ない。
既定値: lock directory
= ${prefix}/var/lock
例: lock directory
= /var/run/samba/locks
このパラメーターは、 クライアントからのロック要求により、 サーバーがロック処理を行うかどうかを制御する。
locking = no
の場合、
すべてのロックおよびアンロック要求は成功したものとして扱われ、
すべてのロック状態の問い合わせは、ファイルがロック可能であると応答する。
locking = yes
の場合、
サーバーにより実際のロック処理が実行される。
このオプションをno
にすることは、
いかなる場合でも推奨されないが、
ロックを必要としないと思われる read only
のファイルシステム(例えば CDROM ドライブ)では、有用 かも知れない。
ロックが機能しない場合、 データが破壊される可能性もあるため、全体に対しても、 個々の共有に対しても、ロックを無効にする際には注意すること。このパラメーターの設定は通常必要ない。
既定値なし
smbd が一度失敗したロックを再度獲得しようとする際の待ち時間を、
ミリ秒単位で指定する。
このパラメーターの既定値は、
Samba 3.0.23 において 10 から 200 に変更された。
関連する lock spin count
パラメーターは Samba 3.0.24 以降では使用されない。
このパラメーターの値を変更する必要はないであろう。
既定値: lock spin time
= 200
このオプションにより、 Samba のログファイル(デバッグファイル)の名称を変更することが可能である。
このオプションには、標準の変数置換が適用されるため、 個々のユーザーやマシン毎にログを分割することが可能である。
既定値なし
例: log file
= /usr/local/samba/var/log.%m
このパラメーターはロギングバックエンドを設定する。同時に複数の バックエンドが設定可能であり、各バックエンドには異なるログレベルを設定できる。 このパラメーターはバックエンドのリストであり、それぞれのバックエンドは backend[:option][@loglevel] という形で指定する。
'option' パラメーターは、バックエンド固有のオプション指定に利用する。
バックエンドに対する log level はオプションであるため、その設定がない 場合は、メッセージすべてがそのバックエンドに送られる。 log level パラメーターは全体のログレベルを決定する。 一方ここでは、それぞれのバックエンドに設定するログレベルを定義するものである。
logging が設定された場合、これは、 syslog と syslog only パラメーターを上書きする。
バックエンドの中には、追加のライブラリを用いて Samba をコンパイルした 場合にのみ利用できるものがある。ロギングバックエンドの全リストは以下の通り。
syslog
file
systemd
lttng
gpfs
ringbuf
ringbuf
バックエンドではオプション
として引数 size があり、バッファーサイズを変更することができる。既定値は 1 MB
である。ringbuf:size=NBYTES
既定値: logging
=
例: logging
= syslog@1 file
このパラメーターの値(文字型)により、
smb.conf
ファイル中でデバッグレベル(ログレベル)を設定することが可能になる。
このパラメーターは Samba 2.2.x 系列と比べ強化されており、デバッグクラスごと にデバッグレベルと異なったデバッグログファイルを指定することが可能となっている。 これにより、システムの設定が非常に柔軟に行なえるようになる。以下の デバッグクラスが現在実装されている。
all
tdb
printdrivers
lanman
smb
rpc_parse
rpc_srv
rpc_cli
passdb
sam
auth
winbind
vfs
idmap
quota
acls
locking
msdfs
dmapi
registry
scavenger
dns
ldb
tevent
auth_audit
auth_json_audit
kerberos
drs_repl
smb2
smb2_credits
dsdb_audit
dsdb_json_audit
dsdb_password_audit
dsdb_password_json_audit
dsdb_transaction_audit
dsdb_transaction_json_audit
dsdb_group_audit
dsdb_group_json_audit
種々のモジュールは、最初の使用時に動的なデバッグクラスを登録する:
catia
dfs_samba4
extd_audit
fileid
fruit
full_audit
media_harmony
preopen
recycle
shadow_copy
shadow_copy
unityed_media
virusfilter
指定されたクラスを異なったファイルにログ出力するための設定は、
log file のあとに、クラスに対して
@PATH と指定する。たとえば、 log level = 1
full_audit:1@/var/log/audit.log
である。
認証と承認の監査情報は auth_audit
を指定するとログ出力される。
--without-json パラメータなしで Samba がコンパイルされた場合、
auth_json_audit
配下に JSON 形式でのログ出力が行われる。
Samba Active Directory ドメインコントローラー内のユーザーアカウント についての認証と承認は、すべて十分にサポートされている。パスワード 変更時のような暗黙的な認証も含まれる。ファイルサーバーであれば、NTLM 認証、SMB 承認、RPC 承認がサポートされる。
auth_audit
と auth_audit_json
のログレベルは以下の通り。
2: 認証失敗
3: 認証成功
4: 承認成功
5: 匿名による認証と承認の成功
AD DC sam.ldb
データベースへの変更は、
dsdb_audit
配下に記録され、JSON 形式のものは、
dsdb_json_audit
配下に記録される。
AD DC sam.ldb
データベースへの
グループメンバシップの変更は、dsdb_group_audit
配下に記録され、JSON 形式のものは
dsdb_group_json_audit
配下に記録される。
dsdb_audit
,
dsdb_json_audit
,
dsdb_group_audit
,
dsdb_group_json_audit
and
dsdb_json_audit
のログレベルは以下の通り。
5: データベースの変更
5: 他の DC からの複製された更新
AD DC 中におけるパスワードの変更とパスワードのリセットは、
dsdb_password_audit
配下に記録され、JSON 形式のものは
dsdb_password_json_audit
に記録される。パスワードの変更は、
auth_audit
と
auth_audit_json
経由で認証イベントとしても発生する。
dsdb_password_audit
と
dsdb_password_json_audit
のログレベルは以下の通り。
5: パスワード変更とリセットが成功
トランザクションロールバックとコミット準備の失敗は、
dsdb_transaction_audit
配下に記録され、JSON 形式のものは、
dsdb_transaction_json_audit
配下に記録される。
dsdb_transaction_audit
と
dsdb_transaction_json
のログレベルは以下の通り。
5: トランザクション失敗(ロールバック)
10: トランザクション成功(コミット)
トランザクションロールバックは Samba 中で可能であり、ここの操作の失敗
(たとえば、競合するレコードが追加されることによる)以上のことを反映する
ことはないが、それは可能である。監査ログはすでに生成されており、
トランザクションが完了する前にシステムログに送信される。トランザクションの
詳細をログに記録すると、パスワードと、ロールバックされた
sam.ldb
操作の識別が出来るようになるが、
それらは実際には永続化されていない。
データベースに直接アクセスする、
root
ユーザによる、
sam.ldb
のローカルな変更は、
システムログには記録されないが、administrator 自身のコンソールには
表示される。理想的とは言えないが、このような変更が出来るユーザは、
どのような時にも監査ログ出力を無効に出来る。
既定値: log level
= 0
例: log level
= 3 passdb:5 auth:10 winbind:2
例: log level
= 1 full_audit:1@/var/log/audit.log winbind:2
このパラメーターは、 ホームディレクトリとして接続されるパスを指定する (logon home も参照のこと)。 このパラメーターは NT Workstation によってのみ利用される。
このパラメーターは、Sambaがログオンサーバーとして構成された場合のみ、 意味をもつことに注意。
訳注: Samba 3.0 系列で LDAP や TDB を認証データベースとして用いている場合、これらの値はユーザー毎に保持され、本パラメーターは指定がなかった際の既定値を設定するものとなる。
既定値: logon drive
=
例: 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
がうまく動作しなかったが、
プロファイルをホームディレクトリの外に置くことが可能であった。
現在の実装は正しい実装である。上記のような技を用いることで、
このパラメーターをプロファイルの位置の設定にも利用することが可能になっている。
この機能を無効とするには、logon home = "" のように空の文字列を設定する。
このパラメーターは、Samba がログオンサーバーとして構成された場合のみ、 意味をもつ。
訳注: Samba 3.0 系列で LDAP や TDB を認証データベースとして用いている場合、これらの値はユーザー毎に保持され、本パラメーターは指定がなかった際の既定値を設定するものとなる。
既定値: logon home
= \\%N\%U
例: logon home
= \\remote_smb_server\%U
このパラメーターにより、移動プロファイル(Desktop、NTuser.dat など)が格納される ディレクトリが指定される。 以前のマニュアルページとは矛盾するが、このパラメーターは Windows 9x の移動プロファイルとは無関係である。 Windows 9x システムで移動プロファイルを利用する方法については、 logon home パラメーターを参照のこと。
このオプションは、標準の変数置換が適用されるため、
個々のユーザーやマシン毎にログオンスクリプトを分けることが可能である。
このパラメーターにより、Windows NT クライアントによって読み出される「Application Data」(
デスクトップ
、スタート メニュー
、
ネットワークコンピューター
、
プログラム
やその他のフォルダーとそのコンテンツ)のディレクトリも設定される。
設定やディレクトリを Windows NT クライアント上にロードするため、共有やパスはユーザーが読み込み可能にしなければならない。 また、Windows NT クライアントが NTuser.dat やその他のディレクトリを作成できるように、 ユーザーが最初にログインする時には共有を書き込み可能にしなければならない。 必要があれば、ディレクトリと中身は読み出し専用にすることができる。 ただし、NTuser.dat ファイルを読み出し専用にすることは推奨できない。 NTuser.dat を NTuser.man に名前を変更することで期待される動作(固定プロファイル(MANdatory profile))を実現できる。
Windows クライアントは、ユーザーがログインしていなくても [homes] 共有への接続を保持することがある。 そのため、logon path に [homes] 共有への参照を含めないようにしなくてはならない (たとえば、このパラメーターを\\%N\homes\profile_path のように設定すると問題が発生することがある)。
このオプションには、標準の変数置換が適用されるため、 個々のユーザーやマシン毎にログオンスクリプトを分けることが可能になる。
この値をクォーテーションで囲まないこと。これを 「\\%N\profile\%U」 のようにすると、 プロファイル機構に問題が発生する。 tdbsam もしくは ldapsam が passdb backend として用いられている環境では、 ユーザーアカウントが作成された時点で、このパラメーターで設定されている内容が passdb backend に書き込まれるが、 その後 smb.conf ファイルにあるパラメーターの値は、上書きされることがある。 passdb backend への書き込みに際して発生したエラーについては、 適切なツール(コマンドラインツールの pdbedit などのツール)を用いて編集する必要がある。
このパラメーターは、Samba がログオンサーバーとして構成された場合のみ、 意味をもつことに注意。
このパラメーターの値を空文字列に設定することで、移動プロファイルを無効にすることができる。 logon path = "" のようにすれば良い。 smb.conf ファイルのデフォルトの値を空文字列にしても、 passdb backend 中のユーザーアカウントの設定で何らかの値を指定した場合は、 空文字列の設定を上書きすることになるので注意すること。 移動プロファイルを完全に無効とするには、各ユーザーアカウントの設定が空文字列になっている必要がある。
設定例:
logon path = \\PROFILESERVER\PROFILE\%U
既定値: logon path
= \\%N\%U\profile
このパラメーターは、 ユーザーのログインが成功した際にダウンロードして実行される、 バッチファイル (.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
がある。
ほかには、共通に利用されるユーティリティ用に
NET USE U: \\SERVER\UTILS
という設定を行なったり、サンプルとして
NET USE Q: \\SERVER\ISO9001_QA
といった設定を行ったりすることが挙げられる。
[netlogon] 共有に対しては、 バッチファイルが改変されてセキュリティが侵害されてしまわないように、 書き込みアクセスを許可しないか、 安全な環境下でのみバッチファイルへの書き込み権限をユーザーに与えるようにすること。
このオプションには、標準の変数置換が適用されるため、 個々のユーザーやマシン毎にログオンスクリプトを分けることが可能になる。
このオプションは、Samba が古いドメインコントローラロールにおいて、
ログオンサーバーとして構成された場合のみ、意味をもつ。
もしも Samba が Active Directory ドメインコントローラとして設定された場合、
LDAP 属性 scriptPath
がその代わりに
使われる。passdb backend = ldapsam
が使われている場合の設定においては、このオプションは、LDAP 属性
sambaLogonScript
がない時の
既定値としてのみ使われる。
既定値: logon script
=
例: logon script
= scripts\%U.bat
CIFS クライアントと Samba との間での接続が切れた時、Samba は サーバーサイドのネットワーク接続を単に停止する以外のオプションは 持っていない。もしもこれが起きた場合、Windows アプリケーションが 要求したすべての書き込み動作を、Windows クライアントが完了していない ために、データの破壊の危険性がある。このオプションを"yes"に設定 すると、smbd は、ネットワーク接続が切断された時に書き込みモードで オープンしていたすべてのファイルの一覧をログレベル0のメッセージ としてログ出力する。これらはデータ破壊の可能性があるファイルである。 これは、整合性チェックを行うファイルの一覧を、管理者に与える手段 という意味がある。
既定値: log writeable files on exit
= no
このパラメーターには、 指定した印刷ジョブの印刷やスプーリングを停止させるためにサーバーホスト上で実行されるコマンドを指定する。
このコマンドは、プリンター名と停止させる印刷ジョブの番号を引数にとり、印刷ジョブを一時停止させるプログラムやスクリプトでなければならない。 これを実装する方法の一つは、非常に低い優先権を持つジョブはプリンターに送られないというジョブの優先権の仕様を利用するものである。
%p
変数は、
プリンター名に置換される。
%j
はジョブ番号(整数)に置換される。
HPUX の場合(printing=hpux
を参照のこと)、
-p%p
オプションを lpq コマンドに付加することで、正しいステータスが表示される。
たとえば、ジョブの優先権が設定されたフェンス優先権より低いならジョブは停止状態であるが、
優先権が等しいかより高いならスプール状態または印刷中の状態となる。
サーバーの PATH 環境変数が利用できないかもしれないことを考慮して、 lppause command を絶対パスで記述する癖をつけておくと良い。
既定値なし
例: lppause command
= /usr/bin/lpalt %p-%j -p0
このパラメーターは、
lpq
コマンドが頻繁に呼び出されるのを防ぐため、lpr の情報(出力)をキャッシュする期間を制御する。
システムが使用する lpq
コマンドの種別毎にキャッシュが行なわれる。そのため、ユーザー毎に異なった
lpq
コマンドを使用する場合、
キャッシュ情報は共有されない。
キャッシュファイルは /tmp/lpq.xxxx
に保存される。
xxxx は使用している lpq
コマンドのハッシュ値となる。
デフォルトは 30 秒であるため、キャッシュされたデータが 30 秒以内の場合は、
前回行なわれた同一のlpq
の実行結果のキャッシュが用いられる。
lpq
コマンドのレスポンスが非常に遅い場合は、この値を大きくすることを推奨する。
値を 0 にした場合、キャッシュは完全に無効となる。
既定値: lpq cache time
= 30
例: lpq cache time
= 10
このパラメーターには、
lpq
形式のプリンター状態情報を得るため、
サーバー上で実行するコマンドを指定する。
このコマンドは、プリンター名のみを引数としてとり 、 プリンター状態情報を出力するプログラムやスクリプトでなければならない。
現在、BSD、AIX、LPRNG、PLP、SYSV、HPUX、QNX、CUPS、SOFTQ
という9つの印刷形式がサポートされており、
これにより大部分の UNIX システムがサポートされる。
printing =
オプションにより、利用する形式を指定することも可能である。
クライアントによっては(特にWindows for Workgroups)、 状態情報を要求しているプリンターの接続番号(connection number)を正しく送らないことがある。 この場合、サーバーはクライアントが接続している最初の印刷サービスの状況を報告する。この動作は、 与えられた接続番号が不正な場合にのみ行なわれる。
%p
変数は、
プリンター名に置換される。この変数が指定されなかった場合、プリンター名はコマンドの最後に付加される。
サーバーの $PATH
環境変数が利用できないかもしれないことを考慮して、
lpq command
を絶対パスで記述する癖をつけておくと良い。
CUPS ライブラリを付加してコンパイルした場合は、
smbd が印刷キューのリストを取得するためのライブラリコールを行なうため、
lpq command
は必要ない。
既定値: lpq command
=
# 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
既定値: lpresume command
= printing パラメーターの設定に依存する
このパラメーターには、 印刷ジョブを削除するためにサーバー上で実行するコマンドを指定する。
このコマンドは、 プリンター名とジョブ番号を受け取るとその印刷ジョブを削除するプログラムやスクリプトでなければならない。
%p
変数は、
プリンター名に置換される。
%j
はジョブ番号(整数)に置換される。
サーバーの PATH 環境変数が利用できないかもしれないことを考慮して、
lprm command
を絶対パスで記述することを推奨する。
以下に設定例を示す。
lprm command = /usr/bin/lprm -P%p %j あるいは lprm command = /usr/bin/cancel %p-%j
既定値: lprm command
= printing パラメーターの設定に依存する
この非推奨オプションを設定すると、AD DC内の RPCサーバ
が、\pipe\netlogon
IPC パイプ上の、
LSARPC インタフェースに応答するようになる。
有効にした場合、内部実装の選択肢により、 Microsoft Windowsの動作に一致する。
無効にした場合(既定値)、netlogon サーバは分離され、 複数のプロセスで動作できるようになり、 AD DC の性能がより向上する。
既定値: lsa over netlogon
= no
Sambaサーバーが NT ドメイン又は Active Directory のメンバーである場合 (security = domainとsecurity = ads
パラメーターを参照のこと) 、
実行中の winbindd プロセスは、private/secrets.tdb
という TDB
ファイルに格納されたコンピューターアカウントのパスワードを定期的に変更しようとする。
このパラメーターは、パスワードの変更を行なう間隔を秒単位で設定する。デフォルトは、NT ドメインのメンバーサーバーと同じく 1 週間 (秒単位で表される) である。
smbpasswd(8) および security = domain および security = adsパラメーターも参照のこと。
既定値: machine password timeout
= 604800
このパラメーターは、Magic スクリプト(下記の magic script パラメーターを参照) によって生成される出力結果が書き込まれるファイルの名前を指定する。
複数のクライアントが同じ Magic
スクリプト
を同じディレクトリで利用する場合、
出力ファイルの内容は不定になる。
既定値: magic output
=
# <magic script name>.out
例: magic output
= myfile.txt
このパラメーターで指定したファイルは、 ファイルをオープン後クローズした時点でサーバーにより実行される。 このパラメーターにより、UNIX のスクリプトを Samba ホストに送って、 接続しているユーザーの権限で実行する機能が提供される。
このようにして実行されたスクリプトは、 ユーザーに削除する権限があり、ファイルが削除可能であれば、 実行完了と同時に削除される。
スクリプトが生成した出力は、 magic output パラメーター(前述)で指定されたファイルに書き込まれる。
シェルによっては、改行コードとして CR ではなく CR/LF を利用しているスクリプトをうまく実行できないことに注意。 Magic スクリプトはホスト上でそのまま実行されるため、ホストやシェルによっては、 DOS の改行コードを修正しておく必要があるかも知れない。
Magic スクリプトは 実験用 のパラメーターであり、このパラメーターを安全だと考えるべきでは ない。
既定値: magic script
=
例: magic script
= user.csh
このパラメーターは、 UNIX 上の DOS 非互換のファイル名を DOS 互換の名前(「短縮名」)に短縮してアクセス可能にするか、 単純に無視するかどうかを制御する。
短縮処理がどのように行なわれているかについての詳細は、 name mangling セクションを参照のこと。
オプションとして設定できるのは以下のものである。
yes - DOS 8.3 形式に従っていないファイル名に対して、名前の 短縮を行う。
no - 名前の短縮を 行わない。
illegal (既定値) - NTFS では扱えない文字を含んだファイル名に対して、名前の 短縮を行う。短縮名を利用しなくなった最近のクライアント に対しては、これがもっとも適切な設定である。
短縮が行なわれる場合の手法は以下の通りである。(訳注: 以下は hash アルゴリズムの場合)
ファイル名の先頭から一番右にあるドットの前までの英数 5 文字は、 大文字に変換された上で、短縮名の先頭 5 文字となる。
チルダ「~」が短縮名に付加される。 更に元々のファイル名のベース部分(ファイル名から拡張子部分を除いたもの)から生成された一意な 2 文字が付加される。 拡張子にあたる部分は、大文字を含んでいるか、 3 文字以上の場合のみ、ハッシュの計算に含まれる。
「~」の利用を避けたい場合は、 mangling char オプションにより、別の文字を指定することも可能である。
UNIX 上のファイル名がドットから始まる場合、 そのファイルは DOS の隠しファイルとして扱われる。 この場合の短縮名は、ファイル名の先頭のドットを取り除き、 実際の拡張子に関わらず、拡張子「___(「_」3 文字」を付加したものから、一般のファイル名と同様にして生成する。
2 桁のハッシュ値は、大文字の英数文字になる。
このアルゴリズムは、 ディレクトリ内のファイルに先頭の英数 5 文字が同一のファイル名が存在する時のみ名前の衝突が発生するが、 実際に衝突する確率は、1/1300 である。
名前の短縮処理により、(この処理が有効な限り)Windows や DOS から、UNIX 側の長いファイル名を保持したまま UNIX ディレクトリ間のファイルのコピーができる。 Windows や DOS 側から UNIX 側のファイル名の拡張子を変更しても、ベース名は保持される。 なお、セッションが異なっても短縮名は変化しない。
既定値: mangled names
= no
例: mangled names
= illegal
短縮名を生成する際に、元々の名前に付加するプレフィックスの長さを指定する。 大きな値を指定すると、 ハッシュアルゴリズムの効果が低下し、 名前の衝突の可能性が高まる。 最小値は 1 であり、最大は 6 である。
mangle prefix は mangling method が hash2 の時のみ有効である。
既定値: mangle prefix
= 1
例: mangle prefix
= 4
このパラメーターは name mangling において、 magic キャラクターとして利用される文字を指定する。デフォルトは「~」であるが、 ソフトウェアによっては問題が発生してしまうかも知れない。 このオプションにより、任意の文字を指定することが可能になる。 このパラメーターは mangling method が hash の時のみ有効である。
既定値: mangling char
= ~
例: mangling char
= ^
短縮名を生成する際に利用するアルゴリズムを指定する。 「hash」と「hash2」という2つの値を指定することが可能である。 「hash」は Samba 2.2.x での既定値であり、長年 Samba で利用されてきた方式である。 「hash2」は新しい方式であり、現在の既定値である。これは、 (名前の重複の発生が低減される点で)より優れたアルゴリズムといえる。 Win32 アプリケーションの多くが短縮名を記憶しているため、 新しいアルゴリズムへの変更は、 こうしたアプリケーションの再インストールが必要になる可能性があるという点で、安易に行なうべきではない。
既定値: mangling method
= hash2
例: mangling method
= hash
この真偽値パラメータは、標準化された NFS4 ACL をサポートせず、 POSIX ドラフトの ACL 実装のみがあるシステム用にのみ関連する。 Linux は、標準化された NFS4 ACL を実際にはまだ提供していない、唯一の 一般的な UNIX システムである。そのようなシステムでは、このパラメータは、 smbd(8) が Windows の、'保護された' (継承しない) フラグを user.SAMBA_PAI (POSIX ドラフト ACL の 継承(Inheritance)) と呼ばれる 拡張属性中にマップしようとする。このパラメータはファイルシステムにおける 拡張属性のサポートを必要とし、NT ACLが OS およびファイルシステムが実装する POSIX ドラフト ACL にベストエフォートでマップされる時に、Windows の ACL エディタが (非)継承情報を格納出来るようにする。
既定値: map acl inherit
= no
このパラメーターは、DOS のアーカイブ属性を UNIX の所有者 (owner) 実行権ビットに割り当てるかどうかを決定する。 DOS のアーカイブ属性は、バックアップを行なった後でファイルが修正されると設定される。 このオプションを変更する契機の一つは、Samba マシン上のファイルを修正した際に、 UNIX 上で実行可能になってしまわないようにしたい場合であろう。 これは、共有のソースコードやドキュメントなどに関して、非常に悩ましい事象である。
store dos attributesが設定されていた場合、 DOSのアーカイブ属性はUNIX拡張属性中に格納されるため、 このパラメーターは無視されることに注意。
このパラメーターを利用する場合は、 所有者の実行権ビットがマスクされないように(100というアクセス権が含まれるように)、 create mask パラメーターを設定することが必要となることに注意。 詳細は、create mask パラメーターを参照のこと。
既定値: map archive
= yes
このパラメーターは、DOSの隠しファイル属性を UNIX の全員 (world) の実行権ビットに割り当てるかどうかを決定する。
store dos attributesパラメーターが設定されていた場合、 DOS の隠しファイル属性はUNIX拡張属性中に格納されるため、 無視されることに注意。
このパラメーターを利用する場合は、 全体の実行権ビットがマスクされないように(001というアクセス権を含むように)、 create mask パラメーターを設定することが必要となることに注意。 詳細は、create mask パラメーターを参照のこと。
既定値: map hidden
= no
このパラメーターは、DOS の読み取り専用属性を UNIX のファイルシステムに対応付ける方法を制御する。
このパラメーターには 3通りの値を指定することが可能である。これにより、
store dos attributes が No
、もしくは拡張属性が存在しない環境において、
smbd(8) がファイルの読み取り専用属性を表示する方法を制御することが可能である。
store dos attributes が yes
の場合、このパラメーターは無視される。
これは Samba 3.0.21 で新設されたパラメーターである。
3 通りの値を以下に示す:
Yes
- 読み取り専用の DOS 属性は、UNIX のパーミッションビットにおけるユーザー、すなわち所有者の書き込み権ビットに反転した形で対応付けられる。
所有者の書き込み権ビットが設定されていない場合、ファイルには読み取り専用属性が付加されているものとみなされる。もしも、読み取り専用のDOS属性が設定されてた場合、
グループとその他の書き込み権ビットはゼロに設定される。ACL中の書き込みビットはSambaによって無視される。もしも、読み取り専用のDOS属性が設定されていなかった場合、Sambaは単にそれの所有者の書き込みビットを設定する。
Permissions
- 読み取り専用の DOS 属性は、接続しているユーザーに対する有効なパーミッションに対応付けられる。
これは、smbd(8)
が UNIX のパーミッションおよび (存在していれば) ファイルシステムのの ACL を読みとることにより確認される。
接続しているユーザーにファイルを編集するパーミッションがない場合、ファイルには読み取り専用属性が付加されているものとみなされる。
No
- 読み取り専用 DOS 属性は、パーミッションに対応付けられず、
store dos attributes パラメーターによってのみ付与される。
これは、マウント中の CD を共有する場合にも便利かも知れない。
store dos attributesパラメーターが設定されていた場合、 読み取り専用のDOS属性は、UNIX拡張属性中に格納されるため、 無視されることに注意。
Samba 4.9.0 で既定値は no に変更となり、既定の状態でインストールする場合、
Windows ファイルサーバとの互換が向上する。さらに、Samba 4.9.0 以降では
store dos attributes の既定値が Yes
となっている。
既定値: map readonly
= no
このパラメーターは、DOS のシステムファイル属性を UNIX のグループ実行権ビットに割り当てるかどうかを決定する。
store dos attributesが設定されている場合、 DOS のシステムファイル属性は、UNIX 拡張属性中に格納されるため、 このパラメーターは無視されることに注意。
このパラメーターを利用する場合は、 グループ実行権ビットがマスクされないように(010というアクセス権を含むように)、 create mask パラメーターを設定することが必要となることに注意。 詳細は、create mask パラメーターを参照のこと。
既定値: map system
= no
このパラメーターの値には、 smbd(8) が 何らかの方法で有効な UNIX ユーザーとして認証されなかったユーザーの ログイン要求をどのように扱うかを指定するための 4 つの値のいずれかを設定することが可能である。
4 つの値を以下に示す:
Never
-
不正なパスワードによるユーザーのログイン要求を拒否する。
これがデフォルトである。
Bad User
-
存在するユーザーに対する不正なパスワードによるログイン要求は拒否する。
指定されたユーザーが存在しなかった場合はゲストログインとして扱い、
guest account
で指定されたアカウントにマッピングする。
Bad Password
-
不正なパスワードによるユーザーのログイン要求は、ゲストログインとして扱い、
guest account
で指定されたアカウントにマッピングする。
この場合、パスワードをタイプミスすると、
なにも言われずに"guest"としてログインしてしまう。
パスワードをタイプミスしたというメッセージがないため、
アクセス可能である筈のファイルにできないが理由がわからないという問題が発生する。
map to guest
パラメーターをこの設定にすると、
ヘルプディスクサービスからは 憎まれる ことになるだろう:-)。
Bad Uid
-
これは、Samba がドメインモードのセキュリティ (security = {domain|ads}) で
構成されている環境でのみ意味を持つ。
この環境において、認証が成功したにも関わらず UNIX 側のユーザーアカウントが
存在しない ( smbd が作成することもできない) 場合に、定義された
ゲストアカウントへのマッピングを行う。これは Samba 2.2 系列における
デフォルトの挙動である。
メンバーサーバーで winbindd が実行されている場合、nss_winbind ライブラリが Windows ドメインのユーザーやグループを NSS インタフェース経由で Samba を実行する OS に対して提供するため、このパラメーターが必要となる事態は発生し得ない。
このパラメーターは"ゲスト"共有とサーバーを設定する場合には 必須であることに注意。 これは、サーバーがクライアントの認証に成功しない限り、 要求されるリソースの名前がサーバーに送られることは決してなく、 サーバーが"ゲスト"共有に対する認証の成否を、 適切な時点(共有への接続時)に行なうことができないためである。
既定値: map to guest
= Never
例: map to guest
= Bad User
このオプションにより、サービスへの同時コネクション数が制限される。
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
このパラメーターにより、ある smbd(8) プロセスが1つのクライアントに対して同時に 開くことのできるファイル数の上限値が設定される。 Samba は、オープンされていない ファイルごとにわずか 1 ビットしか消費しないので、この値はとても大きな値 (16384) に設定することができる。16384より小さな値に設定すると、Samba はその旨を 警告し、Windows 7が、有効である、オープンしているファイルハンドルの数に依存 するので、最低値の16384に戻す。
オープンするファイルの数の制限は、通常このパラメーターではなく UNIX における プロセス毎のファイルディスクリプタの上限値によって制限される。そのため、 この値を変更する必要はないであろう。
既定値: max open files
= 16384
このパラメーターにより、 ある時点で Samba の印刷キューに蓄積可能なジョブの最大数が設定される。 設定数を超過すると、 smbd(8) は、 クライアントに「空き領域がない」というエラーを返却する。
既定値: max print jobs
= 1000
例: max print jobs
= 5000
このパラメーターにより、ある時点で Samba の印刷キューのポートモニターが表示する印刷ジョブの最大数が設定される。 この数値を超過した場合、超過したジョブは表示されない。 0 が設定された場合は、表示される印刷ジョブの制限はなくなる。
既定値: max reported print jobs
= 0
例: max reported print jobs
= 1000
このパラメーターは、システムで同時に実行可能な smbd(8) プロセス数の最大値を設定することで、コネクションを扱うリソースが不足して、クライアントに対するサービスが低下することを抑止する。通常の環境では、各ユーザー毎に smbd(8) が割り当てられ、そのホストからの共有に対するコネクションのすべてを扱うことに注意。
Samba ADDC で、標準プロセスモデルを動かす場合、このオプションは、 リクエストを処理するためにフォークされるプロセス数の制限を行う。 現時点で、新しいプロセスは ldap と netlogon プロセス要求の場合にのみフォークされる。
既定値: max smbd processes
= 0
例: max smbd processes
= 1000
このパラメーターにより、大文字小文字を区別しない名前の対応づけの高速化に用いられる
stat cache
に用いられるメモリの上限値が指定される。
このパラメーターには、使用する stat cache のサイズをキロバイト (1024) 単位で指定する。
値 0 は無制限を意味する。このパラメーターを変更する必要はないであろう。
既定値: max stat cache size
= 512
例: max stat cache size
= 100
このオプションは、 nmbd(8) がブロードキャストを利用したりWINSサーバーを利用したりして NetBIOS 名を要求する際の NetBIOS 名のデフォルトの TTL(time to live)を(秒単位で)設定する。 このパラメーターを変更する必要はないであろう。 デフォルトは3日である。
既定値: max ttl
= 259200
このオプションはsmbd(8) が WINS サーバとして動作するとき
(wins support = yes)
nmbd
が許可する NetBIOS 名の
'time to live' の最大値を秒数で指定する。この値を変更する必要はない。
既定値は 6 日 (518400 秒) である。
既定値: max wins ttl
= 518400
このオプションにより、Samba の smbd(8)が SMB1 プロトコルをネゴシエーション時に用いるパケットサイズの最大値が設定される。 デフォルトは 16644 であり、これは Windows 2000 の挙動に合わせた値である。 2048 以下ではおそらく問題が出るだろう。 このパラメーターの値をデフォルトから変更する必要はないだろう。
既定値: max xmit
= 16644
例: max xmit
= 8192
このパラメータは、マルチキャスト DNS サポートが 広告するホスト名を制御する。
既定値は、通常、すべて大文字のホスト名である NETBIOS 名である。
mdns の設定は、使用する MDNS ライブラリに、ホスト名の設定を 引き渡す。
既定値: mdns name
= netbios
このパラメーターは、サーバーが 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
既定値: message command
=
例: message command
= csh -c 'xedit %s; rm %s' &
この整数パラメータは、ローカルアカウントをドメインアカウントにマッピングする 時に許可される最小の uid 値を指定する。
このオプションは、設定されたidmap rangesと共に使われることに注意!
既定値: min domain uid
= 1000
ユーザーの印刷ジョブをスプールする際に利用可能でなければならない空きディスクスペースの最小容量を設定する。この値はキロバイト単位で指定する。デフォルトは 0 で、この場合、ユーザーは常に印刷ジョブをスプールできる。
既定値: min print space
= 0
例: min print space
= 2000
このオプションは、smbd(8) が、SMBwriteX要求を処理するときの 振る舞いを変更する。 署名無しの SMB/CIFS 接続において、この設定値より大きなサイズのあらゆる SMBwriteX の要求は、通常の方法では処理されず、より下層のカーネルの recvfile や splice システムコールに処理をまかせる。 (Samba がそのような呼び出しをユーザースペースでエミュレートしていなければ) もし可能であれば、これによってネットワークのソケットバッファーから ファイルシステムのバッファーキャッシュへ直接ゼロコピーによる書き出しを 行うことを可能にする。 これによってパフォーマンスの向上があるかもしれないが、ユーザーはテストを 行うことが推奨される。 もし 0 を設定すると、Sambaは、SMBwriteX 要求を通常の方法で処理する。 (SMB/CIFS では16MBまで書き込むので) POSIX の large write support を可能に するためには、このオプションは 0 以外でなければならない。 最大値は 128kである。128kより大きな値は、警告無しで128kに設定される。
このオプションは署名付き SMB 接続では効果が無いことに注意すること
デフォルトは 0 に設定され、このオプションは無効となっている
既定値: min receivefile size
= 0
このオプションは nmbd(8) が WINS サーバとして動作するとき
(wins support = yes)、
nmbd
が許可する NetBIOS名の 'time to live'
の最小値を指定する。この値を変更する必要はない。既定値は、
6 時間 (21600 秒) である。
既定値: min wins ttl
= 21600
このオプションは MIT kdc バイナリへのパスを指定する。
KDC がデフォルトのディレクトリにインストールされていない場合で あって、ビルド時に適切にインストールディレクトリが認識できていない場合 には、この変数を用いて、バイナリの正しい場所を指定する必要がある。
既定値: mit kdc command
= ${prefix}/sbin/krb5kdc
例: mit kdc command
= /opt/mit/sbin/krb5kdc
このパラメーターは、この共有がパラメーターで指定された別の CIFS 共有を プロキシする共有であることを指定する。この共有に接続したクライアントは、 SMB の DFS プロトコルにより、1つまたはカンマで分離された複数の、別の共有に転送される。
DFS ルートのみがプロキシする共有として機能できる。 DFS ルートの共有を設定する方法については、 msdfs root および host msdfs オプションを参照のこと。
既定値なし
例: msdfs proxy
= \otherserver\someshare,\otherserver2\someshare
yes
に設定された場合、 Samba はその共有を DFS ルートとして扱うため、クライアントは、その共有ディレクトリをルートとする DFS (分散ファイルシステム)ツリーを参照することが可能になる。
DFS リンクの作成は、共有ディレクトリ内で
msdfs:serverA\\shareA,serverB\\shareB
のような形式でシンボリックリンクを作成することにより行なわれる。
DFS ツリーを Samba で構成する際の詳細情報については、
Samba3-HOWTO の MSDFS の章を参照のこと。
既定値: msdfs root
= no
yes
に設定すると、Samba が複数動いている場合には、
指定された DFS リンクの referral をシャッフルする。これにより、クライアント
間の負荷分散が出来るようになる。Samba 上で
DFS ツリーを設定するための詳細情報は、Samba3-HOWTO の MSDFS 章
を参照のこと。
既定値: msdfs shuffle referrals
= no
Samba をマルチキャスト DNS サポート付きでコンパイルしている場合、 Samba は自身をマルチキャスト DNS サービス (たとえば Avahi デーモンなど) に通知する。 If compiled with proper support for it, Samba will announce itself with multicast DNS services like for example provided by the Avahi daemon.
このパラメーターで通知を無効化することができる。.
既定値: multicast dns register
= yes
Samba のホスト名キャッシュ内のエントリがタイムアウトするまで時間を秒単位で指定する。タイムアウトが 0 に設定された場合、キャッシュは無効になる。
既定値: name cache timeout
= 660
例: name cache timeout
= 0
このオプションは、どの名前サービスを用いて、またどのような順番で、 ホスト名から IP アドレスを解決するかを決定するため、 Samba の各プログラムで利用される。 このオプションの主な目的は、NetBIOS 名前解決をどのように行なうかを指定することである。 オプションは、名前解決オプションをスペースで区切った文字列で指定する。
オプションは、"lmhosts"、"host"、"wins"、"bcast" である。 これらは以下に示すように名前解決を実行する。
lmhosts
:
Samba の lmhosts ファイルから IP アドレスを検索する。
NetBIOS 名サフィックスの指定されていない行が lmhosts ファイル中にあった場合、
(詳細は、lmhosts ファイルのマニュアルページを参照のこと)、
その行はすべてのサフィックスの検索にマッチする。
host
:
システム標準の方法で、/etc/hosts
、 DNS への問い合わせを行ない、ホスト名から IP アドレスへの名前解決を行なう。
名前解決の方法は、OS に依存する。 IRIX や Solaris の場合、
/etc/nsswitch.conf
ファイルにより制御される。この方法は、問い合わせされた NetBIOS
のサフィックスが 0x20(サーバー) か 0x1c(ドメインコントローラー)
の時のみ利用され、それ以外は無効であることに注意。
後者は、アクティブディレクトリドメインでのみ有効である。
この場合、_ldap._tcp.domain に対応する SRV RR エントリを検索するための DNS クエリが行われる。
wins
:
WINSSERVER パラメーターで指定された IP
アドレスに対して名前の問い合わせが行なわれる。
WINS サーバーが指定されていない場合、この方法は無視される。
bcast
:
interfaces
パラメーターで設定された各インタフェースに対してブロードキャストが実行される。
これは解決したいホストがローカルサブネットに接続されていることを前提とするため、
もっとも信頼性の低い名前解決の方法である。
以下の例では、最初にローカルの lmhosts ファイルを調査し、 次にブロードキャストを行ない、 最後にシステム標準のホスト名検索を試行する。
Samba が ADS セキュリティモード(security = ads
)で動作する場合、
name resolve order
の設定は次のようにすべきである。
name resolve order = wins bcast
この 場合でも、DC は DNS への問い合わせを行なう。 失敗した場合に NetBIOS 名の問い合わせを行なうが、その際無意味な DNS への DOMAIN<0x1c> の問い合わせが抑止される。
既定値: name resolve order
= lmhosts wins host bcast
例: name resolve order
= lmhosts bcast host
このオプションは、Samba の nmbd が NBT パケットの送受信に 使用するアドレスを制御する。
このオプションの設定は、nmbd が多重実行されていない、一般的な Samba サーバーでは不要である。
既定では、Samba は OS のデフォルトのアドレスから UDP パケットを 送信し、0.0.0.0 で受信する。
このパラメーターは廃止予定である。通常の待ち受けアドレスを制御する 方法については、bind interfaces only = Yesとinterfaces を参照のこと。
既定値: nbt client socket address
= 0.0.0.0
例: nbt client socket address
= 192.168.2.20
通常、0x1C 名の問い合わせ (ドメイン中のすべてのログオンサーバ) は、結果のリスト中の最初のアドレスとして、0x1B 名(ドメインマスタブラウ ザと PDC)の最初のアドレスを返す。既定値では、多くのクライアントは、 リスト中の最初のアドレスのみ使うので、すべてのクライアントは同じサーバ (PDC) を使うことになる。Windows サーバには、この動作を無効にするオプション がある (since Windows 2000 Service Pack 2 以降)。
既定値: nbtd:wins_prepend1Bto1Cqueries
= yes
通常、0x1C 名の問合せは、データベース中に格納されたものと 同じ順で返す。すなわち、ローカル wins サーバに直接登録された最初のアドレス と、次に、他のサーバに登録されたすべてのアドレスを意味する。 Windows は、この動作を変更し、結果のアドレスをランダム化するオプションがある。 このパラメータを "yes" に設定すると、Samba はアドレスリストを クライアントアドレスと、アドレスの一致ビットを使って整列するので、 最初のアドレスは、"nbtd:wins_randomize1Clist_mask" パラメータに依存して ランダム化される。
既定値: nbtd:wins_wins_randomize1Clist
= no
"nbtd:wins_randomize1Clist" パラメータを "yes" した場合、 最初に返されるアドレスのランダム化は、指定されたネットマスクを ベースとする。クライアントアドレスと同じサブネット中にあるアドレスは、 最初に返されるアドレスはその中からランダムに選ばれる。それ以外は、 最初に返されるアドレスは、すべてのアドレスからランダムに選ばれる。
既定値: nbtd:wins_randomize1Clist_mask
= 255.255.255.0
このディレクトリは、プロセス間通信で RPC を許可するために 一連の名前付きパイプを保持するディレクトリである。
これは、Samba と他の unix プロセスに、 TCP/IP を使わないで DCE/RPC 超えで通信を行わせることを許可する。さらに追加で、サブディレクトリ 'np' は、アクセス許可が制限され、Samba プロセス間での信頼された通信 チャネルを許可する。
既定値: ncalrpc dir
= ${prefix}/var/run/ncalrpc
例: ncalrpc dir
= /var/run/samba/ncalrpc
これは、nmbd が Samba サーバーの別名としてアナウンスする NetBIOS 名の リストである。これにより、ブラウズリスト中で単一のマシンを複数の名前で表示 させることが可能になる。 マシンがブラウズサーバーやログオンサーバーとして動作している場合、別名は ブラウズサーバーやログオンサーバーとしてはアナウンスされない。マシン本来の 名前だけがそれらの機能をもつ名前としてアナウンスされる。
既定値: netbios aliases
=
# 空文字列 (別名なし)
例: netbios aliases
= TEST TEST1 TEST2
このパラメーターにより、 Samba サーバーの NetBIOS 名が設定される。 デフォルトでは、ホストの DNS 名の最初の部分と同一である。マシンがブラウズ サーバーや、ログオンサーバーの場合、ここで設定された名前 (またはホストの DNS 名の 最初の部分)がサービスをアナウンスする際に用いられる。
NetBIOS 名の最大長は15文字までであることに注意。
Samba には、NetBIOS が PIPE
に設定されるとブラウジングや
共有へのアクセスに問題が発生するというバグがある。
この問題を避けるためには、Samba マシンの名前を PIPE
にしないこと。
既定値: netbios name
=
# マシンの DNS 名
例: netbios name
= MYNAME
このパラメーターにより、 Samba が使用する NetBIOS スコープを設定される。LAN上のすべてのマシンに同じ値を設定しない限り、このパラメーターを設定すべきではない。
既定値: netbios scope
=
このオプションは、winbind が NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION フラグを、ドメインコントローラの NT4 エミュレーションをバイパスする かどうかを制御する。
通常、これを設定する必要は無い。これは、NT4 から AD ドメインに アップグレードするときに便利である。
動作は、'neutralize nt4 emulation:NETBIOSDOMAIN = yes' をオプションとして使う事で、netbios ドメインごとに制御できる。
既定値: neutralize nt4 emulation
= no
このオプションはnmbd(8)に、ローカルサブネットの ブロードキャストアドレスに、明示的にバインドすることを行わせる。これは、 socket addressオプションと組み合わせた場合に、 nmbd が正しく動くようにするのに必要である。このオプションを no にする 必要はない。
既定値: nmbd bind explicit broadcast
= yes
このオプションは、GSS-TSIG 動的 DNS アップデートのために使われる
nsupdate
コマンドのパスを設定する。
既定値: nsupdate command
= /usr/bin/nsupdate -g
このパラメータは、samba(8) が、このドメイン中の、ユーザの NTLM と NTLMv2 認証で使われる NT パスワードハッシュを AD DCとして 格納するかどうかを決める。
そのように設定されている場合、Samba Active Directory ドメイン コントローラは、信頼するアカウント (コンピュータ、ドメインコントローラと ドメイン間の信頼)を除き、新しい、または変更されたアカウントの NT ハッシュを sam.ldb データベースに格納しない 。
これにより、これらのユーザ作成パスワード用の、salt がない
ハッシュの保存を回避する。その結果、arcfour-hmac-md5
Kerberos キータイプもこれらのユーザに対して KDC は無効となる。
ありがたいことに、最近のクライアントは代替として、AES ベースの
キーを使用する。
注意: Active Directory 中のパスワード履歴は、NT ハッシュ (なので利用不可)として保存されるため、代替として、Kerberos ハッシュ値に 依存する回避策が使用される。これは現在、過去、その前という3つのパスワードが 保存される。これにより、再利用をチェックできる。
しかしながら、これらの値は salt が付いているため、アカウントの sAMAccountName、 userAccountControl または userPrincipalName を 変更すると、salt も変更される。改名とパスワード変更の希な組み合わせの後、 現在のパスワードだけが、パスワード履歴の目的で認識される。
有効な値は以下の通り:
always
- 常時 NT ハッシュを保存する
(マシンアカウントも常時 NTハッシュを保存する)。
これは、ntlm auth
が
試用期間で 無効
にされている場合に便利である。
never
- ユーザアカウントの NT ハッシュを
格納しない。マシンアカウントのみ格納する。
auto
- ntlm auth
が 無効
になっていない場合に、NT ハッシュを格納する。
既定値: nt hash store
= always
この真偽値パラメーターにより、 smbd(8) が UNIX のパーミッションを Windows NT のアクセスコントロールリストにマップするかどうかが決定される。 対象となる UNIX のパーミッションは、 ファイルやディレクトリに設定された伝統的な UNIX の所有者とグループのパーミッションと ファイルシステム ACL である。 このパラメーターは、Samba 2.2.2 より前のリリースでは、グローバルパラメーターであった。
既定値: nt acl support
= yes
smbd(8) がローカル passdb(SAM すなわち アカウントデータベース)に対して、NTLM レスポンスを用いたユーザー認証を 行なうかどうかを設定する。
このパラメーターを無効にした場合は、ローカル passdb に対しての NTLM 認証と LanMan 認証の両方が無効になる。
この設定はあくまでローカルユーザーに対して適用されるものであって、 参加しているドメインにおける認証は、どのようなドメインであってもフォワード され NTLM 認証が行われる。信頼されるドメインであれば、このパラメーター設定 が無効であったり、NTLMv2 認証のみに設定されていても構わない。 ドメインユーザーに対する NTLM 認証を制御するには、このパラメーターを各 DC において設定する必要がある。
lanman auth
を
no
と設定し、
ntlm auth
を ntlmv2-only
と設定する
のが既定値であり、この場合 NTLMv2 によるログインのみが許可される。
たいていのクライアントは NTLMv2 を既定としてサポートしているが、
古いクライアントの中には特別な設定を必要とするものもある。
NTLMv1 は、VPN や 802.1X で用いられる MS-CHAPv2 で主に利用されている。
利用可能な設定は以下のとおり。
警告: Microsoft Windows と
Samba の リードオンリドメインコントローラ
(RODC) の両方とも、平文による LDAP の単純なバインド をNTLMv2 認証に
変換して、完全な DC に転送する。このオプションを
無効
にすると、それらの認証情報の転送は失敗
する。
さらに、Samba が Active Directory ドメインコントローラとして
動作している場合、ユーザアカウントに対して、
nt hash store
が既定の設定
auto
だった場合、新規ユーザ用またはパスワード
変更後に、NT ハッシュは、 sam.ldb データベースに
格納されない。
ntlmv1-permitted
(yes
の別名)- 全クライアントに対し、NTLMv1 以上の認証を許可する。
ntlmv2-only
(no
の別名)- NTLMv1 の利用を許可せず NTLMv2 の利用を許可する。
mschapv2-and-ntlmv2-only
-
クライアントが(ntlm_auth
ツール
のような)MSCHAPv2 認証を提供することが確実である場合に限って
NTLMv1 認証を行う。
disabled
- NTLM(または LanMan)の
どのようなレベルであっても認証を受けつけない。また NTLM パスワード
の変更も受けつけない。
Samba 4.5 において、既定値が yes
から
no
に変更された。Samba 4.7 からはさらに
ntlmv2-only
に変更されたが、その動作は変わって
いない。
既定値: ntlm auth
= ntlmv2-only
この真偽値パラメーターにより、
smbd(8) が
Windows NT のクライアントに対して、 Windows NT の SMB 固有の
IPC$
パイプへの接続を許可するかどうかが制御される。
これは開発者のデバッグオプションであり、意識する必要はない。
既定値: nt pipe support
= yes
この設定は、NTP デーモンが、Samba との通信に使う 署名パケット用ソケットのパスを制御する。
デフォルト以外のパスを指定した場合、ntp.conf
の、ntpsigndsocket
ディレクティブを使って、
NTP デーモンに対してパスを通知する必要がある。
既定値: ntp signd socket directory
= ${prefix}/var/lib/ntp_signd
この真偽値パラメーターは、 smbd(8) が、 Windows NT/2000/XP
クライアントに対して、 NT 固有のステータスのサポートのネゴシエーションを行なうかどうかを制御する。
これは、開発者のデバッグ用オプションであり、設定を変更すべきではない。
このオプションが no
の場合、 Samba は
Samba 2.2.3 以前と全く同様に、DOS エラーコードを返却する。
このオプションを無効にしてはならない。
既定値: nt status support
= yes
共有に対する NTVFS ハンドラーを指定する。
unixuid: POSIX の gid/uid ベースの認証情報を 設定する。
cifs: リモートの CIFS ファイルシステムをプロキシ する。主としてテストに有用である。
nbench: nbench ベンチマークシステムに有用なデータを 維持するフィルターのモジュール。
ipc: プロセス間通信として SMB の使用を可能とする。 IPC$ 共有のみで使用される。
posix: POSIX ファイルシステムの仕様を NTFS の仕様に対応付ける
print: SMB を用いた印刷を可能とする。これは、 LANMAN プロトコルによる印刷であり、最新の Windows で使われている spoolss DCE/RPC インタフェースによる印刷と混同しないこと。
このオプションは、NTVFS によるファイルサーバーが動作している時 のみ有効であることに注意。(デフォルトの)s3fs ファイルサーバーでは 無効である。
既定値: ntvfs handler
= unixuid, default
PAMサポートを有効にして(--with-pam) configure された Samba 3.0 系列において、このパラメーターは、Samba が PAM のアカウントとセッション管理機構を利用するかどうかを制御する。 デフォルトの場合、 PAM は平文テキスト認証にのみ利用され、 アカウントとセッション管理は利用されない。 encrypt passwords = yes の場合、Samba は常に PAM による認証を無視することに気を付けること。 これは、PAM モジュールが、 SMB のパスワード暗号化に必要なチャレンジアンドレスポンス認証機構をサポートしていないためである。
既定値: obey pam restrictions
= no
パスワード変更または古いパスワードを使ったパスワードリセット後に、 NTLM ログインを許可する時間(分)。これを使うと、ネットワーク再接続を 中断することなく、複数のクライアント上で新しいパスワードを再キャッシュ することが出来るようになる。
このパラメータはserver roleが Active Directory ドメインコントローラの時にのみ有効である。
既定値: old password allowed period
= 60
これは Windows 9x と Windows NT 双方のバグに対応するために追加されたチューニングオプションである。 クライアントが oplock を解除させるような SMB を発行した時に、 Samba のクライアントに対する応答が早過ぎると、 クライアントは誤動作してしまい、解除要求に応答しない。 このチューニングパラメーター(ミリ秒単位で指定する)は、 こうした(異常動作を行なう)クライアントに対して oplock 解除要求を送付する前に、Samba がとる待ち時間になる。
Samba の oplock コードを読んで理解していない限り、このパラメーターを変更してはいけない。
既定値: oplock break wait time
= 0
この真偽値オプションは、
共有内のファイルオープンが要求された際に oplock (opportunistic lock = 便宜的ロック) を行なうかどうかを
smbd
に指示する。
oplock により、Samba サーバー上のファイルアクセス速度を劇的に改善(およそ 30% 以上)することができる。
oplock により、クライアントは、積極的にファイルをローカルにキャッシュするようになるが、
信頼性の低いネットワーク環境の場合などに、これを無効にしたいと考えることもあるだろう
(Windows NT サーバーにおける既定値は有効である)。
oplock は共有内のファイル単位で無効にすることも可能である。 veto oplock files パラメーターを参照のこと。 システムによっては、oplock が OS 自身によって認識される。 この場合、Samba、NFS、ローカルなUNIXのいずれを経由してアクセスが行なわれた場合でも、 oplock が行なわれたファイルとのデータの同期が実現する。 詳細は、kernel oplocks パラメーターを参照のこと。
既定値: oplocks
= yes
このパラメーターでは、 OS/2 のプリンタードライバー名と Windows NT のプリンタードライバー名とのマッピングが記述されたファイルへの絶対パスを指定する。 ファイル形式は以下のようになっている:
<nt driver name> = <os2 driver name>.<device name>
HP LaserJet 5 のプリンタードライバーを例にとった場合、
正しいエントリはHP LaserJet 5L = LASERJET.HP
LaserJet 5L
のようになる。
このファイルは、 Samba3-HOWTO 本の Classical Printing 章で記述されているプリンタードライバーの名前空間の問題に対応するために用いられる。 OS/2 クライアントに関する詳細については、Samba3-HOWTO 本の other clients 章を参照のこと。
既定値: os2 driver map
=
この数値は、 Samba がブラウザー選定時に宣言する優先度を設定する。 このパラメーターの値は、 nmbd(8) が、ブロードキャスト範囲内における workgroup のローカルマスターブラウザーになるかどうかに影響する。
注意 : ローカルマスターブラウザーの選定に際して、既定値では、 Samba が Windows NT 4.0/2000 のドメインコントローラー以外のすべての Microsoft 社のOSに優先する。 このため、Samba ホストの設定が不正の場合、 ブラウジング的にそのサブネットが孤立してしまう可能性がある。 Samba 3.0 系列では、このパラメーターは通常自動設定されるため、既定値を手動で設定する必要は通常発生しない。(訳注: 実際には自動設定は行なわれない。この説明は誤りだと思われる) このパラメーターに関する詳細は、Samba-3 HOWTO ドキュメントの「Network Browsing」を参照のこと。 注意:このパラメーターの最大値は255である。 それより大きな値を使った場合、もしも、カウントは0から始まる!
既定値: os level
= 20
例: os level
= 65
Samba 2.2 における PAM サポート機能の追加にともない、 このパラメーターを用いることで、 Samba で PAM を使ったパスワード変更が可能となった。 このパラメーターが有効な場合、SMB クライアントからの要求があれば、 passwd program. に設定されたプログラムに代わって、PAM を使ってパスワードの変更が行なわれる。 ほとんどの場合、 passwd chat パラメーターの変更なしにこのパラメーターを有効にすることが可能である。
既定値: pam password change
= no
このオプションにより、管理者はユーザーとグループ情報の格納に、どのような 機構(backend)を使用するかについて指定できる。これにより、再コンパイルなしで 機構を取り換えることが可能となる。
このパラメーターは、機構の名称と、特定の機構に依存した「位置」を示す文字列 との 2 つの要素から構成されている。 この要素は「:」文字で区切られる。
指定可能な機構は以下のとおりである:
smbpasswd
- 古い平文のパスワード格納
機構である。これを使うと Samba のいくつかの機能が動かない。
オプションの引数として smbpasswd ファイルの位置を指定する。
tdbsam
- TDB ベースのパスワード格納機構である。
オプションの引数として、 TDB ファイルへのパス (デフォルトは
private dir ディレクトリ内の passdb.tdb) を指定する。
ldapsam
- LDAP ベースのパスワード機構である。
オプションの引数として、 LDAP の URL (デフォルトは
ldap://localhost
) を指定する。
LDAP の接続は、可能な場合は暗号化される。
これは Start-TLS (ldap ssl を参照のこと) か
ldaps://
を URL 引数中で指定することにより行なわれる。
ダブルクォーテーションを使って複数のサーバーを指定できる。 複数のサーバーが使用できるか否かは、使用する LDAP ライブラリ上の文法に 依存する。
以下に設定例を示す。
passdb backend = tdbsam:/etc/samba/private/passdb.tdb または OpenLDAP の複数サーバー LDAP URL の場合は、 passdb backend = ldapsam:"ldap://ldap-1.example.com ldap://ldap-2.example.com" あるいは、Netscape ベースの LDAP ライブラリでの複数サーバー LDAP URL の場合は、 passdb backend = ldapsam:"ldap://ldap-1.example.com ldap-2.example.com"
既定値: passdb backend
= tdbsam
このパラメーターは、passdb の指定に % マクロが明示的に指定された際に、 それを展開するかどうかを制御する。 ここではマクロを用いることが可能となっているが、 Windows クライアントがユーザーのプライマリグループに置換されるべき %G が含まれている %G_osver% といった変数を展開してしまうというバグを引き起こしてしまうことがある。
既定値: passdb expand explicit
= no
このパラメーターで指定される文字列は、 smbd(8) とローカルなパスワード変更プログラムとの間でパスワード変更時に発生する 「やりとり(chat)」 を制御する。 文字列には、 smbd(8) が passwd program で指定したプログラムに行なう送信内容と、それに対して期待される応答内容とを定義したやりとりの手順を記述する。 期待される応答がない場合、パスワードは変更されない。
このやりとりの手順は、 パスワード制御のためにどのような方法を使うかに依存するため、 通常サイト依存のものとなる。
このパラメーターは、
unix password sync
パラメーターが yes
の時のみ利用される。
このやりとりは、smbpasswd ファイル中の SMB パスワードが変更される際に、
古いパスワードの平文へアクセスすることなしに、
ROOT権限で 呼び出される。
これは、root であれば以前のパスワードを知らなくても、ユーザーのパスワードの再設定を
行なうことができるからである。
文字列には、新パスワードに置換される、 %n
マクロや、
各々改行、復帰、タブ、空白を意味する標準的なマクロである、\n, \r,
\t, \s も記述できる。
さらに、この文字列には、任意の文字列に一致する '*' を記述してもよい。
ダブルクオーテーションは、空白を含む複数の文字列を 1 つの文字列と見なすのに使うことができる。
やりとりの手順中で、送信文字列としてピリオド「.」が指定されていた場合、実際にはなんの文字列も送られない。 同様に、受信文字列としてピリオドが指定されていた場合、 実際には何も受信しないことが期待されている。
pam
password change
パラメーターが yes
の場合、やりとりの手順は、任意の順番でマッチし、
成功したか否かは出力結果ではなく PAM の戻り値で判断される。
PAM の場合、\n マクロは無視される。
既定値: 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 debug
= no
この整数値により、smbd が passwd chat script の実行を待機する時間を秒単位で指定する。 最初の応答が受信されて以降のやりとりは、 この値の 1/10 の時間で応答される必要がある。 デフォルトは 2 秒である。
既定値: passwd chat timeout
= 2
ユーザーの UNIX 上のパスワードを設定するために使用するプログラムの名前を指定する。
%u
はユーザー名に置換される。
パスワード変更プログラムを呼び出す前に、
指定されたユーザー名が存在するかのチェックが行なわれる。
多くのパスワード変更プログラムは、 パスワードの最小字数や大文字と小文字併用や、数字の混在などの 適切なパスワードを要求することに注意して欲しい。 一部のクライアント(Windows for Workgroups など)は、 パスワードを送信する前に大文字化してしまうため、問題が発生する。
注意:unix
password sync
パラメーターを yes
に設定すると、 smbpasswd
ファイル中の SMB パスワードが変更される前に、
このプログラムが ROOT権限で 呼び出される。
UNIX 側のパスワード変更が失敗すると、
smbd
は SMB パスワードの変更も失敗させる(これは仕様である)。
unix password sync
パラメーターが yes
に設定されている場合は、
このパラメーターで指定する すべての プログラムを 必ず絶対パスで設定し、
セキュリティ上の問題が発生しないようにしておくこと。
デフォルトでは unix password sync
は no
になっているので注意。
既定値: passwd program
=
例: passwd program
= /bin/passwd %u
samba
が
Active Directory ドメインコントローラとして動作している場合、
PGP/OpenGPG暗号化形式で、アカウントの平文パスワードを格納
できる。
キーIDまたはユーザIDで1つ以上の recipients を指定出来る。 32ビットキーIDは使えず、少なくとも64ビットを指定する事に注意。
値は、
supplementalCredentials
属性に
'Primary:SambaGPG' として格納される。
パスワードの変更は任意のドメインコントローラで発生する事が あるので、この設定をそれらすべてで行う必要がある。この機能は 現在 Samba ドメインコントローラのみで有効であることに注意。
このオプションは、samba
が、コンパイル時に、gpgme
サポートを
指定した場合にのみ有効である。
samba
を起動する前に、
GNUPGHOME
環境変数をエクスポート
する必要がある。この位置に公開鍵のみを格納することを
強く推奨する。秘密鍵は暗号化には使われず、復号化が要求されるとき
のみに格納すべきである。
平文パスワードを復元するためには、後述する他の認証システム
にインポートする必要があるか(samba-tool user getpassword
を参照)、パスワードを他のシステム、たとえば OpenLDAP サーバ
(samba-tool user syncpasswords
を参照)で
同期させる必要がある。
すべてのドメインコントローラで、このオプションを設定しなければならないので、
samba-tool user syncpasswords
コマンドは
単一ドメインコントローラのみで動かす必要がある(通常は PDCエミュレータ)。
既定値: password hash gpg key ids
=
例: password hash gpg key ids
= 4952E40301FAB41A
例: password hash gpg key ids
= selftest@samba.example.com
例: password hash gpg key ids
= selftest@samba.example.com, 4952E40301FAB41A
このパラメーターは、Active Directory ドメインコントローラーとして 動作している samba(8) に対して、ユーザーパスワードの ハッシュタイプを追加で保存するかどうかを設定する。
そのデータは、属性
supplementalCredentials
内の 'Primary:userPassword' に保存される。
このオプション値はハッシュタイプである。
現時点にてサポートされるハッシュタイプは以下である。
CryptSHA256
CryptSHA512
ハッシュタイプは複数指定されても計算され保存される。 パスワードハッシュは crypt(3) の呼び出しを行って計算される。 ハッシュ計算の際のラウンド数は、ハッシュタイプに対して ':rounds=xxxx' を追加して指定することができる。例えば CryptSHA512:rounds=4500 とすると、 4500 ラウンドの SHA512 ハッシュ計算が行われる。 これを指定しなかった場合は、crypt(3) に対してオペレーティングシステムが 定めている既定値が利用される。
ドメインコントローラーに対して、パスワードの変更は常に発生する。 したがってドメインコントローラーごとに、このパラメーターを設定する必要が ある。現時点で、この機能は Samba ドメインコントローラー上においてのみ利用 可能であることに注意すること。
現時点にてパスワードの NT ハッシュは、これが計算され保存される際に
記録される。ハッシュを抽出するときに、NT ハッシュの現在値と保存されている
NT ハッシュがチェックされる。これによってパスワードハッシュを更新せずに
パスワード変更が行われているかどうかが検出される。その場合
samba-tool user
は保存されているハッシュ
値を無視する。
ハッシュパスワードが得られるのは有用なことである。
例えば、いずれ他の認証システムにパスワードを取り込む必要が出てくる場合
もあり(samba-tool usergetpassword
参照)、OpenLDAP サーバーなどの他システムとパスワードを同期しておく
必要が出てくることもあるためである(samba-tool
user syncpasswords
参照)。
関連コマンド: unix password sync
既定値: password hash userPassword schemes
=
例: password hash userPassword schemes
= CryptSHA256
例: password hash userPassword schemes
= CryptSHA256 CryptSHA512
例: password hash userPassword schemes
= CryptSHA256:rounds=5000 CryptSHA512:rounds=7000
このオプションで、ドメインコントローラーの
指定を行い、security = [ads|domain]
を
使うことで、Samba が行なうユーザー名、パスワードの認証のすべてを指定した別のサーバーに行なわせることが可能となる。
理想的にいえば、AD ドメイン中の他のすべてのホストが行うように、 既定値 '*'が、動的に接続する最適なDCを選ぶことを決めることを Samba に対して指定するので、このオプションは使うべきではない。 これは、smb.conf ファイルの変更なしに、ドメインをメンテナンス(ドメインコントローラーの 追加または削除)する事ができるようにする。パスワードを検証する為に使われる、 認証された RPC 呼び出し上の暗号化による保護は、この既定値が安全であることを 保障する。
既定値の '*' を使うことを強く推奨する。しかしながら、
使用している特定の環境において、特定の DC 一覧を指定しする理由がある場合、
このオプション中のマシンのリストは、ドメインに対するドメインコントローラーの
名前又は IP アドレスでなければならない。既定値の '*' か
password server
オプション中の、
いくつかのホストのリストを使う場合、
smbd
は、ある1つのものが反応するまで
順番に試行する。これは、使用しているプライマリサーバーが停止している時に
便利である。
password server
オプションに文字 「*」 を指定すると、Samba は WORKGROUP<1C>
への問い合わせを行い、名前解決機構から返却された IP アドレスリスト中の各サーバーにアクセスを行って認証を実施するため、プライマリあるいはバックアップドメインコントローラーの名前解決を自動的に実施する。
「*」文字とサーバーのリストの両方を指定した場合、 リストは問い合わせを行なうサーバーの優先順位として機能するが、 それ以外の DC もリストには追加される。 Samba は最も近い DC の位置を検出することによるリストの最適化は行なわない。
もしもパラメーターが名前だった場合、 name resolve order パラメーターを使って名前を検索し、 そのパラメーター中に記述された順番と手法で名前解決が行われる。
既定値: password server
= *
例: password server
= NT-PDC, NT-BDC1, NT-BDC2, *
例: password server
= windc.mydomain.com:389 192.168.1.101 *
このパラメーターは、サービスに接続したユーザーがアクセスするディレクトリを指定する。印刷サービスの場合、これは印刷データがホストの印刷機構に送られる前にスプールされる場所になる。
ゲストアクセスを許可している印刷サービスの場合、サービスは読みとりのみにした上で、パスは全ユーザー書き込み可能として sticky ビットをセットすべきである。これはもちろん必須ではないが、このようにしない限りは、おそらく意図した設定を行なうことができないだろう。
%u
は、クライアントが接続する際に使用した UNIX のユーザー名に置換される。%m
は、接続してきたマシンの NetBIOS 名に置換される。これらの置換機能は、ユーザーに仮想的なホームディレクトリを設定する際非常に有用である。
root dir が指定されていた場合、このパラメーターもその影響を受けることに注意。
既定値: path
=
例: path
= /home/fred
SMB の操作をモニターリングする際に使用する perfcount バックエンドを指定する。 perfcount モジュールはひとつだけ指定できる。そのモジュールは、smb.h で定義されている smb_perfcount_handler 構造体にある API をすべて 実装していなければならない。
既定値なし
smbd(8) デーモンでは、 SMB クライアントによって行なわれたファイルロックの情報を記録するデータベースを管理している。 既定値の動作は、この内部データベースを POSIX ロックにもマッピング(反映)する。 SMB 以外の方式(たとえば NFS やローカルなファイルアクセス) 経由で、ファイルにアクセスする POSIX 互換のアプリケーション によって認識されたものと、整合性が取れると言うことである。 良いアイデアではないが、最初の場所に NFS マウントで共有する事を除き、 このパラメーターを"no"に設定する必要はまずないであろう。
既定値: posix locking
= yes
このオプションは、 サービスから切断した際に常に起動されるコマンドを指定する。 このパラメーターでは通常の Samba の変数も利用できる。 システムによってはコマンドが root で実行される場合もあるかも知れない。
面白い例としては、サーバーのリソースを umount するような用途が考えられる:
postexec = /etc/umount /cdrom
既定値: postexec
=
例: postexec
= echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log
このオプションは、サービスへ接続した際に必ず実行されるコマンドを指定する。 このパラメーターでは通常の 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
=
例: preexec
= echo \"%u connected to %S from %m (%I)\" >> /tmp/log
この真偽値パラメーターは、 nmbd(8) が ワークグループのマスターブラウザーとして優先されるかどうかに影響する。
これが yes
に設定されていると、
nmbd
は起動時にブラウザーの選定を強要する。
また、選定時の優先度でも、わずかではあるが有利になる。
このパラメーターは、nmbd
がドメインマスターブラウザーになることを保証するために、
domain master = yes の設定と連携して使用することが推奨されている。
(訳注: Samba 3.0 系列では、domain logons = Yesの場合 preferred master パラメーターもデフォルトでは有効となる。domain logons
が有効でない場合(デフォルト)、domain master
もデフォルトでは有効にならない。
同じサブネット上に優先マスターブラウザーに指定されたホスト(Samba サーバー、Windows 95/NT のいずれの場合も)が複数台存在すると、 それらのホストは定期的にローカルマスターブラウザーになろうとする 試みを永続的に繰り返すことになる。 これは不要なブロードキャストトラフィックを発生させるだけでなく、 ブラウジング機能自体にも支障を発生させてしまうため、このオプションは注意して扱うこと。
既定値: preferred master
= auto
このオプションは、prefork master または ワーカプロセスが再起動する 前の遅延時間を秒単位で指定する。再起動時の遅延は初期値では 0 だが、 "prefork maximum backoff" で指定される最大値までの範囲で、 prefork backoff increment で指定した値だけ、再起動ごとに遅延を行なう。
さらに、"prefork backoff increment: service name" という形で 指定することで、特定のサービスだけ指定を行える。たとえば、 i.e. "prefork backoff increment:ldap = 2" は、 遅延の増分を 2にする。
backoff increment が2で、 maximum backoff が5の場合、 最初の再起動時における遅延は 0 秒であり、2回目の再起動時には2秒となり、 3回目以降の再起動時における遅延は4秒となる。
既定値: prefork backoff increment
= 10
このオプションは、prefork モデルが有効な場合に、各サービスごとに起動する worker プロセス数を制御する。 (samba(8) -M を参照)。 Prefork 子プロセスは、prefork をサポートする サービスのみで起動する(現時点では ldap 、kdc と netlogon)。 Prefork をサポートしないプロセスに対するすべての要求は、 そのサービス用の単一プロセスで処理される。
これは、そのサーバ上で有効なCPUの数の、小さい倍数にする必要がある。
加えて、prefork された子プロセスの数は、"prefork children: service name" の形式を使うことによって、個々のサービス毎に指定できる。すなわち、 "prefork children:ldap = 8" により、ldap 子プロセスの数が設定される。
既定値: prefork children
= 1
このパラメーターには、クライアントの接続前に smbd にロードされるモジュールのパスのリストを指定する。 これにより smbd が新しい接続を開始する際の時間が短縮される。
既定値: preload modules
=
例: preload modules
= /usr/lib/samba/passdb/mysql.so
クライアントから送信されてきた新しいファイル名中の大文字小文字をそのまま利用するか、 default case パラメーターの設定を強制するかどうかを設定する。
この設定に関する詳細については、 名前の短縮 セクションを参照のこと。
既定値: preserve case
= yes
このパラメーターが
yes
の場合に、
クライアントから指定されたディレクトリにスプールファイルを書き込むことが可能になる。
印刷可能(printable)なサービスでは、 (ユーザーが UNIX 上に権限をもっている限り)印刷データをスプールファイルに書き込むことが常に可能となることに注意。 read only パラメーターは、 リソースに対する印刷以外のアクセスにのみ影響する。
既定値: printable
= no
このオプションにより、印刷サブシステムがプリンターの一覧情報を再確認するまでの時間を秒単位で制御することが可能となる。
このパラメーターを 0 にすると、 起動後に新しいプリンターや削除されたプリンターを再確認する機能が無効化される。
既定値: printcap cache time
= 750
例: printcap cache time
= 600
このパラメーターは、
コンパイル時に設定されるデフォルトでサーバーが用いる printcap ファイル名
(通常 /etc/printcap
) を上書きにするために使われる。
このパラメーターを設定すべき状況については、前述した
[printers] セクションに関する説明を参照のこと。
CUPS 印刷インタフェースを利用する際は、printcap name = cups
という設定を行なうこと。これにより [global] セクションの
printing = cups パラメーターにより補完される。
printcap name = cups
により、
CUPS の設定ファイルによって指定された、
CUPS によって作成される"ダミー"の printcap が用いられるようになる。
lpstat
を利用することで
利用可能なプリンターの一覧を取得できる System V のシステムでは、
printcap name = lpstat
と設定することで、利用可能なプリンターの一覧を自動的に取得できる。
(ほとんどの 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
印刷ジョブが、スプールファイルの書き込みを完了した後で、
ここで指定したコマンドが system()
関数経由でスプールファイルを処理するために、利用される。
通常、指定したコマンドはスプールファイルをホストの印刷サブシステムに送信するが、
そうしなければならないということはない。
サーバーはスプールファイルを削除しないので、
指定したコマンドが処理完了後にスプールファイルを削除しなければならない。
さもなければ、古いスプールファイルを手動で削除する必要がある。
print command は、単純なテキスト文字列である。 これは、以下のマクロが置換される他はそのまま利用される。
%s, %f - スプールファイル名へのパス
%p - プリンター名
%J - the job クライアントから送信されたジョブ名
%c - スプールされたジョブのうち、 すでに印刷されたページ数(検知可能な場合)
%z - スプールされた印刷ジョブのサイズ (バイト)
print command には、最低限 %s
もしくは %f
の記述が必要である。
%p
については必須ではない。
ジョブの実行時にプリンター名が指定されていない場合、
%p
は単に print 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
のように、
System V 系の印刷用コマンドに -oraw オプションをつけたものに対応づけられる。
Samba が libcups を利用してコンパイルされ、
printing = cups
の設定が行なわれた場合、
手動で設定された print コマンドは無視される。
既定値なし
例: print command
= /usr/local/samba/bin/myprintscript %p %s
このパラメーターは、印刷サービスに対して印刷ジョブが送られた際に、 それをスプールするプリンター名を設定する。
[global] セクションで設定された場合、 そのプリンター名は、独自のプリンター名が指定されていないすべての 印刷サービスで利用される。
printer name の既定値は 、
大半のシステムで lp
である。
既定値: printer name
=
例: printer name
= laserwriter
このパラメーターは、プリンターの状態に関する情報をどのように解釈するかを設定する。
このオプションが[global] セクションで指定された場合、
print command
、
lpq command
、
lppause command
、
lpresume command
、
lprm command
の既定値にも影響する。
現時点で指定できる印刷形式は
BSD
/ AIX
/
LPRNG
/ PLP
/
SYSV
/ HPUX
/
QNX
/ SOFTQ
/
CUPS
/ IPRINT
の10種類である。
Be aware that CUPS and IPRINTは、Sambaのコンパイル時、あるいは パッケージング時に CUPS 開発ライブラリが存在した時にのみ有効になることに 留意すること。
種々のオプションを使うとき、他の print command の既定値が何であるかを確認する ためには、testparm(1)プログラムを使う。
このオプションを設定した際に、関連する印刷コマンドの 既定値がどのように設定されるかを確認する際は、 testparm(1)プログラムを使用すること。
このオプションはプリンター毎に設定することが可能である。
各種の印刷に関するコマンド (print command や lpq command など) で
既定値の設定を上書きさせる場合は、
printing
パラメーターの設定後に指定する必要があることに注意。
[printers] セクションでの説明も参照のこと。
使用するシステム上での既定値は
testparm -v
を参照のこと。
既定値: printing
=
# OSに依存する
このパラメーターはプリンとシステムにどちらのユーザー情報が渡されるかを 指定する。通常、ユーザー名が送られる。しかし、いくつかの場合、たとえば、 ドメインプレフィックスも一緒にした方が便利な場合もある。
既定値: printjob username
= %U
例: printjob username
= %D\%U
Windows のプリンタークライアントは、そのクライアントへの、バックチャネル SMB コネクションを待ち受けることでプリントキューのステータスを更新する ことが出来る。クライアントのファイアウォール設定により、これは、重要な タイムアウトを発生させる場合があり、クライアントが SMB サーバーとして動作 していても、その許可がないようにみえるように、しばしば失敗するだろう。 既定値では、Samba 印刷サーバーはクライアントに対しての接続を試みなくなり、 対応する要求をクライアントへの接続が失敗したように取り扱う。
既定値: print notify backchannel
= no
このパラメーターは、 smbd が
smbpasswd
や secrets.tdb
といったファイルを格納するディレクトリを指定する。
既定値: private dir
= ${prefix}/private
このパラメーターは、印刷キューを一時停止させるために、 サーバー上で実行するコマンドを指定する。
このコマンドは、引数としてプリンター名をとり、 印刷キューにある印刷ジョブの送信を停止させるために印刷キューを停止させる機能を持つ プログラムまたはスクリプトである必要がある。
Windows 95 や Windows NTでは、 「プリンター」ウインドウからこのコマンドを発行することができるが、 Windows for Workgroups ではこのコマンドがサポートされていない。
コマンド中に %p
が指定された場合は、プリンター名がそこに引数として置かれる。
それ以外の場合、プリンター名はコマンド文字列の最後におかれる。
サーバー上で PATH 環境変数が設定されていない場合を想定して、 コマンドをフルパスで記述することが推奨される。
既定値: queuepause command
=
# printing パラメータの設定に依存する
例: queuepause command
= disable %p
このパラメーターは、印刷キューを再開させるために、 サーバー上で実行するコマンドを指定する。 これは、前述したパラメーター (queuepause command) によって一時停止された動作を再開させるコマンドになる。
このコマンドは、引数としてプリンター名をとり、 印刷キューにある印刷ジョブを再度プリンターへ送信させるために印刷キューを再開する機能を持つ プログラムまたはスクリプトである必要がある。
Windows 95 や Windows NTでは、 「プリンター」ウインドウからこのコマンドを発行することができるが、 Windows for Workgroups ではこのコマンドがサポートされていない。
コマンド中に %p
が指定された場合は、プリンター名がそこに引数として置かれる。
それ以外の場合、プリンター名はコマンド文字列の最後におかれる。
サーバー上で PATH 環境変数が設定されていない場合を想定して、 コマンドをフルパスで記述することが推奨される。
既定値: queueresume command
=
# printing パラメータの設定に依存する
例: queueresume command
= enable %p
このパラメータはSamba 4.13 以降廃止予定であり、将来の Samba の リリースでは、 NTLMSSP なしの NTLMv2 認証 のサポートが削除される。
このため、将来は、現在の既定値である
client NTLMv2 auth = no
が強制的に設定される。
smbd(8) において SMB1 クライアントに拡張セキュリティ (SPNEGO セキュリティ) が なくても NTLMv2 認証を利用できるようにするかどうかを このパラメーターで指定する。
lanman auth
と ntlm auth
がともに無効とされている場合、SPNEGO サポートを有するクライアントのみが許可される。
つまり NTLMSSP においてのみ NTLMv2 がサポートされる。
既定値: raw NTLMv2 auth
= no
これは、サービスに対して読み取りアクセス許可のみを与えられたユーザーのリストである。 接続したユーザーがこのリスト中に存在する場合、 read only パラメーターの値がどのように設定されていても、 書き込みアクセス許可は与えられない。 リストには invalid users パラメーターの説明で記述した形式を使って、グループ名を含めることも可能である。
既定値: read list
=
例: read list
= mary, @students
writeable の反意語である。
このパラメーターが yes
の場合、
ユーザーは、サービスのディレクトリ内におけるファイルの作成も修正もできない。
印刷サービス(printable = yes
)の場合、
ユーザーは常に(アクセス権を持っている)
ディレクトリに対して書き込むことが可能であるが、書き込みはスプール操作経由に限られる。
既定値: read only
= yes
これは、async smb echo handlerが設定された 場合、この機能はraw read SMB リクエストと互換がないため無視される。
有効な場合、 raw read SMB により、1パケットあたり 65535 バイトの読み込みが可能となる。 これは、非常に古いクライアントにとっては、性能の向上に大きく貢献する。
ただし、クライアントによっては、ブロックサイズを誤認識したり、 大きなブロックサイズを利用できなかったりするので、その場合は、 raw read を無効にする必要があるだろう。
このパラメーターは、システムのチューニングパラメーターであり、 通常は設定を変更すべきものではない。
既定値: read raw
= yes
このオプションは、使用する Kerberos レルムを指定する。
レルムは Windows NT 4.0 におけるドメイン
に
相当する Active Directory の概念である。
レルムには、通常 Kerberos サーバーの DNS 名が設定される。
既定値: realm
=
例: realm
= mysambabox.mycompany.com
レジストリから参照される共有定義のサポートのオンオフを切り替える。 smb.conf で定義された共有は、レジストリ内に同じ名前で 定義されたものより優先する。詳細はレジストリベースの設定の章を参照してほしい。
注意:このパラメーターはデフォルトでは no であるが、
config backend
が registry
にセットされている場合はyes となる。
既定値: registry shares
= no
例: registry shares
= yes
このオプションは、"yes" に設定しないことで、セキュリティ問題を生じるため、廃止予定で あり、将来削除される(将来はハードコードされる予定)。
このオプションは、netlogon サーバ(現在 'active directory ドメインコントローラ' モード中のみ)が、NETLOGON_NEG_SUPPORTS_AES をサポートしないクライアントを拒否するかどうかを制御する。
NETLOGON_NEG_SUPPORTS_AES に対するサポートは、 Windows の Server 2008R2 と Windows 7 で追加された。これは、Samba 4.0 から 有効になっているが、NetApp ONTAP のようなサードパーティドメインメンバ は引き続き RC4 (HMAC-MD5) を使っている。詳細は、 https://www.samba.org/samba/security/CVE-2022-38023.html を参照のこと。
既定値は CVE-2022-38023 というパッチとともに、'no' から 'yes' に変えられた。 https://bugzilla.samba.org/show_bug.cgi?id=15240 を参照のこと。
このオプションの使用は避けること!代わりに マシンアカウント毎に、明示的に 'server reject md5 schannel:COMPUTERACCOUNT' を使うこと。これは CVE-2022-38023 以下のパッチに含まれている。 https://bugzilla.samba.org/show_bug.cgi?id=15240を参照のこと。
Samba は ログレベル 0 で、クライアントに対して、旧来の(レガシーの)クライアントが 拒否されたか、明示的に 'server reject md5 schannel:COMPUTERACCOUNT = no' オプションなしで許可された場合、ログファイルにエラーを記録する。メッセージは 旧来の(レガシーの)クライアントソフトウェアがそれを必要とする場合、 明示的に 'server reject md5 schannel:COMPUTERACCOUNT = no' 行が追加されることを示す。(ログレベルは 'CVE_2022_38023:error_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
これにより、明示的な 'server reject md5 schannel:COMPUTERACCOUNT = no' オプションを収集するために、管理者は短い猶予期間にのみ「no」を使うことが できる。
このオプションを 'yes' に設定すると、 'allow nt4 crypto:COMPUTERACCOUNT' と 'allow nt4 crypto' オプションを上書きし、 'allow nt4 crypto:COMPUTERACCOUNT = no' が設定されたと見なす。
既定値: reject md5 clients
= yes
もしも、以前に 'reject md5 clients = no' を必要とする旧来の(レガシー) ドメインメンバか信頼するドメインが依然として存在するならば、 'server reject md5 schannel:COMPUTERACCOUNT = no' を コンピュータアカウント単位で明示的に例外を指定することが可能である。 COMPUTERACCOUNT は コンピュータアカウント(末尾の '$' 記号を含む) の、sAMAccountName 値でなければならないことに注意。
オプションが "no" に設定されていても、関連するコンピュータが それを必要としない場合、Samba はログレベル 0 で、 セキュリティ問題についての情報を記録する。 (ログレベルは 'CVE_2022_38023:warn_about_unused_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
Samba は、設定が引き続き特定のコンピュータアカウントに対して必要な場合、 ログレベル 5 でログファイル中に警告を記録する。
CVE-2022-38023, https://bugzilla.samba.org/show_bug.cgi?id=15240を参照のこと。
このオプションは reject md5 clients オプションを上書きする。
'yes' に設定すると、このオプションは 'allow nt4 crypto:COMPUTERACCOUNT' と 'allow nt4 crypto' オプションを上書きし、 'allow nt4 crypto:COMPUTERACCOUNT = no' が設定されたと見なす。
server reject md5 schannel:LEGACYCOMPUTER1$ = no server reject md5 schannel:NASBOX$ = no server reject md5 schannel:LEGACYCOMPUTER2$ = no
既定値なし
このオプションは、winbind が、netlogon セキュアチャネルでの AES サポートをのサポートを必要とするかを制御する。
NETLOGON_NEG_ARCFOUR、 NETLOGON_NEG_SUPPORTS_AES、 NETLOGON_NEG_PASSWORD_SET2 と NETLOGON_NEG_AUTHENTICATED_RPC フラグが必要である。
もしもすべてのドメインコントローラが AES をサポートしているなら、 このオプション yes にできる。
動作は、'reject md5 servers:NETBIOSDOMAIN = no' をオプションとして 使う事で、 netbios ドメインごとに制御出来る。
このオプションは、CVE-2022-38023 対応のパッチのために、既定値が 'no' から 'yes' に 変更された。https://bugzilla.samba.org/show_bug.cgi?id=15240 を参照のこと。
このオプションは、require strong key オプションを上書きする。
既定値: reject md5 servers
= yes
このオプションにより、 nmbd(8) は、指定した IP アドレスに対して設定したワークグループ情報を定期的にアナウンスするようになる。
これは、Samba サーバーを通常のブラウズリストの交換ができない別のワークグループ上に表示させたい場合に有用である。 別のワークグループは、IP パケットを送信できるところであればどこにあってもよい。
以下に例を示す:
remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF
上記の設定は、nmbd
が指定された2つのアドレスに対して、
指定されたワークグループ名を使って自身のアナウンスを行なう設定である。
ワークグループ名を指定しなかった場合、
workgroup
パラメーターで指定された値が代わりに利用される。
設定する IP アドレスとしては、 通常リモートネットワークのブロードキャストが用いられるが、 ネットワークが安定していれば、マスターブラウザーのIPアドレスを指定することもできる。
Samba HOWTO の Network Browsing 章を参照のこと。
既定値: remote announce
=
このオプションにより、 nmbd(8) が、 別セグメントにある Samba サーバーのマスターブラウザーと定期的にブラウズリストの同期要求を行なうように構成される。 このオプションにより、 ルーティングされたネットワーク上に存在する複数ワークグループからなるブラウズリストを構築することが可能になる。 これは Samba 固有の方式で動作するため、 Samba 以外のサーバーでは機能しない。
これは、Samba サーバーおよび同じセグメント上のクライアントマシンを、 通常のブラウズリストの交換ができない別のワークグループ上に表示させたい場合に有用である。 別のワークグループは、IP パケットを送信できるところであればどこにあってもよい。
以下に例を示す:
remote browse sync = 192.168.2.255 192.168.4.255
上記の設定は、nmbd
が指定されたサブネットのマスターブラウザーに対して、
ローカルサーバーとのブラウズリストの同期を要求する設定である。
設定する IP アドレスとしては、 通常リモートネットワークのブロードキャストが用いられるが、 ネットワークが安定していればマスターブラウザーのIPアドレスを指定することもできる。 IPアドレスが設定された場合、Sambaはそのマシンが起動していて、 要求を待っているかについても、そのセグメントのマスターブラウザーであるかどうかについても確認しない。
remote browse sync は、 WINS サーバーが存在しない場合も、 ネットワーク毎に異なる WINS サーバーを指定している場合にも用いることができる。
既定値: remote browse sync
=
このパラメーターは、以下に記述する特別な条件下において、 smbd(8) によって ROOT 権限で 実行されるスクリプトのフルパス名である。
管理者権限もしくは SeAddUserPrivilege ユーザー権利を保持しているユーザーは、(NT4 のドメイン ユーザー マネージャなどから)このスクリプトを実行して、POSIX ユーザーの名前を変更することが可能となる。
%uold
および %unew
という 2 つの変数が利用可能で、各々古いユーザー名と新しいユーザー名とに置換される。
このスクリプトは成功時に 0 を返却し、それ以外の特に 0 以外の値を返却する必要がある。
このスクリプトは POSIX 機構でアクセスが行なわれるすべての情報について名前を変更する必要があるが、パスワード機構により必要とされる変更箇所が異なる。 tdbsam と smbpasswd の場合、各ファイル中の情報についての変更は自動的に行なわれるため、スクリプト側では POSIX のユーザー名とホームディレクトリなどの環境依存で必要とされるデータの変更だけを行なえば良い。 ホームディレクトリの名前自体を変更する必要があるかも検討すべきだろう。 ldapsam の場合、LDAP のネーミング属性(LDAP naming attribute)を変更することには潜在的な問題があるため、LDAP 中の情報については全く変更が行なわれない。 この場合、スクリプト側で責任を持って Samba がユーザーの識別に用いる属性(UID)および同じディレクトリを利用する他のアプリケーションが参照する情報の変更を行なう必要がある。
既定値: rename user script
=
このオプションは、netlogon セキュアチャネルでの、強力な md5 キー サポートをサポートする事を要求するかを制御する。
NETLOGON_NEG_STRONG_KEYS、NETLOGON_NEG_ARCFOURと NETLOGON_NEG_AUTHENTICATED_RPC フラグが要求される。
いくつかのドメインコントローラが、 DES のみをサポートしているのであれば、 これは no に設定出来る。これは、たとえばダウングレード攻撃で、 暗号化レベルを下げたネゴシエーションを許すことになる。
動作は 'require strong key:NETBIOSDOMAIN = no' をオプションとして使う事で、 netbios ドメインごとに制御出来る。
Active Directory ドメインでは、このオプションは 'yes' 固定になっていることに注意。
このオプションは reject md5 servers オプションによって上書きされる。
このオプションは client schannel オプションを上書きする。
既定値: require strong key
= yes
この真偽値オプションは、外部からの SMB1 セッションセットアップ要求の際に、 同一 IP からの別の接続を切断するかどうかを制御する。 これは Windows Server 2003 の既定の動作である。 ネットワークが不安定で、 それまでの接続がファイルを共有モードで オープンしているにも関わらず、 Windows が再接続を試みてしまうような環境では、 このパラメーターを yes にすることが必要になる。 これがないと、オープンしていたファイルは新しく接続が行われてもアクセスできなくなる。 クライアントが新しい接続を行う際に VC = 0 を送信することにすれば、Windows Server 2003 は同一の IP が送信元のすべての他の接続を切断する。 これにより、ロックされたファイルが再度アクセスできるようになる。 このオプションを有効にすると、マスカレードルーターが扱う同一 IP アドレスの 接続も切断されてしまうことに注意。ただし SMB2 または SMB3 のみを使った クライアントには影響しない。
既定値: reset on zero vc
= no
このパラメーターは、SAMR やDCERPC サービスが匿名接続できるかを制御する。 このパラメーターは以下の Windows Server レジストリオプションと関連する:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous
オプションは、NETBIOSを使うブラウジングに依存する、旧来のクライアントによって使われる ブラウズオプションにも影響する。新しい Winbows バージョンでは匿名接続に依存する アプリケーションがまだあるかもしれないので、アクセスを制限しても問題ない。
restrict anonymous = 1 に設定すると、 匿名 SAMR アクセスを無効にする。
restrict anonymous = 2 に設定すると、 SAMR アクセスの制限に加えて、一般的な IPC$ 共有に対する匿名接続を無効にする。 任意の共有上で guest ok = yes に設定すると、 セキュリティの有効性が損なわれてしまうことに注意。
既定値: restrict anonymous
= 0
サーバーの起動時に、このディレクトリへ
chroot()
(ルートディレクトリの変更)が行なわれる。
これは、安全のため絶対に必要というものではない。
この設定がなくても、サービスの提供するディレクトリ配下にないファイルへのアクセスは許可されない。
また、ファイルシステムへの他の部分へのシンボリックリンクや、
ファイル名に「..」をつけて他のディレクトリにアクセスするような行為をチェックして、
アクセスを拒否することもできる
(wide links パラメーターの設定に依存する)。
root directory
として「/」以外を指定した場合は、
代償もあるが、非常に強固なセキュリティが実現される。
root directory
オプションで指定されたディレクトリのサブディレクトリ以外にあるファイルへは、
サーバーの動作に必要なファイルも含め、
一切アクセスできない。サーバーを動作させるには、
root directory
内に必要なシステムファイルをコピーしておく必要がある。
例えば /etc/passwd
(またはその一部)や、
印刷に必要となる設定ファイルやバイナリなどを(場合によっては)コピーする必要がある。
コピーしなければならないファイルは、オペレーティングシステムに依存する。
既定値: root directory
=
例: root directory
= /homes/smb
このパラメーターは、
コマンドが root で実行されることを除き、
postexec
パラメーターと同一である。
このコマンドは、コネクションの切断後に(CD-ROMなどの)ファイルシステムをアンマウントするのに便利である。
既定値: root postexec
=
このパラメーターは、
コマンドが root で実行されることを除き、
preexec
パラメーターと同一である。
このコマンドは、コネクションの開始時に(CD-ROM などの)ファイルシステムをマウントするのに便利である。
既定値: root preexec
=
このオプションを設定すると、RPC クライアントとサーバー間での 転送データをビッグエンディアンで行うようにさせる。
無効にした場合には、データ転送はリトルエンディアンで行う。
動作は、ホストマシンのエンディアン状態に依存しない。
既定値: rpc big endian
= no
このパラメーターは、RPC サーバーが利用するポート番号の範囲 を指定するものであり、これによって標準の(wellknown)tcp ポート以外のポートを利用して、LSA、SAM、Netlogon などに 対するリスニングソケットを生成する。 前には最小のポート番号、後ろには最大のポート番号を指定する。
これは RPC サーバーのすべての動作に関して適用される。
既定値: rpc server dynamic port range
= 49152-65535
サーバーが、DCP/RPC over TCP/IP トラフィックについて、どのポートをリッスンすべきかの指定。
これは、NETLOGON 以外のすべてのプロトコルに対しての、既定値のポートを制御する。
設定されない場合、rpc server dynamic port range から利用できる最初のポートが使われる。例えば 49152 である。
NETLOGON サーバーは、その次に利用可能なポート、たとえば 49153 を使う。 このポートを変更する場合は rpc server port:netlogon = 4000 などとする。
さらに、すべての RPC サーバーは、(たとえば)rpc server port:drsuapi = 5000 とすることで、独立したポートを指定できる。
このオプションは現時点では samba(8) が Active Directory ドメインコントローラー として動作している場合にのみ利用可能である。
既定値である 0 は、Samba に対して rpc server dynamic port range から利用できる最初のポートを用いるように指示する。
既定値: rpc server port
= 0
このグローバルパラメータは、smbd
または
winbindd
からの名前付きパイプ (np) DCE-RPC 要求を
サービスするために、samba-dcerpcd
をオンデマンドで
開始するかどうかを決定する。これは、起動スクリプトがデーモンとして
samba-dcerpcd
を起動するように変更されていない
通常のケースである。
samba-dcerpcd
がデーモンとして、または systemd のような
システムサービスマネージャを介して起動される場合、このパラメータは
"no" に設定されなければならない。そうでない場合、
samba-dcerpcd
は起動に失敗する。
既定値: rpc start on demand helpers
= yes
このオプションは、Samba KCC コマンドへのパスを指定する。 このスクリプトは複製トポロジ複製のために使われる。
テスト目的か、samba_kcc
が
非標準の位置にインストールされた時を除いて、このオプションを
変更する必要はない。
既定値: samba kcc command
= ${prefix}/sbin/samba_kcc
例: samba kcc command
= /usr/local/bin/kcc
このオプションは、
クライアントがどのように Samba に応答するかを決めるものであり、
smb.conf
中でもっとも重要な設定の 1 つである。
server roleが指定ていない限り、
既定値はsecurity = user
であり、
これは、スタンドアロンファイルサーバーあるいは DC で使われる、もっとも一般的な設定である。
security = user
に対する代替としては、
その他に Samba を Windows ドメインに参加させることが出来る、
security = ads
か
security = domain
がある。
パスワードなしの共有 (ゲスト共有) の作成が主目的である場合は、
security = user
と、
map to guest を使うべきである。
この設定は、通常共有プリンターサーバーで使われることが多い。
以下、それ以外の設定について説明する。
これは Samba のセキュリティ設定の既定値であり、Samba が、 security モードを決める server role パラメーター (もしも設定されていれば) を調べるようにさせる。
もしも server role が指定されていない場合、これは Samba セキュリティ設定の既定値である。ユーザーレベルのセキュリティでは、 クライアントは最初に正しい (username map を使うことによって マップ可能な) ユーザー名とパスワードで最初に "ログオン" する必要がある。 暗号化パスワード (encrypt passwords パラメーター参照) も このセキュリティモードで使うことが出来る。force user と guest only のようなパラメーターは、もしも設定された場合、 有効となり、この接続上で使用するために、UNIX ユーザーを変更できるが、それは、 そのユーザーが正しく認証されたあとである。
要求されたリソースの名前は、サーバーによるクライアントの認証が 正しく完了するまでサーバーに送られないことに 注意。これは、なぜ、ゲスト共有が、不明なユーザーを guest account に、自動的にマップする事を許可しないと ユーザーレベルのセキュリティが動作しないかという事の理由である。これの動作 詳細については map to guest を参照のこと。
このモードは、もしも net(8) によって、このマシンをWindows NT ドメインに
追加するのに使った後にのみ正しく動作する。これは、
encrypt passwords パラメーターが yes
に設定されていることを前提とする。このモードにおいては Windows NT サーバーが
行うのと正確に同じ方法で、Samba はユーザー名/パスワードを
Windows NT プライマリあるいはバックアップドメインコントローラーに送ることで
検証しようとする。
有効な UNIX ユーザーは、ファイルにアクセスするためにマップ するための有効な UNIX アカウントを Samba が得られるようにするため、 ドメインコントローラー上でのアカウントと同様に存在する必要があることに 注意。
クライアントの観点からは、
security = domain
は、
security = user
と同じである
ことに注意。これは認証をサーバーがどのように扱うか
にのみ影響し、クライアントからのやりとりには何も影響しない。
要求されたリソースの名前は、サーバーによるクライアントの認証が 正しく完了するまでサーバーに送られないことに 注意。これは、なぜ、ゲスト共有が、不明なユーザーを guest account に、自動的にマップする事を許可しないと ユーザーレベルのセキュリティが動作しないかという事の理由である。これの動作 詳細については map to guest を参照のこと。
password server パラメーターと encrypt passwords パラメーターも参照のこと。
このモードの場合、Samba は ADS レルムのドメインメンバーとして振舞う。 このモードで動作させるためには、Samba が実行されているマシンに Kerberos が インストールされて構成されていることが必要であり、Samba は net ユーティリティを 使用して ADS レルムに参加する必要がある。
このモードは Samba を Active Ditectory のドメインコントローラーとして動作さ せるものではないことに注意。
これは、プライマリドメインに対して、 require strong key = yes と client schannel = yes を強制することに注意。
詳細については、HOWTO の Domain Membership の章を熟読のこと。
既定値: security
= AUTO
例: security
= DOMAIN
この共有単位のパラメータは、特定のサーバ IP アドレスに対して、 共有の可視性とアクセス性を制限する。(複数のネットワークを持つ) マルチホームサーバは、インタフェース毎に異なった共有群を提供できる。
空白のリストは、全てのインタフェースに対して共有を提供することを意味する。
既定値: server addresses
=
このパラメーターの値(文字列)は、サーバーがサポートする最上位の プロトコルを指定する。
設定可能な値は以下の通りである:
LANMAN1
: 最初の 近代的な
プロトコルであり、長いファイル名をサポートしている。
LANMAN2
: LANMAN1 プロトコルを改良したものである。
NT1
: 最新のプロトコルであり、Windows
NTで使用されている。CIFS としても知られている。
SMB2
: SMBプロトコルを実装しなおしたもので、
Windows Vista以降で使用されている。SMB2には幾つかのサブプロトコルが
存在する。
SMB2_02
: 最初期の SMB2 プロトコル
SMB2_10
: Windows 7 の SMB2 プロトコル
SMB2 を指定した場合、デフォルトでは SMB2_10 が選択される。
SMB3
: SMB2と同じく、SMBプロトコルを実装し直したものであり、
Windows 8 で使用されている。 SMB3 にもサブプロトコルが存在する。
SMB3_00
: Windows 8 の SMB3 プロトコル。
SMB3 を指定した場合、デフォルトでは SMB3_00 が選択される。
SMB3_02
: Windows 8.1 の SMB3 プロトコル
SMB3_11
: Windows 10 SMB3 バージョン。
SMB3 の既定値は SMB3_11 である。
通常は、SMB プロトコルの自動ネゴシエーションフェーズにより 適切なプロトコルが選択されるため、このオプションを設定する必要はない。
既定値: server max protocol
= SMB3
例: server max protocol
= LANMAN1
この設定は、サーバーがクライアントに許可する最低位のプロトコル を制御する。
通常は、SMB プロトコルの自動ネゴシエーションフェーズにより 適切なプロトコルが選択されるため、SMB1 しか対応していない古いクライアントを 使う場合を除き、このオプションを設定する必要はない。
有効なプロトコルの完全な一覧については
関連コマンド: server max protocol
を参照のこと。
既定値: server min protocol
= SMB2_02
例: server min protocol
= NT1
この真偽値パラメータは、 smbd(8) が、 SMB3 multi-channel をサポートするかどうかを制御する。
このパラメータはバージョン 4.4 で追加された。
この機能は、4.14 まではまだ実験的と見なされていたことに注意。
Linux 又は FreeBSD の カーネル API に依存するため、この機能は、現時点では
Linux と FreeBSD でのみ使用可能である。テストのため、この制限は、追加で、
force:server multi channel support=yes
を指定することで
上書きできる。
このオプションは、4.15 からは、既定で有効になっている(Linux および FreeBSDの場合)。
既定値: server multi channel support
= no
このオプションはSambaサーバーの基本的な動作モードを決定し、
smb.conf
ファイル中で最も重要な
設定の1つである。
既定値はserver role = auto
で、これは
Samba にsecurityの設定に従って動作するようにさせ、
また、もしも設定されていない場合は、どのドメインにも接続しない、単純ファイルサーバー
として動作するようにさせる。
そのほかの設定としては、server role = standalone
またはserver role = member server
があり、これは、
Windows ドメインに Samba を参加させることをサポートし、そのほかには、
server role = domain controller
があり、
これは、Samba を Windows ドメインコントローラーとして動かす。
もしも、主に、パスワードなしで(ゲスト共有)を設定する場合には、
server role = standalone
と
map to guestを使うべきである。これは、主に共有プリントサーバーで
使われる。
これは、Samba における既定値の server role であり、Samba が、server role を 決めるsecurityパラメーター(もしも設定されていれば)を確認する ようにさせ、結果として、以前のSambaバージョンと互換のある動作をさせる。
もしも、securityが設定されていない場合、これは、 Samba セキュリティ設定の既定値である。スタンドアロン動作において、クライアントは最初に このマシンに保持されている正しいユーザー名とパスワード(username map パラメーターを使ってマッピングしたものでもよい)で、"ログオン"を行なう必要がある。 暗号化パスワード(encrypt passwordsパラメーターを参照のこと)の使用は、 このセキュリティモードでは既定値である。もしも設定されていた場合、force userと guest onlyのようなパラメーターは、次に適用され、この接続上で使われる UNIX ユーザーを変更するかもしれないが、それは、ユーザー認証が正常に終わった後である。
このモードは、net(8)によってこのマシンをWindowsドメインに
追加するために使われた時にのみ正常に動作する。これは、
encrypt passwordsがyes
であることを前提としている。このモードでは、Samba は、Windows または Samba ドメイン
コントローラーに、Windows サーバーが行うのと全く同じ方法で、ユーザー名/パスワードを
渡すことによって認証をしようとする。
有効なUNIXユーザーは、Samba が、ファイルへのアクセスをマップするための、有効な UNIX アカウントを使えるようにするため、ドメインコントローラー上のアカウントと 同じように、引き続き存在する必要があることに注意。 Winbind はこれを提供する事ができる。
SERVER ROLE = CLASSIC PRIMARY DOMAIN CONTROLLER
このモードの動作は、旧来の Samba プライマリドメインコントローラーであり、 NT-4風のドメインとして、Windows と Samba クライアントに対して、ドメインログオン サービスを提供する。クライアントはネットワーク越しに、セキュアで信頼された パスを作成するため、ドメインに参加しなければならない。そこには、NetBIOS スコープ(通常、ブロードキャストネットワークまたは単一の WINS サーバーによって 取り扱われるクライアント群)ごとに単一の PDC が存在しなければならない。
SERVER ROLE = CLASSIC BACKUP DOMAIN CONTROLLER
このモードの動作は、旧来の Samba バックアップドメインコントローラーであり、 NT-4風のドメインとして、Windows と Samba クライアントに対して、ドメインログオン サービスを提供する。BDC として、単一の NetBIOS スコープに対し、冗長なログオン サービスを提供するため、複数の Samba サーバーを立てることができるようになる。
SERVER ROLE = ACTIVE DIRECTORY DOMAIN CONTROLLER
このモードの動作は、Samba を Active Directory ドメインコントローラーと するものであり、ドメインの Windows と Samba クライアントにドメインログオン サービスを提供する。このロールは特別な設定を必要とするので、 Samba4 HOWTO を参照のこと。
SERVER ROLE = IPA DOMAIN CONTROLLER
このモードの動作は、IPA ドメインコントローラ向けのハイブリッドモードで Samba を動作させ、Active Directory に対してフォレストに対する信頼を提供する。 このロールは、IPA インストーラの実行による特別な設定を必要とし、 administrator による手動設定は行うべきでない。
既定値: server role
= AUTO
例: server role
= ACTIVE DIRECTORY DOMAIN CONTROLLER
このオプションは非推奨で将来廃止される予定であり、 (将来ハードコードされた動作となる) "yes" に設定しない場合、 セキュリティ上の問題が存在する。
このオプションを使わないこと! そのかわりに明示的に 'server require schannel:COMPUTERACCOUNT = no' を使うこと!
Samba は ログレベル 0 で、クライアントに対して、旧来の(レガシーの)クライアントが 拒否されたか、明示的に 'server require schannel:COMPUTERACCOUNT = no' オプションなしで許可された場合、ログファイルにエラーを記録する。メッセージは 旧来の(レガシーの)クライアントソフトウェアがそれを必要とする場合、 明示的に 'server require schannel:COMPUTERACCOUNT = no' 行が追加されることを示す。(ログレベルは 'CVE_2020_1472:error_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
これにより、明示的な 'server require schannel:COMPUTERACCOUNT = no' オプションを収集するために、管理者は短い猶予期間にのみ「auto」を使うことが できる。
CVE-2020-1472(ZeroLogon) と https://bugzilla.samba.org/show_bug.cgi?id=14497 を参照のこと。
このオプションはserver require schannel:COMPUTERACCOUNT オプションによって上書きされる。
このオプションは 'server schannel require seal:COMPUTERACCOUNT' 又は 'server schannel require seal' オプションの 有効な値が 'yes' の場合に上書きされる。
既定値: server schannel
= yes
"server schannel = auto" を必要とした、旧来のドメインメンバが、まだ残っている場合、 'server require schannel:COMPUTERACCOUNT = no' をオプションとして使う事で、 コンピュータアカウント毎に、明示的に例外として指定することが出来る。 COMPUTERACCOUNT は、コンピュータアカウント(末尾に '$' 記号を含む)の sAMAccountName の値でなければならないことに注意すること。
オプションが "no" に設定されていない場合に、セキュリティ上の 問題があることについて、Samba はログレベル 0 で、ログファイルに 警告を記録するが、関連するコンピュータは、実際には netlogon secure channel (schannel) 機能を使う。 (ログレベルは 'CVE_2020_1472:warn_about_unused_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
指定されたコンピュータアカウントで引き続き設定が必要な場合、 Samba はログレベル 5 でログファイルに警告を記録する。
CVE-2020-1472(ZeroLogon) と https://bugzilla.samba.org/show_bug.cgi?id=14497 オプションを参照のこと。
このオプションはserver schannel オプションを上書きする。
~このオプションは 'server schannel require seal:COMPUTERACCOUNT' 又は 'server schannel require seal' オプションの 有効な値が 'yes' の場合に上書きされる。
このことは、 server require schannel:COMPUTERACCOUNT = no' が 'server schannel require seal:COMPUTERACCOUNT = no' オプションと同時に使う時のみ有効であることを意味する。
server require schannel:LEGACYCOMPUTER1$ = no server require schannel seal:LEGACYCOMPUTER1$ = no server require schannel:NASBOX$ = no server require schannel seal:NASBOX$ = no server require schannel:LEGACYCOMPUTER2$ = no server require schannel seal:LEGACYCOMPUTER2$ = no
既定値なし
このオプションは非推奨で将来廃止される予定であり、 (将来ハードコードされた動作となる) "yes" に設定しない場合、 セキュリティ上の問題が存在する。
このオプションは、netlogon サーバが、プライバシー/暗号化なしで、 netlogon secure channel の使用を拒否するかどうかを制御する。
このオプションは、Windows 上で有効なレジストリキーをモデルにしている。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireSeal=2
このオプションを使わないこと! そのかわりに明示的に 'server schannel require seal:COMPUTERACCOUNT' を使うこと!これは、 CVE-2022-38023 see https://bugzilla.samba.org/show_bug.cgi?id=15240 というパッチにある。
Samba は ログレベル 0 で、クライアントに対して、旧来の(レガシーの)クライアントが 拒否されたか、明示的に 'server schannel require seal:COMPUTERACCOUNT = no' オプションなしで許可された場合、ログファイルにエラーを記録する。メッセージは 旧来の(レガシーの)クライアントソフトウェアがそれを必要とする場合、 明示的に 'server schannel require seal:COMPUTERACCOUNT = no' 行が追加されることを示す。(ログレベルは 'CVE_2020_38023:error_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
This allows admins to use "no" only for a short grace period, in order to collect the explicit 'server schannel require seal:COMPUTERACCOUNT = no' options.
'yes' に設定した場合、このオプションは、 'server require schannel:COMPUTERACCOUNT' と 'server schannel' を上書きし、 'server require schannel:COMPUTERACCOUNT = yes' を仮定する。
このオプションは、server schannel require seal:COMPUTERACCOUNT オプションによって上書きされる。
既定値: server schannel require seal
= yes
まだ、以前に "server schannel require seal = no" を必要としていた 旧来のドメインメンバがある場合、オプションとして、 'server schannel require seal:COMPUTERACCOUNT = no' を使うことにより、 コンピュータアカウント毎に明示的な例外を指定できる。 COMPUTERACCOUNT は、(末尾の '$' 記号を含む)コンピュータアカウントの sAMAccountName 値でなければならないことに注意。
オプションが "no" に設定されていない場合に、セキュリティ上の 問題があることについて、Samba はログレベル 0 で、ログファイルに 警告を記録するが、関連するコンピュータはそれを必要としない。 (ログレベルは 'CVE_2020_38023:warn_about_unused_debug_level = 1' オプションで、より高いレベルだけで表示するように調整することが可能である。)
指定されたコンピュータアカウントで引き続き設定が必要な場合、 Samba はログレベル 5 でログファイルに警告を記録する。
CVE-2022-38023 と https://bugzilla.samba.org/show_bug.cgi?id=15240 を参照のこと。
このオプションは 'server schannel require seal' オプションを上書きする。
'yes' に設定するとこのオプションは 'server require schannel:COMPUTERACCOUNT' と 'server schannel' オプションを上書きし、 'server require schannel:COMPUTERACCOUNT = yes' を仮定する。
server require schannel seal:LEGACYCOMPUTER1$ = no server require schannel seal:NASBOX$ = no server require schannel seal:LEGACYCOMPUTER2$ = no
既定値なし
このオプションはSambaデーモンが実行するサービスを指定する。
smb.conf
中のエントリは、それ以前の値を
完全に上書きするか、その前にプレフィックスとして+
または
-
を付けることにより、エントリを追加するか、削除する。
既定値: server services
= s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns
例: server services
= -s3fs, +smb
このパラメーターは、SMB1 または SMB2 署名を使うために、通信先のクライアントに対して、使用を有効にするか、もしくは要求するかを設定する。 設定可能な値は、default、auto、mandatory、disabled である。
既定値で、SMB 署名 がdefaultの場合、 server roleが active directory domain controllerで、 それ以外が無効の場合、SMB 署名 が要求される。
auto に設定した場合、SMB1 署名が有効になるが、強制はしない。 mandatory に設定すると、SMB1 署名が必須となる。disable に設定すると、SMB 署名は有効にならない。
SMB2プロトコルに対しては、その設計により、署名を無効に出来ない。SMB2 を 使うようにネゴシエーションされた場合、このパラメーターがdisabled だった場合には、autoとみなして扱われる。 mandatoryに設定された場合には、SMB2 クライアントに署名を使うよう 要求する。
既定値: server signing
= default
このパラメータは、リモートクライアントが SMB 暗号化を試みるか、それが必要で あるかを制御する。これは、接続が SMB1 または SMB2 以降のどちらかに よって影響が異なる:
SMB1 で接続する場合、このオプションは、Unix 拡張を使う、Samba 3.2 で 導入された、SMB プロトコルに対する Samba 固有の拡張の使用を制御する。
SMB2 以降で接続する場合、このオプションは、SMB バージョン 3.0 以降で サポートされる、Windows 8 以降で有効な、SMB レベルの暗号化を 使うかを制御する。
このパラメータはグローバルに設定できる。取り得る値は以下の通り off, if_required, desired, and required. 特別な値 default は、if_required の暗黙の設定である。
SMB1 における Samba 固有の暗号化接続は、UNIX 拡張の一部として ネゴシエーションされる、SMB プロトコルの拡張である。SMB 暗号化は SMB プロトコルストリーム中で、リクエスト/応答を毎回暗号化および 署名する機能を持つ GSSAPI(Windows 上の SSPI)を使う。有効にすると、 ssh で保護されたセッションのように、SMB/CIFS 通信をセキュアにする 機能を提供するが、暗号化のネゴシエーションおよびキーの署名には SMB/CIFS の認証を使う。現在これは Samba 3.2 以降の smbclient のみ でサポートされていて、そのうち Linux の CIFSFS と MacOS/X でサポート されるかもしれない。Windows クライアントはこの機能をサポートしない。
これは共有単位で設定出来るが、クライアントは、指定された共有に対して トラフィックではなく、全セッションを暗号化することを選べる。 もしも、これを mandatory に設定すると、共有へのすべてのトラフィックは 共有に対する接続がなされた後は、必ず 暗号化されなければならない。サーバは、そのような共有に対する、 暗号化されていないすべての要求には "access denied" を返す。 暗号化されたトラフィックを選ぶと、すべてのデータに対する暗号化および署名 を暗号化する時のオーバヘッドと同様、より小さなパケットサイズが使われるため (巨大な UNIX 系の読み/書き操作が許可されないため)、トラフィックが減少する。
SMB 暗号化を選択した場合、Windows 風の SMB 署名 (server signingオプションを参照) はもはや不要で、GSSAPI フラグが署名とデータの署名と暗号化 両方を選択する。
auto 又は 既定値に設定した場合、SMB 暗号化は提供されるが、強制 ではない。mandatory に設定した場合、SMB 暗号化が要求され、 disable に設定した場合は、SMB 暗号化はネゴシエートされない。
本来の SMB トランスポート暗号化は、SMB バージョン 3.0以降で有効 である。これは、server max protocolが SMB3 以降に設定された場合にのみ、 Samba から提供される。 クライアントは、Windows 8 以降、Windows Serer 2012 以降、 Samba 4.1 以降の smbclient の場合、このタイプの暗号化をサポートする。
このプロトコルの実装は種々のオプションを提供している:
プロトコルネゴシエーション中に SMB 暗号化のネゴシエーション実行 する機能がある。 SMB 暗号化を実行する能力は、プロトコルのネゴシエーション中で ネゴシエートできる。
データの暗号化はグローバルに有効に出来る。この場合、 暗号化が可能な接続は、そのすべてのセッションのすべての トラフィックで暗号化される。特に、すべての共有接続は 暗号化される。
データの暗号化も、グローバルに有効になっていない場合は、 共有単位に有効化できる。暗号化可能な接続では 暗号化が有効になっている共有に対するすべての接続は 暗号化される。
暗号化は強制できる。これは、データの暗号化がグローバルに 有効になっていた場合、暗号化が出来ない接続は、 セッションのセットアップ時に拒否されることを意味する。 そして、データの暗号化が有効になっている共有に対する 暗号化できない接続に対して、tree connection は拒否される。
これらの機能は、以下のように、server smb encrypt の設定で制御できる:
既定のままにするか、明示的に default を設定するか、 if_requiredをグローバルに設定すると、 暗号化のネゴシエーションを有効にするが、 グローバルあるいは共有単位のデータ暗号化を有効にはしない。
グローバルに、desired を設定すると、 ネゴシエーションを有効化し、これをサポートするクライアントに 対して、セッション上と共有接続上におけるデータ暗号化を有効化する。
グローバルに、required を設定すると、 ネゴシエーションを有効化し、セッション上と共有接続における データ暗号化を有効化する。暗号化をサポートしないクライアントは サーバに対するアクセスが拒否される。
グローバルにoffに設定すると、
すべての接続に対して完全に暗号化機能を無効にする。
server smb encrypt = required
を特定の共有(グローバルにオフの時)に設定すると、
すべてのクライアントからこの共有に対するアクセスを
拒否する。
共有に対して desired を設定すると、 ネゴシエーションがグローバルに有効になっているとき、 クライアントが暗号化をサポートしていると、 この共有に対するデータの暗号化を有効にする。
共有に対して required を設定すると、 ネゴシエーションがグローバルに有効になっていた場合、 この共有に対してデータの暗号化を強制する。すなわち、 暗号化をサポートしないクライアントはこの共有へのアクセスを 拒否される。
このことは、Sambaで制御される共有ごとの強制操作は Windows と 比べて違うと言うことに注意 Windows では、RejectUnencryptedAccessが グローバルな設定であり、これが設定されていた場合、データの暗号化が 有効なすべての共有は自動的に暗号化を強制される。そのため、 Samba で同じ効果を得るためには、グローバルに if_requiredを server smb encrypt に設定し、 暗号化したいすべての共有に、requiredを 設定する。 さらに、Windows では不可能な、いくつかの共有において、 暗号化が requiredと、いくつかの 共有において暗号化かdesired のみという構成が、 Samba 上で可能である。
offまたはif_requiredを 共有に対して設定することは意味がない。
既定値: server smb encrypt
= default
このパラメーターは SMB3_11 ダイアレクトのネゴシエーション時にサーバに 提示する有効な暗号化アルゴリズムとその優先順位を指定する。
これはまた、先頭に '-' を付けることで、既定のリストから個々のアルゴリズムを 削除することもできる。これにより、ハードコートされたリストを指定する必要性が なくなる。
注意: リストから aes-128-ccm を削除すると、SMB3_00 及び SMB3_02 は 使えなくなる。これは既定であり、それらのダイアレクトでは AES-128-CCM が 既定値で、かつ唯一有効な暗号化アルゴリズムである。
既定値: server smb3 encryption algorithms
= aes-128-gcm, aes-128-ccm, aes-256-gcm, aes-256-ccm
例: server smb3 encryption algorithms
= aes-256-gcm
例: server smb3 encryption algorithms
= -aes-128-gcm -aes-128-ccm
このパラメータは、 SMB3_11 ダイアレクトのネゴシエーション時にサーバに 提示する、有効な署名アルゴリズムとその優先順位を指定する。
これはまた、先頭に '-' を付けることで、既定のリストから個々のアルゴリズムを 削除することもできる。これにより、ハードコートされたリストを指定する必要性が なくなる。
注意: リストから aes-128-ccm を削除すると、SMB3_00 及び SMB3_02 は 使えなくなり、hmac-sha-256 を削除すると、SMB2_02 と SMB2_10 は使えなくなる。 これは既定であり、これらのダイアレクトでは、それらが既定値で、かつ唯一有効な 暗号化アルゴリズムである。
既定値: server smb3 signing algorithms
= aes-128-gmac, aes-128-cmac, hmac-sha-256
例: server smb3 signing algorithms
= aes-128-cmac, hmac-sha-256
例: server smb3 signing algorithms
= -aes-128-cmac
このパラメーターにより、プリンターマネージャにおける各プリンターのコメント欄および net view
において IPC 接続の横に表示されるテキストが設定される。ユーザーに表示させたい任意のテキストを設定することができる。
このパラメーターにより、ブラウズリストでコンピューター名の横に表示されるテキストも設定される。
%v
は、 Samba のバージョン番号に置換される。
%h
は、ホスト名に置換される。
既定値: server string
= Samba %v
例: server string
= University of GNUs Samba Server
NT の POSIX サブシステムのおかげで、 Windows ユーザーには、
auxiliary (補助)グループに加えて、
プライマリグループを設定することができる。
このスクリプトにより、管理者が
Windows のユーザーマネージャからプライマリグループを設定したり、
net rpc vampire
により SAM を取得したりした際に、
UNIX のユーザーデータベースのプライマリグループが設定される。
%u
は、プライマリグループを設定するユーザーに置き換えられる。
%g
は設定されるグループ名に置き換えられる。
既定値: set primary group script
=
例: set primary group script
= /usr/sbin/usermod -g '%g' '%u'
set quota command
は Samba が実行されている OS 上で、API が提供されていない場合に限り使用すべきである。
このオプションは、Samba がクォータをサポートするようにコンパイルされた 場合にのみ有効である。
このパラメーターは、引数を指定することで、クオータの設定を行なうスクリプトへのパスを指定する。
このスクリプトは以下の引数をとる:
1 - クォータを設定すべき場所へのパス。 これはスクリプトがチェックすることもできる、カレントワーキング ディレクトリからの相対として解釈される必要がある。
2 - クオータのタイプ
1 - ユーザーのクオータ
2 - ユーザーのデフォルトのクオータ (uid = -1)
3 - グループのクオータ
4 - グループのデフォルトのクオータ (gid = -1)
3 - id (ユーザーの uid もしくはグループの gid 。 -1 を指定した場合はどちらともみなされない)
4 - クオータの状態 (0 = 無効, 1 = 有効, 2 = 有効かつ強制)
5 - ブロック数のソフトウェア的な上限
6 - ブロック数のハードウェア的な上限
7 - inode 数のソフトウェア的な上限
9 - inode 数のハードウェア的な上限
9(オプション) - ブロックサイズ、デフォルトは 1024
このスクリプトは少なくとも1行のデータ行を出力する必要がある。ただし処理が成功しなかった場合は何も出力されない。
既定値: set quota command
=
例: set quota command
= /usr/local/sbin/set_quota
これはある種の、SPARSE_FILES ビット(0x40)を設定しているかどうかを調べるために QFSINFO コールを行う、特別なアプリケーションをサポートするために必要である。 もしもこのビットが設定されていない場合、特定のアプリケーションは Samba に 対して動作できなくなる。 share:fake_fscaps = 64を使うと SPARSE_FILES ファイルシステムケーパビリティフラグがセットされる。 ビットマスクを指定する他の10進値はごまかす(fake)ために必要である。
既定値: share:fake_fscaps
= 0
この真偽値パラメーターは、 すべて大文字で適切な長さという 8.3 形式の条件を満たすファイル名を大文字のファイル名にして作成するか、 default case パラメーターに従って作成するかを指定する(訳注: 実際は、8+3 形式の名前において大文字小文字の混在を容認するか、規定値の文字指定に統一するかを制御する)。 このオプションは、 preserve case = yes を用いて長いファイル名の大文字小文字の情報を保持している際に、 短いファイル名における大文字小文字の情報を保持するために利用する。
名前の短縮セクションも参照のこと。
既定値: short preserve case
= yes
Samba 2.2 での Windows NT/2000 クライアントに対する MS-RPC ベースのプリンターサポート機能のサポートによって、 Samba ホスト上の共有一覧で「プリンター」フォルダーが表示されようになっている。 通常、このフォルダーにはプリンターの追加ウィザード (MS Add Printer Wizard (APW))のアイコンが存在している。 しかし、接続したユーザーの権限に関わらず、 この機能を無効にすることも可能である。
通常の場合、Windows NT/2000 クライアントは Administrator 権限を持っているかどうかを確認するために、 OpenPrinterEx() 関数により、プリンターサーバー上のハンドルをオープンしようとする。 ユーザーにプリンターサーバー上での管理者権限がない場合 (rootでない、あるいは SePrintOperatorPrivilege権限権限を持たない)、 OpenPrinterEx() の呼出は失敗して、 client は低い権限でも可能な別の関数呼出を行なう。 これに成功しても、APW のアイコンは表示されない。
show add printer wizard
パラメーターを無効にすることにより、サーバー上での
OpenPrinterEx() 呼出が常に失敗するようになる。
そのため、APW のアイコンは決して表示されなくなる。
このパラメーターは、ユーザーが個々のプリンターの管理権限を持つことを制限するものではない。
既定値: show add printer wizard
= yes
このパラメーターは、 smbd(8) が呼び出すことで、 シャットダウン処理を実行するスクリプトのフルパス名である。
サーバーに接続しているユーザーが SeRemoteShutdownPrivilege
権利を有している場合、
このコマンドはroot権限で実行される。
%m %t %r %f パラメーターは以下のように展開される:
%m
はサーバーに送信されるシャットダウンメッセージに置換される。
%t
は実際にシャットダウン処理が開始されるまでに待機する時間(秒単位)に置換される。
%r
は -r スイッチに置換される。これは NT の「シャットダウン後再起動」を意味する。
%f
は -f スイッチに置換される。これは NT の「アプリケーションが応答しない場合でも強制的にシャットダウンする」を意味する。
シャットダウンスクリプト例を以下に示す:
#!/bin/bash time=$2 let time="${time} / 60" let time="${time} + 1" /sbin/shutdown $3 $4 +$time $1 &
シャットダウン処理から復帰することはないので、この処理はバックグラウンドで実行する必要がある。
既定値: shutdown script
=
例: shutdown script
= /usr/local/samba/sbin/shutdown %m %t %r %f
このブール値パラメータは、Samba が HP の定義に従って SMB1/CIFS UNIX拡張を実装するかどうかを制御する。これらの拡張により、 Samba はシンボリックリンクやハードリンクなどの機能をサポートすることで、 UNIX SMB1/CIFS クライアントへのサービスを向上させることができる。 これらの拡張機能は、同様に有効なクライアントを必要とし、現在 Windows クライアントでは使用されていない。
パラメータを ON にした場合、 wide links パラメータは自動的に無効になることに注意。
2つのパラメータ間の結合を変更したい場合は、 allow insecure wide links パラメータを参照の こと。
既定値: smb1 unix extensions
= yes
この真偽値パラメータは、smbd(8) が、永続的なハンドルと同じような、 マルチチャンネル接続に対して、ロックシーケンスのチェックを有効にするか どうかを制御する。
[MS-SMB2] の仕様(3.3.5.14 配下の Receiving an SMB2 LOCK Request) ドキュメントでは、 Open.IsResilient 又は Open.IsDurable 又は Open.IsPersistent が TRUE か、 Connection.Dialect が SMB 3.x ダイアレクトに属し、Connection.ServerCapabilities が SMB2_GLOBAL_CAP_MULTI_CHANNEL を含んでいる場合に、サーバはロックシーケンスを行う べき、となっている。
しかし、Windows サーバ (少なくとも v2004 まで)は、これらのチェックを Open.IsResilient と Open.IsPersistent に対してのみに行う。これは、 [MS-SMB2] で定義された動作を実装していないかとを意味する。
既定で、 Samba は 仕様に従って動作し、マルチチャネルが使われている場合、 ロックシーケンスチェックを実装する。
警告: Open.IsResilient と Open.IsPersistent がないハンドルでロックシーケンスを 扱えないクライアントが存在するときにのみ、このオプションを有効にする。そして、 Windows サーバの動作が必要な場合には OFF にする。
注意: 将来の Windows バージョンがその動作を変更した場合、 このオプションは再度削除される可能性がある。
注意: Samba はOpen.IsResilient と Open.IsPersistentdoes をまだ実装していない。
既定値: smb2 disable lock sequence checking
= no
例: smb2 disable lock sequence checking
= yes
この真偽値パラメータは、smbd(8) が、 server multi channel support = yes を使う時、smb2 oplock break notification のリトライのトリガを制御する。
The [MS-SMB2] の仕様ドキュメントでは、指定されたクライアントに対して、 サーバは、すべての有効なチャンネル上で smb2 oplock break notification リトライを 送るべきであるとしている。
しかし、Windows サーバの(少なくとも 2019 までの)バージョンでは、 チャンネルの障害時に smb2 oplock break notification リトライを送らない。 これは、[MS-SMB2] で定義された動作を実装していないかとを意味する。
既定で、Samba は、仕様に従って動作し、smb2 oplock ブレーク通知リトライを 送信する。
警告: 既存のクライアントが可能なリトライを扱えない場合にのみ、 このオプションを有効にする。そして、 Windows サーバの動作が必要な場合には OFF にする。
注意: 将来の Windows バージョンがその動作を変更した場合、 このオプションは再度削除される可能性がある。
注意: これは、oplocks のみに適用され、SMB2 leases には適用されない
既定値: smb2 disable oplock break retry
= no
例: smb2 disable oplock break retry
= yes
この真偽値オプションは、ファイルオープン時に、smbd
に、
グローバルに SMB2 リースをネゴシエートするかどうかを
設定する。リース機能は SMB2 特有の機能であり、クライアントに、SMB1 の oplock 機能
によるキャッシュ以上に、積極的にファイルをローカルにキャッシュできる。
これは、oplocks = yesと kernel oplocks = no の時にのみ有効である。
既定値: smb2 leases
= yes
このオプションは、 Samba がクライアントに通知する同時に実行可能な SMB オペレーションの最大数を制御する。 これは、SMB1 のmax muxと同じようなものである。 このパラメーターを設定する必要は決してないだろう。
既定値は8192であり、これは、Windows Windows 2008R2 SMB2 サーバーと同じである。
既定値: smb2 max credits
= 8192
このオプションは、smbd(8)がクライアントに、 単一の SMB2 リード呼び出しで戻される、最大のサイズを通知する プロトコルの値を指定する。
既定値は 8388608バイト(8MiB)で、これは Windows Server 2012 R2 と同じである。
既定値は 8MiB であるが、その制限は smb2 dialect (SMB == 2.0 では 64KiB, SMB >= 2.1 で LargeMTU があるならば 8MiB) になることに注意。 Large MTU は NBT 上 (tcp port 139) ではサポートされない。
既定値: smb2 max read
= 8388608
このオプションは、smbd(8)が、QUERY_INFOと関連するSMB2呼び出し経由での ファイルメタデータの問い合わせで使われるだろう最大のバッファーサイズをクライアントに 通知する、プロトコル値を指定する。
既定値は8388608バイト(8MiB)で、これはWindows Server 2012 R2 と同じである。
既定値は 8MiBであるが、この限界は、 smb2 dialect (64KiB は SMB == 2.0、 1MiB は SMB >= 2.1 で LargeMTU指定の時) に基づくことに留意。Large MTU は、NBT上(tcp ポート139)ではサポートされない。
既定値: smb2 max trans
= 8388608
このオプションは、smbd(8)が、単一のSMB2ライト呼び出しによってサーバーに 送られるだろう最大のサイズをクライアントに通知するプロトコル値を指定する。
最大値は8388608バイト(8MiB)で、これは Windows Server 2012 R2 と同じである。
既定値は 8MiBであるが、この限界は、 smb2 ダイアレクト (64KiB は SMB == 2.0、 1MiB は SMB >= 2.1 で LargeMTU指定の時) に基づくことに留意。Large MTU は、NBT 上(tcp ポート139)ではサポートされない。
既定値: smb2 max write
= 8388608
SMB3 プロトコルでは SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY フラグが 導入された。これは、クライアントがサーバ(またはサーバのクラスタ)とは 異なる expectation を持てることを意味する。
注意:このオプションはディスク共有に対してのみ適用される。
ctdb クラスタでは、共有は継続的に使用でるが、Windows クライアントでは、 これとグローバル永続ハンドルのサポートが混同している。
SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY が存在する場合は、 SMB2_CAP_PERSISTENT_HANDLESがなくても、永続ハンドルが要求される。
そして、SMB2_SHARE_CAP_CLUSTER を有効にするには、 SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY が必要である。
そのため、永続的なハンドルをサポートするまでは、既定で これをアナウンスしない方がよい。
smb3 share cap:CONTINUOUS AVAILABILITY オプションを使用して、SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY の アナウンスを強制することができる。
警告: 何をしようか分かっている場合にのみこれを使うこと!
smb3 share cap:CONTINUOUS AVAILABILITY = yes
既定値なし
SMB3 プロトコルでは、SMB2_SHARE_CAP_SCALEOUT フラグが導入された。 これは、クライアントが複数のサーバのクラスタから異なる expectation を持ち、再試行/再接続の動作を変更できることを意味する。
注意:このオプションはディスク共有に対してのみ適用される。.
ctdb クラスタには複数のアクティブノードがあるので、 クラスタ内に MB2_SHARE_CAP_SCALEOUT をアナウンスする。
smb3 share cap:SCALE OUT オプションを使用すると、clusteringが yes の場合でも、SMB2_SHARE_CAP_SCALEOUT のアナウンスを無効にできる。
clustering = yes smb3 share cap: SCALE OUT = no
既定値なし
SMB3 プロトコルでは、SMB2_SHARE_CAP_CLUSTER フラグが導入された。 これは、[MS-SWN] プロトコルを使用してサーバークラスタを監視する ために、すべてのクラスタノードが監視サービスを提供することを クライアントが期待できることを意味する。
注意:このオプションはディスク共有に対してのみ適用される。
rpcd_witness がアクティブになるのは、samba-dcerpcd(8)が オンデマンドヘルパーとして起動されておらず、ctdb クラスタ内でのみ起 動されている場合だけである。
そのため、clusteringが yes で、 rpc start on demand helpersが no の場合にのみ、 SMB2_SHARE_CAP_CLUSTERをアナウンスする。
smb3 share cap:SCALE OUTオプションを使用すると、 clusteringおよび rpc start on demand helpersとは別に、 SMB2_SHARE_CAP_CLUSTER のアナウンスを制御できる。
SMB2_SHARE_CAP_CLUSTER のアナウンスを無効化する例:
clustering = yes rpc start on demand helpers = no smb3 share cap: CLUSTER = no
SMB2_SHARE_CAP_CLUSTER のアナウンスを強制する例:
smb3 share cap: CLUSTER = yes
Windows クライアントに witness サービスを使わせる例。 smb3 share cap:CONTINUOUS AVAILABILITY オプションを 参照し、自分自身の責任において使用すること!:
clustering = yes rpc start on demand helpers = no # This is the default with the above: # smb3 share cap: CLUSTER = yes # # Use at you own risk! smb3 share cap: CONTINUOUS AVAILABILITY = yes
既定値なし
SMB3_02 プロトコルでは、SMB2_SHARE_CAP_ASYMMETRIC フラグが導入された。
これは、クライアントがその動作を変更し、分離されたトランスポート接続と
共有の witness 登録を使用することを意味する。これは、クライアントが
個々の共有に対して異なるクラスタノードに接続できることを意味し、
net witness share-move
を使用してノードの
使用を制御できる。
注意:このオプションはディスク共有に対してのみ適用される。
ctdb クラスタ内の共有は対称的に設計されているため、既定では SMB2_SHARE_CAP_ASYMMETRIC はアナウンスされない。
smb3 share cap:ASYMMETRIC オプションを オプションを使用して、SMB2_SHARE_CAP_ASYMMETRIC のアナウンスを 強制することができる。
SMB2_SHARE_CAP_ASYMMETRIC のアナウンスを強制する例:
smb3 share cap: ASYMMETRIC = yes
Windows クライアントが witness サービスを使用できるようにする例。 smb3 share cap:CONTINUOUS AVAILABILITY オプションを 参照し、自分自身の責任において使用すること!:
clustering = yes rpc start on demand helpers = no # This is the default with the above: # smb3 share cap: CLUSTER = yes # # Use at you own risk! smb3 share cap: CONTINUOUS AVAILABILITY = yes smb3 share cap: ASYMMETRIC = yes
既定値なし
このパラメータは、ファイルサーバが、ディレクトリの表示時に、DOSの属性を読み取るのに、 同期又は非同期で使うかどうかを制御する。既定では同期方法が使われる。
既定値: smbd async dosmode
= no
このパラメータは、クライアントがファイルまたはディレクトリのメタデータを 要求したとき、オープンされているファイルのハンドルデータベース locking.tdb からのファイル書き込み時間取り出しを抑制することを許可する。これは、 負荷のかかるプロトコルの正確性を犠牲にしてパフォーマンスを最適化する。
既定値: smbd getinfo ask sharemode
= yes
このパラメータは、ディレクトリ一覧作成時に、ファイルサーバがキューイングする DOSの属性を取得するための、非同期操作の数を制御する。
既定値: smbd max async dosmode
= aio max threads * 2
このパラメータは、vfs_streams_xattr が使用可能な場合に、EA または 代替データストリームとしてサーバに書き込まれる拡張属性の最大サイズを 制御しする。拡張属性の最大サイズは、Samba サーバ のオペレーティング システムおよび基礎となるファイルシステムによって異なる。Linux VFSは 現在拡張属性ごとに 64KiB の上限を設定している。FreeBSD では実用的な 上限は設定されていないが、pread() と pwrite() は FreeBSD のextattr 経由ては使用できないので、この値を数 MiB より大きくすることは推奨 できない。 クライアントが過度に大きな代替データストリームを書き込もうとすると、 Samba サーバ はSTATUS_FILESYSTEM_LIMITATION を返す。このエラーが 発生した場合、ユーザは xattr書き込みでサポートされる最大サイズを 増やしてみてもよい。そのことが不可能で、書き込みが MacOS クライアント および AFP_Resource 拡張属性から行われる場合、ユーザは vfs_fruit モジュールを有効にして、AFP_Resource のストリーム書き込みを、別の 格納場所に対して許可するように構成できる。詳細については、vfs_fruit の ドキュメントを参照のこと。
既定値: smbd max xattr size
= 65536
このパラメータは、管理者に対して、プロファイリングサポートを有効にする事を許可する。
設定可能な値は、 off
,
count
と on
である。
既定値: smbd profiling level
= off
例: smbd profiling level
= on
このパラメータは、オープンファイルハンドルデータベース locking.tdb から 書き込み時間読み取りの抑制を制御する。これは、負荷のかかるプロトコルの 正確性を犠牲にしてパフォーマンスを最適化する。
既定値: smbd search ask sharemode
= yes
このオプションにより、暗号化された smbpasswd ファイルへのパスが設定される。 デフォルトの smbpasswd ファイルへのパスは、 Samba のコンパイル時に設定される。
以下に設定例を示す:
smb passwd file = /etc/samba/smbpasswd
既定値: smb passwd file
= ${prefix}/private/smbpasswd
最近のサーバーOS では、多くの状況において、高いネットワーク パフォーマンスが得られるようにチューニングされている。 socket option を設定した場合、それらの設定を上書きすることになる。 Liunx は特に、socket buffer size を指定した場合、バッファーサイズを 自動的にチューニングするメカニズムが OFF になる。これは TCP/IP スタックの機能を損なわせる可能性がある。
socket option を正しくすると、パフォーマンスに大きな違いが 出るが、間違ってしまうと、パフォーマンスは大きく下がってしまう。 他のローレベル設定と同じように、これを変更しなければならない場合は、 大きな変更の前に小さな変更を行って、試験 を行を行うこと。
このオプションは、クライアントとの通信に利用されるソケットオプションを設定する。
ソケットオプションは、 OS のネットワーク層の接続に影響し、通信の最適化に利用されるものである。
このオプションは、各ネットワークにおける Samba サーバーの性能の最適化に用いられることが多い。 Samba 自身がネットワークにおける最適のパラメーターを知るすべはないので、このオプションは、自分自身で実験して設定しなければならない。設定を行なう前に、使用している OS の適切なドキュメント (恐らく man setsockopt
が役立つだろう) を読むことを強く推奨する。
システムによっては、このオプションを設定すると、 Samba が「Unknown socket option」というメッセージを返却するようになるかもしれない。この原因は、ミスタイプか、 includes.h に使用している OS の include ファイルを追加する必要があるかのいずれかであろう。後者の場合は、 samba-technical@lists.samba.org までパッチを送ってほしい。
サポートされているソケットオプションについては、 OS の制約がない限り、どれでもどのような組合せでも用いることができる。
以下に現在このオプションで設定可能なソケットオプションの一覧を示す:
SO_KEEPALIVE
SO_REUSEADDR
SO_BROADCAST
TCP_NODELAY
TCP_KEEPCNT *
TCP_KEEPIDLE *
TCP_KEEPINTVL *
IPTOS_LOWDELAY
IPTOS_THROUGHPUT
SO_REUSEPORT
SO_SNDBUF *
SO_RCVBUF *
SO_SNDLOWAT *
SO_RCVLOWAT *
SO_SNDTIMEO *
SO_RCVTIMEO *
TCP_FASTACK *
TCP_QUICKACK
TCP_NODELAYACK
TCP_KEEPALIVE_THRESHOLD *
TCP_KEEPALIVE_ABORT_THRESHOLD *
TCP_DEFER_ACCEPT *
TCP_USER_TIMEOUT *
'*' 印のあるオプションは、整数の引数を必要とする。それ以外のものは、 1 または 0 の引数で有効、無効を指定することもできるが、 1 または 0 を指定しない場合は、有効に設定される。
引数を指定する場合は、SO_SNDBUF = 8192
のように、 SOME_OPTION = VALUE という形式で指定する。 = 記号の前後に空白を入れてはいけない。
ローカルネットワーク以外を考慮しなくても良い場合、
socket options = IPTOS_LOWDELAY
と設定するのがよいであろう。
ローカルネットワークが存在する場合は以下の設定を試してみるとよいであろう:
socket options = IPTOS_LOWDELAY TCP_NODELAY
WAN の場合は、 IPTOS_THROUGHPUT を設定してみるとよいかも知れない。
これらのオプションの中には、 Samba サーバーを完全に停止させるものもあるかもしれない。オプションを設定する際には気をつけること。
既定値: socket options
= TCP_NODELAY
例: socket options
= IPTOS_LOWDELAY
このオプションは、spn_update_list
用の、servicePrincipalName 名を更新するためのコマンドを設定する。
既定値: spn update command
= ${prefix}/sbin/samba_spnupdate
例: spn update command
= /usr/local/sbin/spnupdate
Windows spoolss 印刷クライアントは、ドライバーのアーキテクチャが 通知されたプリントサーバーアーキテクチャに一致したとき、サーバーサイドにある プリンターのドライバーのみを使える。Samba の spoolss プリントサーバーアーキテクチャは このパラメーターを使う事で変更できる。
既定値: spoolss: architecture
= Windows x64
例: spoolss: architecture
= Windows NT x86
Windows の新しいOSバージョンが必要な場合がある。このオプションは、 ビルド番号を変更可能にする。完全な既定値のバージョン番号は 5.0.2195 (Windows 2000) である。例は 6.1.7601 (Windows 2008 R2)である。
既定値: spoolss: os_major
= 5
例: spoolss: os_major
= 6
Windows の新しいOSバージョンが必要な場合がある。このオプションは、 ビルド番号を変更可能にする。完全な既定値のバージョン番号は 5.0.2195 (Windows 2000) である。例は 6.1.7601 (Windows 2008 R2)である。
既定値: spoolss: os_minor
= 0
例: spoolss: os_minor
= 1
Windows の新しいOSバージョンが必要な場合がある。このオプションは、 ビルド番号を変更可能にする。完全な既定値のバージョン番号は 5.0.2195 (Windows 2000) である。例は 6.1.7601 (Windows 2008 R2)である。
既定値: spoolss: os_build
= 2195
例: spoolss: os_build
= 7601
Windows が 新しい OS バージョン番号を要求する場合がある。このオプションで ビルド番号を変更出来る。完全な既定値のバージョン番号は: 6.1.7007 (Windows 7 と Windows Server 2008 R2) である。
既定値: spoolss_client: os_major
= 6
Windows が 新しい OS バージョン番号を要求する場合がある。このオプションで ビルド番号を変更出来る。完全な既定値のバージョン番号は: 6.1.7007 (Windows 7 と Windows Server 2008 R2) である。
既定値: spoolss_client: os_minor
= 1
Windows が 新しい OS バージョン番号を要求する場合がある。このオプションで ビルド番号を変更出来る。完全な既定値のバージョン番号は: 6.1.7007 (Windows 7 と Windows Server 2008 R2) である。
既定値: spoolss_client: os_build
= 7007
このパラメータは、共有上で、Samba が Spotlight 問合せを許可するかを 制御する。ファイルシステムのインデックス作成を制御するため、Trackerの 固有な構成システムも使わなければならない。
Spotlight にはいくつかの必要条件がある:
Samba は Spotlight サポートを有効にして設定、コンパイルされねばならない。
Tracker インテグレーションは、セットアップされ、 共有は Tracker によってインデックス化されねばならない。
詳細なセットアップ手順はhttps://wiki.samba.org/index.php/Spotlight を参照して欲しい。
既定値: spotlight
= no
Spotlight 検索バックエンド。有効な値は以下の通り:
noindex
-
なんの結果も返さないバックエンド。
tracker
-
Gnome トラッカー。
elasticsearch
-
Elasticsearch サーバに問合せを行う、
HTTP(s) 上で JSON と REST を使うバックエンド。
既定値: spotlight backend
= noindex
このパラメーターにより、 smbd(8) が、 大文字小文字を区別しない名前のマップ操作を高速化するためにキャッシュを利用するかどうかが設定される。 このパラメーターを変更する必要はないであろう。
既定値: stat cache
= yes
通常 TDB ファイルは lock directory
に格納される。Samba 3.4.0 から
state directory
と
cache directory
オプションを使うことで、
持続的データを持つ TDB ファイルと持続的データを持たない TDB ファイルとを
区別することができる。
このオプションは、持続的な重要データを含む TDB ファイルを格納する ディレクトリを指定する。
既定値: state directory
= ${prefix}/var/locks
例: state directory
= /var/run/samba/locks/state
このパラメーターが設定されると、Samba は DOS のファイル属性(システム、隠し、アーカイブ、読み取り専用)を、 (map hidden や map readonly パラメーターにより制御される) UNIX のパーミッションビットからのマッピングを行なう前に、 ファイルシステムの拡張属性から読み取ろうとする。 このパラメーターが設定されると、DOS のファイル属性は、UNIX ファイルシステム上で、各ファイルやディレクトリ毎に割り当てられた拡張属性の領域に格納される。 このパラメーターが設定されると、 map hidden、 map system、map archive、map readonly の設定を上書きし、それらが off になるように動作する。 このパラメーターは DOS のファイル属性を「user.DOSATTRIB」という名前の拡張属性に、 文字列として書き込む。この拡張属性は、クライアントの拡張属性に関するリクエスト からは明示的に隠蔽されている。Linux において拡張属性を有効にするには、Linux カーネルで拡張属性がコンパイルされており、ファイルシステムが user_xattr オプションをつけてマウントされている必要がある。 Samba 3.5.0以降では、「user.DOSATTRIB」という名前の拡張属性は DOS の属性と 同じように、ファイルの作成時刻を格納するように拡張された。これは後方互換であり、 Samba 3.5.0 とそれ以降のもので作成されたファイルは、それ以前のバージョンのSamba により、引き続きこの拡張属性からDOSのファイル属性を読めるようにしている。しかし、 ここに格納されたファイル作成時刻は読む事が出来ない。通常のファイルシステム メタデータから分離して作成時刻を格納することは、POSIX ファイルシステムのトップ レベルにおいて、NTFS セマンティクスを正確に再現することが、Samba に出来るようになる。 Samba 4.9.0 とそれ以降、既定値は yes に変更となり、既定の状態でインストール する場合、Windows ファイルサーバとの互換が向上する。
既定値: store dos attributes
= yes
この真偽値パラメーターは、サーバー上のディスク領域の割当を制御するものである。
このパラメーターが yes
の場合、
サーバーは、ファイルが拡張されただけでは実際のディスク領域を割り当てない UNIX 流の動作をやめ、
ファイルがあるサイズで作成されたり、拡張されたりした際に、
実際にディスク領域を割り当てる Windows 流の動作を行なうようになる。
これは、Samba がスパースファイルを作成しなくなることを意味する。
このオプションは、例えばエクステントベースのファイルシステムの ような大量ブロックの高速割り当てをサポートするファイルシステムのために、 まさに設計されたオプションである。エクステントをサポートしない ファイルシステム(代表的なものはext3)上では、Sambaの処理が遅くなる 場合がある。エクステントがないファイルシステム上で、100MB超のような 大きなファイルを扱っている場合、クライアントがタイムアウトになって しまうような 問題に遭遇するかもしれない。
エクステントベースのファイルシステムを使っている場合、 大量の空間を迅速に割り当てることがSambaで出来る、未書き込みのエクステントを 使う事が出来、strict allocateによって引き起こされた何らかのタイムアウト 問題が発生しなくなるだろう。strict allocateを使っているとき、 quotaを使っている場合は、quotaからのより的確なメッセージが得られるだろう。 この設定を有効にすることによる、その他の利点は、ファイルの断片化を 減少する助けになるということである。
ファイルシステム上での注目する点を提供するために、この設定は、 現時点でよいオプションであるかもしれない:Linux上でのXFS、ext4、btrfs、 ocfs2と、AIX上でのjfsは、未書き込みのエクステントをサポートする。 それらをサポートしないファイルシステム上では、事前割当は、おそらく、 パフォーマンスが低下する負荷のかかる操作であり、巨大なファイルを作成 するときにクライアントがタイムアウトになる危険性がある。例は、 Ext3、ZFS、HFS+とその他のものであり、それらのファイルシステム上で この設定を有効にするときには気をつけること。
既定値: strict allocate
= no
これは、
サーバー上でのロックの扱いを制御する列挙型の値のパラメーターである。
yes
に設定された場合、
サーバーはすべての読み書きのアクセスについてファイルのロック状態を検査し、
ロックされている場合はアクセスを拒否する。
システムによっては、アクセス速度の低下につながるだろう。
strict locking が Auto (既定値)の場合、サーバーは oplock が行なわれていないファイルについてのみ、ロック状態の検査を行なう。 Windows のリダイレクタの多くは、oplock が行なわれているファイルについてはファイルロックのチェックをローカルで実施しているため、 この設定は、パフォーマンス低下とのうまいトレードオフを実現している。
strict locking が無効の場合、 サーバーは、クライアントが明示的に要求したときに限って、 ファイルのロック状態の確認を行なう。
行儀のよいクライアントは、
重要な操作を行ない際には必ずロックの状態を問い合わせる。
従って、大抵は strict locking = Auto
か strict locking = no
がよい。
既定値: strict locking
= Auto
既定値では、Windows SMB サーバは、ファイルシステム階層構造中で、 そのディレクトリ配下のファイルまたはディレクトリがオープンされている場合、 ディレクトリの名前変更ができない。POSIX ファイルシステムの規定が要求するので、 歴史的な理由により、Samba は 常時この機能が有効である。
この真偽値パラメータは Samba に Windows の動作と一致するように させる。"yes" に設定した場合、ハンドルデータベース全体で、すべての ディレクトリ名前変更要求を、Samba に調べさせるため、とても負荷のかかる 変更となる。クラスタ化された Samba システムでは、非クラスタ化された 場合よりも更に負荷がかかる。
"no" に設定すると、smbd は、すべての smbd プロセスにわたって、 オープンしているファイルをチェックする代わりに、 クライアントと接続しているローカルプロセスのみ、 名前変更されたディレクトリ配下でオープンしているファイルのチェックを行う。
データベースを全検索するとはコストがかかるため、既定値は "no" であり、 特定の Windows アプリケーションが、変更要求を出さない限り、 そのままにしておくことを推奨する。
もしもクライアントが UNIX 拡張 (POSIX パス名) を要求した場合、 名前変更は常時許可され、このパラメータは影響しない。
既定値: strict rename
= no
このパラメーターは、
オペレーティングシステム内にてメモリ上に不明なバッファーデータがあったとしても、
ディスク上の安定したストレージへの書き込みが安全に行われるように、
SMB クライアントからの要求を受け入れるかどうかを制御する。
既定値である yes
に設定すると、
Windows アプリケーションは smbd サーバーに対して、
まだ書き込まれていないデータをディスク上に強制的に同期する。
no
に設定すると、
smbd はクライアント要求を無視するので、
まだ書き込まれていないデータをディスク上の安定したストレージに同期することは行わない。
Samba 4.7.0 において、このパラメーターの既定値は
no
から yes
に変更された。
これは SMB2/3 クライアントの期待に沿うものであり、
smbd に対して動作するアプリケーションの安全性を向上させる。
SMB2/3 クライアントからのフラッシュ要求は非同期に処理されるので、
パラメーターを yes
の設定のままにしておいても、
smbd プロセスに対する他の要求処理はブロックされない。
かつての Windows アプリケーション(例えば Windows 98 のエクスプローラーシェル)では、
オペレーティングシステムに対してバッファー内容を書き込むという処理と、
不明なデータを安定したディスク上のストレージと同期して書き込むという処理が取り違えられているようである。
このパラメーターを no
に変更すると、
smbd(8) が Windows アプリケーションから要求されても、
未処理のデータをディスクに書き込む同期処理は無視される。
したがってこのパラメーターは、smbd が Windows XP よりも古い
(Windows 98 やそれ以前の)SMB1 Windows クライアントとして動作している場合にのみ、
変更が必要である。通常処理においてこの設定を変更する必要はない。
既定値: strict sync
= yes
このパラメーターにより、smbd が Win32 の ServiceControl API 経由で UNIX 側のサービスを起動、停止させる際に用いられる起動スクリプトの一覧を定義する。 これにより、Windows の管理者が Microsoft Management Console プラグインを用いて Samba サーバー上が動作する UNIX サービスを制御することが可能となる。
管理者は、Samba の $(libdir) 以下に svcctl
というディレクトリを作成して、
/etc/init.d/
に存在する起動スクリプトのシンボリックリンクを作成しておく必要がある。
シンボリックリンク名は、 svcctl list
パラメーターに記載した名称と同一にしておくこと。
既定値: svcctl list
=
例: svcctl list
= cups postfix portmap httpd
この真偽値パラメーターは、書き込み時に不摘発性のストレージへの書き込みとの同期を常に行なうかどうかを制御する。
no
の場合、
サーバーは個々のクライアントからの書き込み要求に基づいて、同期を行なうかどうかを制御する
(クライアントは個々の書き込みについて、同期要求ビットを設定することが可能である)。
yes
の場合、
個々の書き込みに毎に、データを確実にディスクに書き込むため
fsync()
が呼び出される。
このパラメーターが機能するには、
strict sync
パラメーターが
yes
に設定されている必要がある。
既定値: sync always
= no
このパラメーターは、 Samba のデバッグメッセージと
syslog のプライオリティとの対応づけを行なう。
Samba のデバッグレベル 0 は、 syslog の LOG_ERR
に割り当てられ、以下、
デバッグレベル 1 は LOG_WARNING
、
デバッグレベル 2 は LOG_NOTICE
、
デバッグレベル 3 は LOG_INFO
、
それ以上のデバッグレベルは LOG_DEBUG
にそれぞれ割り当てられている。
このパラメーターは どのデバッグレベルまでのメッセージを syslog に送るかのしきい値を設定する。 この値未満の Samba のデバッグメッセージのみが syslog に送られる。
loggingを代わりに使うべきである。 loggingが設定された場合、それは、 syslogパラメータを上書きする。
既定値: syslog
= 1
このパラメーターが設定されると、 Samba のデバッグメッセージが システムの syslog にのみ記録されるようになり、 デバッグログファイルに出力されなくなる。 もしも、syslog onlyが有効になっていたとしても、 log.[sn]mbdへのロギングは引き続き行われる。
loggingを代わりに使うべきである。 loggingが設定された場合、それは、 syslog onlyパラメータを上書きする。
既定値: syslog only
= no
NT ドメインのユーザーに対応するユーザー情報を作成する際、
winbindd(8) デーモンは、
このパラメーターによってユーザーのホームディレクトリの位置を設定する。
文字列中に %D
があれば、
ユーザーの所属する NT ドメイン名に置き換えられる。文字列中に
%U
があれば、
ユーザーの NT ドメインにおけるユーザー名に置き換えられる。
既定値: template homedir
= /home/%D/%U
NT ドメインのユーザーに対応するユーザー情報を作成する際、 winbindd(8)デーモンは、 このパラメーターによってユーザーのログインシェルを設定する。
既定値: template shell
= /bin/false
Samba のデバッグログのメッセージには、 デフォルトでタイムスタンプが付加されるが、 高い、debug level を設定している場合、 このタイムスタンプが目障りに感じることもあるだろう。 この真偽値パラメーターにより、タイムスタンプの付加を抑止することができる。
既定値: timestamp logs
= yes
このオプションは、証明書あるいは中間証明書に署名するため、 ルート CA の CA 証明書を含む、(PEM 形式の)ファイルを設定するのに 使われる。
このパスは、パスが /. で始まっていない場合、 private dir からの相対パスとなる。
既定値: tls cafile
= tls/ca.pem
このオプションは、RSA 証明書を含む(PEM 形式の)ファイルを 設定することができる。
このパスが、 /. から始まっていない場合、 private dirからの相対パスとなる。
既定値: tls certfile
= tls/cert.pem
このオプションは、EDH 暗号で使われる Diffie-Hellman パラメーターを含むファイルを指定できる。
このパスが /. から始まっていない場合、 private dirからの相対パスとなる。
既定値: tls dh params file
=
このオプションは、RSA プライベートキーが含まれている (PEM形式の)ファイルを設定出来る。このファイルはパスフレーズ なしでアクセス可能でなければならない。すなわち、暗号化しては ならない。
このパスが /. から始まっていない場合、 private dir からの相対パスとなる。
既定値: tls keyfile
= tls/key.pem
このオプションは、特に、AD DC において、GnuTLS を使う Samba の一部でサポート されるTLSプロトコルを記述した文字列に設定出来る。
既定値は HTTPS アプリケーション 中で SSLv3 を使う事に影響する、 CVE-2014-3566 (POODLE とも言われる)以降、もはや安全とは言えなくなった SSLv3 を無効にする。
文字列は GnuTLSの既定の優先リストに追加される
正しいオプションは GNUTLS Priority-Strings documentation at http://gnutls.org/manual/html_node/Priority-Strings.html に説明がある。
SSL3.0 プロトコルは無効となった。
既定値: tls priority
= NORMAL:-VERS-SSL3.0
これは、クライアントが、厳格にピアの証明書と名前を検査するか、
行う場合はどのように行うかを制御する。
設定可能な値は(昇順に)以下の通り:
no_check
、
ca_only
、
ca_and_name_if_available
、
ca_and_name
と
as_strict_as_possible
。
no_check
に設定した場合、証明書は全く検査されず、
そのため、典型的な中間者攻撃を許してしまう。
ca_only
に設定した場合、証明書は
tls ca fileオプション中で指定された CA からの署名で
検証される。
有効なファイルにtls ca fileを設定することが要求される。
証明書の有効期間も検証される。もしも、tls crl file
オプションが設定されている場合、証明書は CA CRL に対しても検証される。
ca_and_name_if_available
に設定した場合、
ca_only
が規定するすべての検査が実行される。更に追加で、
アプリケーションレイヤで提供され、IPアドレス文字列として与えられてない場合、
証明書の名前に対するピアのホスト名が検証される。
ca_and_name
に設定した場合、
ca_and_name_if_available
が規定するすべての検査が実行される。
更に追加で、IP アドレスが、証明書の名前として検査されたとしても、
ピアのホスト名が提供されることが要求される。
as_strict_as_possible
に設定した場合、
ca_and_name
が規定するすべての検査が実行される。
更に追加で、tls crl file が設定されていることが
要求される。将来の Samba のバージョンでは、更に追加の検査が実装されるかもしれない。
既定値: tls verify peer
= as_strict_as_possible
Samba が動作する UNIX マシンで使われている文字コードを指定する。 この情報は、Samba が SMB クライアントの使用している文字コードと文字列の変換を行なうために必要である。
ここで設定した文字コードは、Samba から実行するスクリプトの引数にも用いられる。
既定値: unix charset
= UTF-8
例: unix charset
= ASCII
この真偽値パラメーターにより、 smbpasswd ファイルの暗号化された SMBパスワードの更新時に、
Samba が UNIX のパスワードを SMB パスワードと同期させるようになる。
これを yes
に設定した場合、
(SMB パスワードの変更コードは古い平文パスワードを参照できず、新しいパスワードだけが渡されるため、)
新しい UNIX パスワードを古いパスワードの情報なしで設定するため、
passwd program
パラメーターで指定されたコマンドが
ROOT 権限で呼び出される。
このオプションは、samba
が
Active Directory ドメインコントローラとして動作している場合は無効であり、
その場合、password hash gpg key idsオプションと
samba-tool user syncpasswords
コマンドを
参照されたい。
既定値: unix password sync
= 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 サーバー上のプリンター共有に対して、このパラメーターを有効にしてはならない。
既定値: use client driver
= no
このグローバルパラメーターは、 Samba が内部的に利用する tdb の動作を、システムの mmap が正しく動作するかどうかに依存させるかどうかを制御する。
Samba は一貫性の保たれた mmap (read-write system memory cache) を必要とする。
現在、OpenBSD と HPUX については、こうした一貫性のあるキャッシュが実装されていないため、
他のプラットフォームでは、このパラメーターは、効果的にno
に
なるように、内部的に上書きされている。
それ以外のシステムにおいては、このパラメーターの値を変更すべきではない。
このパラメーターは、Samba 開発者の tdb の内部コードの問題解析を支援するために提供されている。
既定値: use mmap
= yes
このオプションは、 DOS クライアントの多くが送信する大文字化されたユーザー名から、 Samba が本当の UNIX のユーザー名を「推測」する際の手助けを行う。 デフォルトの場合、 Samba は全て小文字のユーザー名、 先頭の文字のみを大文字にしたユーザー名を順に試しても、 UNIX マシン上に該当するユーザー名がない場合は処理を失敗させる。
このパラメーターに 0 以外の値を指定することで、この処理を変更できる。
このパラメーターは、UNIX 側のユーザー名を確認する際に大文字が幾つ入ったユーザー名の組合せまで確認を行なうかを決定するものである。
大きい数字を指定する程、多くの組合せが確認されるため、
ユーザー名の確認作業は遅くなる。
このパラメーターは、UNIX マシン上に
AstrangeUser
といった名前が存在する際に使用すること。
このパラメーターは、ユーザー名の大文字、小文字が区別される UNIX システムでのみ必要である。
既定値: username level
= 0
例: username level
= 5
このオプションにより、クライアント上とサーバー上でのユーザー名のマッピング 情報を格納したファイルが指定される。これは幾つかの目的で利用される。 通常は DOS や Windows マシンでユーザーが利用しているユーザー名を UNIX マシン上でのユーザー名にマッピングする為に用いられるが、 複数のユーザーを特定のユーザー名にマッピングすることで、 ユーザー間でのファイル共有を簡単に行なえるようにするために用いることも可能である。
security パラメーターが user の場合、username map パラメーターは ユーザーの資格情報が検証されるたびに適用されることに注意。 ドメインのメンバーサーバー(domain もしくは ads)の場合、ドメインコントローラーから認証を受けた後で username map パラメーターが適用され、マッピングの際には、完全ユーザー名 (例えば biddle = DOMAIN\foo) で記述する必要がある。
ファイルは各行ごとに評価される。各々の行は、左端に UNIX ユーザー名が あり、'=' を挟んでその右側にユーザー名のリストが続く形式をとる。 右側のユーザー名のリストには、グループ内のすべての UNIX ユーザー名に一致させる @group という形式を含めることもできる。 '*' はワイルドカードであり、任意の名前と一致する。 ファイルの各行は最大 1023 文字まで記述可能である。
ファイルの評価は、 提供されたユーザー名と '=' の右側の各ユーザー名とを各行毎に比較することにより行なわれる。 提供されたユーザー名が右側のどれかに一致すると、 提供されたユーザー名が一致したユーザー名に置き換わり、 引続き以降の行の処理が行なわれていくことになる。
'#' や ';' で始まる行は無視される。
'!' で始まる行があると、 以降の行でユーザー名が一致した時点で比較処理は中止される。 それ以外の場合、この比較処理はすべての行に対して継続される。 ファイルの最後でワイルドカードによるマッピングを行なっている場合には、 '!' を使うとかなり便利である。
たとえば、admin
や
administrator
といった名前から UNIX の root
へのマッピングを行ないたい場合は、以下のように記述する:
root = admin administrator
また、UNIX の system
グループに所属するユーザーを
sys
という UNIX ユーザーに置き換えるには、以下のように記述する:
sys = @system
username map のファイル中には幾つのマッピングの設定を行なっても構わない。
使用するシステムが NIS NETGROUP オプションをサポートしている場合は、グループが
一致しているかを調べるため、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
のものを入力することが必要になる。この唯一の例外は、(設定している場合に)
ドメインコントローラーに対してユーザー名を送出するときである。
ドメインコントローラーは、
クライアントが提供したユーザー名を置換なしでそのまま受け取る。
逆のマッピングは行われないことにも注意。この影響が現われるのは印刷時である。 Windows for Workgroup におけるプリントマネージャは、 置き換えが行われたユーザーが印刷ジョブを所有していないと判断するため、 印刷ジョブ削除時にトラブルが発生する。
Samba 3.0.8 より前のバージョンでは、Kerberos ログインが行なわれる場合にのみ、
完全ユーザー名(たとえば: DOMAIN\user
)がサポートされていた。
しかし、NTLM[SSP] によるユーザー認証の際には、ユーザー名部分のみがマッチングの対象と
なっていた。このため、同一のサーバーに対するアクセスで、結果が一致しないという事態
が発生していた。
以下の機能は、Samba 3.0.8 以降のものである。
ローカル認証の場合、username map パラメーターは、コネクションに対する認証が行なわれる際のユーザー名に対して適用される。
認証を外部のドメインコントローラーに依存している場合、 smbd は username map パラメーターを、ユーザー認証が成功した場合にのみ、認証された完全ユーザー名(例: DOMAIN\user) に対して適用する。
以下に設定例を示す:
username map = /usr/local/samba/lib/users.map
既定値: username map
=
# no username map
Samba のusername mapあるいは username map scriptによるユーザー名の マップ機能は、相対的に負荷がかかる場合がある。 ユーザーのログイン中に、マッピングはしばらくの時間かかる。 username map script呼び出し中、 特に外部のデータベースを呼び出ししなければならない場合には、 スローダーウンする可能性がある。
パラメーターusername map cache time はマッピングキャッシュを制御する。もしも秒数が指定されると、 username map ファイルまたはスクリプトからのマッピングは効率よく キャッシュされる。既定値は0で、キャッシュを使わない。
既定値: username map cache time
= 0
例: username map cache time
= 60
このパラメーターは username map パラメーターと排他的な関係にある。 このパラメーターは、(認証要求で渡されたユーザー名を示す)コマンドライン引数を1つだけとり、 標準出力に(マッピングされたアカウント名を示す)文字列を1行返却する 外部プログラム、もしくはスクリプトを指定する。 これにより、ユーザー名のマッピング表を LDAP ディレクトリサービス上に格納することが可能となる。
既定値: username map script
=
例: username map script
= /etc/samba/scripts/mapusers.sh
このパラメーターは、ユーザー定義共有に認証されていないユーザーのアクセスを許可するかどうかを制御する。
これは、ユーザーが共有の定義において
guest ok = yes
オプションを付与した共有を作成することの許可と同義である。
セキュリティ上注意を要するため、既定値は無効となっている。
既定値: usershare allow guests
= no
このパラメーターは(訳注: usershare path パラメーターで定義された) ユーザー定義共有ディレクトリの所有グループに所属するユーザーによって作成可能なユーザー定義共有の最大数を設定する。 0 (デフォルト) の場合、ユーザー定義共有は作成できない。
既定値: usershare max shares
= 0
このパラメーターは、ユーザー定義共有として公開されるパスが、 ユーザー定義共有を作成しようとしているユーザーの所有であることを 必須とするかどうかを制御する。 必須とした場合 (既定値) 、smbd は公開しようとしているディレクトリが、 ユーザー定義共有の設定ファイルの所有者と同一であることを確認し、 もし異なっていた場合は作成を拒否する。 必須としなかった場合、こうした確認は行なわれず、誰が所有しているかに 関わらず、ディレクトリの公開が可能となる。
既定値: usershare owner only
= yes
このパラメーターにより、ユーザー定義共有の設定ファイルが格納されるファイルシステム上のディレクトリの絶対パスが指定される。 このディレクトリは root の所有でなければならず、その他(other)がアクセス可能であってはならず、グループの所有者のみが書き込み可能となっている必要がある。 加えて、ファイルの所有者による名前の変更と削除を制限するため、「sticky」ビットが設定されている必要がある (これは /tmp ディレクトリに対して通常行なわれる設定と同義である)。 このディレクトリのグループ所有者が、ユーザー定義共有を作成可能なユーザーとなる。
一例として、ユーザー定義共有のディレクトリを /use/local/samba/lib/usershares に設定する場合、以下のようにする。
ls -ld /usr/local/samba/lib/usershares/ drwxrwx--T 2 root power_users 4096 2006-05-05 12:27 /usr/local/samba/lib/usershares/
この場合、「power_users」グループのメンバーのみがユーザー定義共有を作成できる。
既定値: usershare path
= ${prefix}/var/locks/usershares
このパラメーターには、ユーザー定義共有による共有を許可する絶対パス名のリストを指定する。 共有しようとしているパス名の先頭がこのリストに指定されたパス名のいずれかと合致していない場合、公開は許可されない。 これにより、Samba の管理者がユーザー定義共有による公開を可能とするディレクトリを制限することが可能となる。
「usershare prefix deny list」と「usershare prefix allow list」の両方が定義されている場合は、 拒否リスト側が先に処理され、後から許可リストが処理される。 これにより、拒否リストによる制限を優先している。
既定値: usershare prefix allow list
=
例: usershare prefix allow list
= /home /data /space
このパラメーターには、ユーザー定義共有による公開を拒否する絶対パス名のリストを指定する。 公開しようとしているパス名の先頭がこのリストに指定されたパス名のいずれかと合致している場合、公開は許可されない。 このリストに指定されたパス名のいずれとも合致していないパス名から始まるパス名は、ユーザー定義共有として公開を許可することができる。 これにより、Samba の管理者がユーザー定義共有による公開を可能とするディレクトリを制限することが可能となる。
「usershare prefix deny list」と「usershare prefix allow list」の両方が定義されている場合は、 拒否リスト側が先に処理され、後から許可リストが処理される。 これにより、拒否リストによる制限を優先している。
既定値: usershare prefix deny list
=
例: usershare prefix deny list
= /etc /dev /private
ユーザー定義共有では、path 、 guest ok といった幾つかのパラメーターしか設定できないが、 このパラメーターにより、ユーザー定義共有を既存の共有から「複製」することが可能となる。 「usershare template share」に既存の共有名が設定されていた場合、作成されるすべてのユーザー定義共有では、既定値としてこの共有に設定されたパラメーターが用いられる。
対象となる共有には、「-valid = False」の設定をテンプレートの設定として行なっておくことで、実際のファイル共有として機能しないようにしておくことができる。 これにより、ユーザー定義共有のテンプレートとして用いつつ、その共有が実際に公開されないようにできる。
既定値: usershare template share
=
例: usershare template share
= template_share
このパラメーターが yes
であり、
かつ Samba の動作する OS で sendfile()
システムコールがサポートされている場合、いくつかの SMB read コール
(主に ReadAndX と ReadRaw) において排他的 oplock が行なわれている
ファイルに対して効率的な sendfile システムコールが使用される。
これにより、システムの CPU の効率的な使用が行なわれ、 Samba の動作も高速化するだろう。
Samba は NT LM 0.12 未満のプロトコルを用いるクライアントや
Windows 9x ( Linux から sendfile を用いると、これらのクライアントの
処理が失敗する) に対しては、自動的にこのオプションを無効にする。
既定値: use sendfile
= no
この真偽値パラメーターは、
Sambaが --with-utmp
オプションで
configure され、コンパイルされた時にのみに有効である。
このパラメーターを yes
に設定することで、
Sambaは utmp または utmpx レコード(UNIXシステムに依存)に、
Sambaサーバーへの接続時の情報を追加するようになる。
このパラメーターにより、
Sambaの共有への接続を記録することが可能になる。
utmp レコードの仕様のため、接続する個々のユーザー毎に一意な識別子が生成されている必要がある。 この、オプションを有効にすることで、 n^2 アルゴリズムを使ってその番号を検索する処理が発生する。 大規模システムの場合、この処理がパフォーマンスに影響を与える場合も考えられる。
既定値: utmp
= no
このパラメーターは、
Samba が --with-utmp
オプションで
構成され、コンパイルされた時にのみに有効である。
このパラメーターは、
Samba サーバーへの接続を記録する utmp または utmpx ファイル
(UNIX システムに依存)が存在するディレクトリを指定する。
デフォルトではこの値は設定されない。
この場合、システムが利用している utmp ファイルが使われる
(Linux の場合、通常
/var/run/utmp
にある)。
既定値: utmp directory
=
# 自動的に決定される
例: utmp directory
= /var/run/utmp
このパラメーターは、共有が有効であり、使用可能かどうかを制御する。 このパラメーターを false に設定した場合、いかなる方法を用いても、共有を表示したり、共有に対してアクセスしたりすることができなくなる。
このオプションは一般ユーザーが利用すべきものではなく、開発者の利便性のために設けられている。 Samba はこのオプションを内部的に用いて、共有が削除されたことを記録している。
既定値: -valid
= yes
サービスにアクセスできるユーザーのリストを指定する。
'@' 、 '+' と '&'から始まる名前は、
invalid users
パラメーターで説明した規則にしたがって解釈される。
このパラメーターが設定されていない場合(既定値)、どのようなユーザーでもログインできる。このリストと
invalid users
の両方に含まれるユーザーのアクセスは拒否される。
%S
は、現在のサービス名に置き換えられる。
これは [homes] セクションで用いると便利である。
注意:[global]セクション中で使った場合、このパラメーターは
予期しない副作用を引き起こす。たとえば、Sambaがマスターブラウザー(
local master
,
os level
,
domain master
,
preferred master
を参照)として設定された
場合、このオプションはワークステーションが、ネットワークのブラウズができるように
する事を妨害する。
既定値: valid users
=
# 有効なユーザーリストがない(誰もログインできる)
例: valid users
= greg, @pcusers
このパラメーターは、 一覧することもアクセスすることもできないファイルとディレクトリのリストを指定する。 リストの各エントリは '/' で区切ること。これにより、 エントリ中に空白文字を用いることが可能になっている。 '*'と '?'は DOS のワイルドカードと同様、 複数のファイルやディレクトリを指定するために利用できる。
各エントリは DOS の形式ではなく、 UNIX でのパス形式である必要があり、 UNIX のディレクトリ区切りである '/'を含めてはならない。
case sensitive オプションが、この処理に影響することに注意。
veto files パラメーターの利用に際して注意すべき重要な点が、
ディレクトリ削除時の動作である。
削除されるディレクトリに veto files パラメーターに一致するファイルが存在する場合、
delete veto files パラメーターが
yes
でない限り、削除は失敗する。
このパラメーターを設定した場合は、 ファイルやディレクトリの一覧を取得する際、 すべてのファイルとディレクトリについて、 このパラメーターのマッチング処理が行なわれるようになるため、 Samba の性能に影響が発生する。
以下に設定例を記載する:
; 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/
既定値: veto files
=
# アクセスできないファイルやディレクトリはない
このパラメーターは、 oplocks パラメーターが有効になっている共有でのみ意味がある。 Samba の管理者は、このパラメーターを使って リストにマッチしたファイルに対する oplock を禁止することができる。 リストは veto files パラメーターで利用されているものと同様の形式である。
クライアントによるロック競合が激しいファイルに対して、
このオプションを適用したいということがあるだろう。
例としては NetBench SMB ベンチマーク・プログラムがある。
このプログラムは 「.SEM」
で終わる名前のファイルに対して激しい競合を発生させる。
これらのファイルに対する oplock を禁止するためには、
以下の設定例のように指定する
([global] セクションか、
Net Bench 用の共有のいずれかにおいて)。
以下に設定例を示す。
veto oplock files = /.*SEM/
既定値: veto oplock files
=
# oplock 取得を禁止されるファイルやディレクトリはない
このパラメーターは、 Samba の VFS I/O 操作において用いられるバックエンド名を指定する。 デフォルトでは通常のディスク I/O 操作が行なわれるが、 VFS オブジェクトによりこの操作を変更 することが可能である。このパラメータを定義すると、vfs objects の以前のパラメータの定義を 上書きすることに注意。
既定値: vfs objects
=
例: vfs objects
= extd_audit recycle
このパラメーターにより、共有のボリュームラベルの設定が可能になる。 これは、特定のボリューム名が必要なインストールプログラムを格納した CD-ROM を共有する際に便利である。
既定値: volume
=
# the name of the share
これにより、共有に対して報告されたボリュームシリアル番号 (32ビット値) を上書きできる。
特別な値 -1 (既定値) は、各共有にstands for 対して計算された一意の値を意味する。
既定値: volume serial number
= -1
例: volume serial number
= 0xabcdefgh
このパラメーターは、 UNIX ファイルシステム上のリンクをサーバーが追跡するかどうかを制御する。 サーバーが公開するディレクトリツリー内部へのリンクは、 常に許可されている。このパラメーターは、 公開されているディレクトリツリー外部へのアクセスを制御する。
注意:UNIX extension が有効の時にこのパラメーターを on にすると、 共有定義によってエクスポートされた、制限されたパスの外側に 対する、ファイルやディレクトリのポインターを共有上に、シンボリックリンク として UNIX クライアントが作成できるようになる。これにより、共有外部の 領域に対してアクセス出来るようになる。この問題のため、このパラメーターは unix extensionsオプションがonの場合は、 (その旨をログに記録して)自動的に無効となる。
2つのパラメーター間での連携を変更したいのであれば、 allow insecure wide linksパラメーターも 参照のこと。
既定値: wide links
= no
このパラメーターにより、 winbindd(8) デーモンが Windows NT Server に問い合わせを行なう代わりに、キャッシュしたユーザーとグループの情報を 使用する時間を秒単位で指定する。
この設定は認証要求には適用されない。認証要求は winbind offline logonオプションが有効に されない限り、常にその度ごとに処理される。
既定値: winbind cache time
= 300
この設定は、winbind のソケットの位置を制御する。
自動テストスクリプトをのぞき、クライアントツール(nss_winbind など)が、 このパラメーターを受け取らないため、これを変更すべきではない。クライアントツールは WINBINDD_SOCKET_DIR 環境変数で、パスを変更するようにしなければならない。
既定値: winbindd socket directory
= ${prefix}/var/run/winbindd
非常に大規模な環境において、 winbindd(8) を使用する際には、 setgrent()
、
getgrent()
、
endgrent()
といった
システムコール群の呼び出しによるグループの一覧取得を抑止する
必要があるかも知れない。
winbind enum groups
パラメーターが no
の場合、 getgrent()
システムコールの呼び出しは、全くデータを返却しない。
グループ一覧(enumeration)を無効にするとプログラムによっては異常動作を引き起こす恐れがある。
既定値: winbind enum groups
= no
非常に大規模な環境において、 winbindd(8)を使用する際には、
setpwent()
、
getpwent()
や
endpwent()
といったシステムコール群の呼び出しによるユーザーの一覧取得を抑止する必要があるかも知れない。
winbind enum users
パラメーターが
no
の場合、 getpwent
システムコールの呼び出しは、全くデータを返却しない。
ユーザー一覧(enumeration)を無効にするとプログラムによっては 異常動作を引き起こす恐れがある。 例えば、finger プログラムは、全てのユーザーの一覧にアクセスできる前提で、 ユーザー名のマッチングを行なっている。
既定値: winbind enum users
= no
このオプションは Windows ドメイングループのネストされた グループメンバーを展開する際に winbindd が探索を繰り返す 最大の階層を制御する。 これは ローカルグループのネスト化を Windows NT4 形式で実装している winbind nested groups オプションとは 異なる。 "winbind expand groups" パラメーターはドメイングループの メンバーシップを明確に適用する。
このオプションは、ネストされていない、Windows のドメインユーザの グループメンバシップの戻り値にも影響する。新しい既定値 "winbind expand groups = 0" を使うと、winbind はグループメンバシップの 問合せをしない。
このパラメーターに高い値を設定することは、最上位の winbindd デーモンがグループの展開を処理しなければならず、その間、 NSS や認証要求に対する応答が不可能となるために、システムの 性能低下をもたらすことに注意すること。
既定値は Samba 4.2 で 1から0に変更となった。いくつかの 不正なアプリケーション(いくつかの、newgrp と sg の実装を含む)は、 グループを検索して、ユーザがどこの グループにいるかを調べるが、そのようなアプリケーションは、 "winbind expand groups = 1" を必要とする。しかし、新しい既定値は、 信頼されたドメインの、ドメインコントローラに対する SAMR アクセスを 必要としないので、winbind の信頼性を向上させる。
既定値: winbind expand groups
= 0
信頼されたドメインのうち、winbind が無視する(信頼しない)ものを設定する。 これはリソースのオーバーヘッドを回避するものであり、通信を行っていない DC へログインしないようにする。
既定値: winbind:ignore domains
=
例: winbind:ignore domains
= DOMAIN1, DOMAIN2
このパラメーターは、winbindd(8)デーモンが接続可能な 最大クライアント数を指定する。 パラメータはハードリミットではない。winbindd(8)デーモンは、それ自身、 たくさんの接続を受け取れるように設定され、制限に達した場合は、アイドルクライアント を切断することが行われる。
既定値: winbind max clients
= 200
このパラメーターは、winbindd(8)デーモンが、1つのドメインの ドメインコントローラーに対してオープンすべき最大同時接続数を 指定する。 このパラメーターの値を1より大きくすると、いくらか遅い場合、 大量の同時 winbind 要求に対してスケーラビリティを改善できる。 このパラメータを変更する時には winbindd の再起動が必要である。
もしも、winbind offline logon
がYes
の場合、この設定をしても、
ドメイン単位に1つの DC 接続のみが許可されることに注意。
既定値: winbind max domain connections
= 1
例: winbind max domain connections
= 10
このパラメーターを yes にすると、グループの入れ子が可能になる。 入れ子になるグループは、ローカルグループやエイリアスと呼ばれる。 これは、Windows のローカルグループに対応するものである。 入れ子になるグループは、各マシンローカルで定義され (ただしドメインコントローラー間では SAM を共有するため共有され)、 信頼される任意の SAM で定義されたユーザーやグローバルグループを 含めることができる。 入れ子になるグループを用いるには、nss_winbind を有効にしておく 必要がある。
既定値: winbind nested groups
= yes
このパラメーターは、winbindd がユーザー名やグループ名に含まれる 空白をアンダースコア「_」に置き換えるかどうかを制御する。 例えば、"Space Kadet" という名前が、"space_kadet" という文字列に置き換えられるべきかどうかということを意味する。 シェルの既定値のフィールドセパレーターが空白であるため、 Unix のシェルスクリプトは空白を含むユーザー名を扱うことが難しい。 もしあなたのドメインでアカウント名にアンダースコアを含む場合、 このオプションを有効にしてはならない(nss_infoプラグインで名前の エイリアス機能がサポートされている場合を除く)。
この機能は、認証されていないドメインユーザーとグループの名前の エイリアスを作成する API も提供する。特定の設定に関する idmap や nss プラグインの仕様についてはマニュアルページを参照のこと。エイリアス の設定は、前述の「空白文字の制御」と排他的な関係である。
既定値: winbind normalize names
= no
例: winbind normalize names
= yes
このパラメーターは、Winbind が Name Service Information からユーザーの ホームディレクトリやログインシェルの情報を取得する方法を指定する。 現在のところ、以下の値が利用できる:
template
- 既定値であり、template shell
および template homedir
パラメーターの値を用いる。
<sfu | sfu20 | rfc2307 >
- Samba が security = ads で実行されており、
Active Directory の DC が Microsoft Services for Unix (SFU)
の LDAP スキーマをサポートしている場合、Winbind 機構は
ログインシェルおよびホームディレクトリ属性を DC から
直接取得する。 SFU 3.0 あるいは 3.5 の場合は単純に "sfu" を
選択し、 SFU 2.0 の場合は "sfu20" を選択すること。
idmap バックエンド idmap_ad では、それらの設定を idmap 構成セクション中に記述しなければならない。 使用している idmap バックエンドの説明をよく読むこと。
既定値: winbind nss info
= template
例: winbind nss info
= sfu
このパラメーターは、Winbind 機構で pam_winbind
モジュールにキャッシュされた資格情報を用いたログインを可能に
するかどうかを指定する。 有効にした場合、winbindd は、ログインに
成功したユーザーの資格情報を、暗号化してローカルのキャッシュに
格納する。
既定値: winbind offline logon
= no
例: winbind offline logon
= yes
このパラメーターはwinbindd(8)デーモンがドメインコントローラー に接続できない場合に再接続要求を行う間隔を秒単位で指定する。
既定値: winbind reconnect delay
= 30
このパラメーターは Winbind 機構が pam_winbind
モジュールから取得した Kerberos チケットをリフレッシュするかどうかを制御する。
既定値: winbind refresh tickets
= no
例: winbind refresh tickets
= yes
このパラメーターはwinbindd(8)デーモンが、 クライアントとの接続状態に未処理の要求がない場合、あるいは、 ここで指定した秒数よりも長くクライアント接続要求が処理状態 (ハングアップ)になっている時に、切断するまで待つ秒数を指定する。
既定値: winbind request timeout
= 60
このパラメーターをyes
に
設定すると、winbindd がドメインコントローラーから情報を取得する際に、
LDAP の代わりに RPC を利用する。
既定値: winbind rpc only
= no
このオプションは、security オプションが
domain
または ads
に設定されている場合にのみ
有効となる。yes に設定すると、winbindd は
新しい信頼するドメインのスキャンを定期的に行い、winbindd 中のグローバルリストに
追加する。リストは wbinfo --trusted-domains --verbose
を
使うことで抜き出すことが出来る。yes に設定すると、Samba 4.7 以前の動作に一致する。
グローバルリストの構築は信頼できるものではなく、複雑な信頼関係では
しばしば不完全になる。多くの環境では winbindd が正常動作する上でこのリストは
不要である。たとえば、一般的な SMB ファイルサーバーサービスを
autorid
, tdb
または
ad
による単純な idmap 設定を
用いて実装している環境が挙げられる。
しかし、ある種の複雑な設定ではリストを必要とする。たとえば、
idmap バックエンドを特定のドメインに対して指定する場合などである。
いくつかの pam_winbind 設定では、グローバルリストを要求するものもある。
グローバルリストを必要としない設定をするならば、 winbind scan trusted domains = no に設定すべきである。
既定値: winbind scan trusted domains
= no
このオプションは、winbind からドメインコントローラに pipe を使う任意の要求が 保護されるかを制御する。保護を無効にすると、デバッグには便利である。
動作は、'winbind sealed pipes:NETBIOSDOMAIN = no' オプションを使うことに よって、netbios ドメインごとに制御出来る。
既定値: winbind sealed pipes
= yes
このパラメーターは、 DOMAIN
\user
の形式でユーザー名を表示する際に使用される区切り文字を指定する。
このパラメーターは UNIX のサービスが pam_winbind.so
および nss_winbind.so
モジュールを
使用する時のみ適用される。
+ 文字は NIS において /etc/group 中で特別な意味を持っているため、 このパラメーターを + に設定した場合、少なくとも glibc システムにおいては 問題が発生することに注意。
既定値: winbind separator
= \
例: winbind separator
= +
このパラメーターにより、 winbindd(8) デーモンが、ドメイン名が 付加されていないユーザー名を扱う方式が指定される。 ドメイン名が付加されていないユーザーは、winbindd サーバーのドメイン のものとして扱われる。 Windows ユーザーにとっては、どちらでもよい話であるが、 SSH, FTP や e-mail を利用する際に、 UNIX システム本来のやり方に近い方法で 指定することが可能となる。
もしも可能であればこのオプションは使うべきではない。これは ユーザーやグループへの応答性について混乱を引き起こす可能性がある。 多くの場合、winbind か /etc/passwd がユーザーに、さらにはグループに対して 権限があるように見られるべきと言うことは明確ではない。
既定値: winbind use default domain
= no
例: winbind use default domain
= yes
winbindd は、krb5_auth or wbinfo -K/--krb5auth= を使う ように、kerberos チケットを取得できる。
(少なくともドメインメンバでは) winbindd は (DCによって管理される) 完全な信頼トポロジ構成を持てない。uPNSuffixes と msDS-SPNSuffixes の値が 存在する可能性があるが、それらはどの AD ドメインにも属していない。
winbind scan trusted domains = no を使う事により、winbindd は完全なトポロジ構成を取得しない。
信頼トポロジについて知る必要はない。プライマリドメイン(たとえば PRIMARY.A.EXAMPLE.COM)の[K]DC に依存するだけであり、たとえば、 upnfromB@B.EXAMPLE.COM@PRIMARY.A.EXAMPLE.COM のようなエンタープライズ プリンシパルを使い、正しいDCを探すためにWRONG_REALM リファラルに従う。 最終とキナプリンシパルは userfromB@INTERNALB.EXAMPLE.PRIVATE かもしれない。
winbind use krb5 enterprise principals = yes とすると、winbindd エンタープライズプリンシパルが使われる。
既定値: winbind use krb5 enterprise principals
= yes
例: winbind use krb5 enterprise principals
= no
これは、ローカルに登録された winsRecord-objects の、 winsOwner 属性中に格納されるアドレスを指定する。 既定値は、最初のネットワークインタフェースの IP アドレスである。
既定値なし
Samba が WINS サーバーとして動いている場合、このオプションによって、 WINS データベースに対して変更が行なわれる度に外部のプログラムが起動されるようになる。このオプションの主な目的は、ダイナミック DNS のような外部の名前解決データベースの動的な更新を実現することである。
wins hook パラメーターは、以下の形式で呼びだされるスクリプト又は実行形式のプログラムを指定する。
wins_hook operation name nametype ttl IP_list
最初の引数は操作の指定であり、 "add", "delete", "refresh" のいずれかを取る。 ほとんどの場合、残りのパラメーターで提供される情報が不足している場合、操作は無視される(訳注: sufficient は insufficient の typo と思われる)。 "refresh" は名前がまだ追加されていない時点で呼び出されることがあるので注意。この場合操作は add として扱われる。
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 サーバーを指定すべきである。
複数の名前空間が存在している場合、各々の WINS サーバーに「タグ」をつけることが可能である。同じタグのついたサーバー内では 1 台の(動作中の)サーバーに対してのみ、名前の問い合わせが行なわれる。タグはコロンによって IP アドレスと区切られる。
複数のサブネットからなるネットワークで、サブネット越しのブラウジングを正しく機能させたい場合は、 Samba で WINS サーバーの設定を行なう必要がある。
Samba3-HOWTO の Network Browsing 章を参照のこと。
既定値: wins server
=
例: wins server
= mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61
# この例では、名前の問い合わせを行なう際に、 192.9.200.1 に最初に問い合わせが行なわれる。応答がなかった場合は、 192.168.2.61 に問い合わせが行なわれる。いずれのサーバーからにも名前が存在しなかった場合、 192.168.3.199 に対して問い合わせが行なわれる。
例: wins server
= 192.9.200.1 192.168.2.61
この真偽値パラメーターにより、 Samba の nmbd(8) プロセスを WINS サーバーして機能させるかどうかが設定される。複数サブネットに及ぶネットワークを構築しており、いずれかの nmbd
を WINS サーバーとして機能させようとしない限り、このパラメーターを yes
にしないこと。
ネットワーク上の複数のマシンで、このパラメーターを yes
に設定することが絶対にないように注意すること。
既定値: wins support
= no
これは、クライアントが問い合わせを行なった際に、 サーバーが表示されるワークグループを設定する。 このパラメーターにより、 security = domain の設定におけるドメイン名も設定されることに注意。
既定値: workgroup
= WORKGROUP
例: workgroup
= MYGROUP
wins.ldb の変更をチェックし、通知をプッシュパートナー先に送信する処理の、 秒単位でのスケジュール間隔の最大値である。 また、 wins_config.ldb の変更はその間隔でチェックされ、パートナー設定の再ロードが 行われる。
既定値: wreplsrv:periodic_interval
= 15
このパラメータを有効にすると、明示的 (クライアントから) および 暗黙 (scavenging 経由) な名前の開放は、他のアドレスがアクティブであっても、 他のサーバに直接伝達され、SPECIAL GROUP (2) と MULTIHOMED (3) エントリに 適用される。また、SPECIAL GROUP (2) に対するレプリケーション衝突マージアルゴリズムは、 アドレスが以前にローカルに格納されていない場合、アドレス所有者がローカルサーバで あるレプリカアドレスを廃棄する。マージ結果はアドレスが廃棄された場合には、 直接伝達される。Windows サーバは、SPECIAL GROUP (2) とMULTIHOMED (3) エントリの 名前開放を伝達しない。すなわち、Windows サーバは、SPECIAL GROUP (2) と MULTIHOMED (3) 名に対する名前の問い合わせに対する結果は異なったものを返す場合がある。 オプションは、Windows サーバがあれば大きなの影響はないが、予期しない結果が返る ことに注意して欲しい。
既定値: wreplsrv:propagate name releases
= no
これは、WINSデータベースのクリーンアップと、満了した名前レコードの ステータス変更を行う scavenging 実行の、秒単位での間隔である。 既定値は wreplsrv:renew_interval の半分である。
既定値なし
このオプションは、データベースから、tombstone レコードを削除するまでに 起動し続けることが必要な時間を秒単位で指定する。既定値は 3日である。
既定値: wreplsrv:tombstone_extra_timeout
= 259200
WINSサーバの開放されたレコードが tombstone になるまでの間隔を 秒単位で指定する。既定値は6日である。
既定値: wreplsrv:tombstone_interval
= 518400
所有しているWINSサーバで有効なレプリカレコードを検査するまでの時間を 秒単位で指定する。ただし、これはまだ実装されていない。 既定値は 24 日である。
既定値: wreplsrv:verify_interval
= 2073600
これは、サービスに対して読みとりおよび書き込み権が与えられるユーザーのリストである。 接続したユーザーがこのリストに存在している場合は、 例え read only オプションが no であっても書き込み権が与えられる。このリストには、 @group という形式を用いることでグループ名を含めることもできる。
既定値: write list
=
例: write list
= admin, root, @staff
この機能は、raw write SMB 要求とは互換がないため、 async smb echo handlerが設定されている場合、無視される。
もしも有効にした場合、raw書き込みは、1つのパケット中で65535バイトの書き込みが できる。これは通常、非常に古いクライアントに対して、顕著なパフォーマンスの向上に なる。
しかし、許可されるブロックサイズを不正にネゴシエートしたり、 大きなブロックサイズをサポートしないクライアントがあるが、 それらのクライアントに対しては、raw 書き込みを無効にすべきである。
一般的に、このパラメータはシステムチューニングツールとして見るべきであり、 変更しないことを強く推奨する。
既定値: write raw
= yes
wsp property file パラメータ。 このパラメータは、追加の WSP Windows 検索プロトコルプロパティが 格納されるファイルを指定する。ファイルの形式は、カンマで区切られた 10列で構成されるcsvである。最初の3列は必須である。その他の列は 存在することが望ましいが、必須ではない。
プロパティ名、たとえば System.ItemUrl。
プロパティが属するプロパティセットを識別する guid。.
GUID と共にプロパティを一意に識別する番号。
TRUE に設定すると、プロパティにインデックスが作成される。
TRUE に設定すると、プロパティは WSP クエリから行で返されることができるようになる。
Boolean,Buffer,Byte,DateTime,Double,Int32,String,UInt16,UInt32,UInt64 のうちのどれか
格納されるものの最大サイズ。
プロパティが複数の値を持つ場合は TRUE とする。
プロパティが何に使われるかという説明。
既定値: wsp property file
=
このパラメーターは、
Samba が --with-utmp
オプションで
設定され、コンパイルされた時にのみに有効である。
このパラメーターは、Samba サーバーへの接続を記録する wtmp または wtmpx ファイル
(UNIX システムに依存)が存在するディレクトリを指定する。
utmp directory との違いは、ユーザー情報がユーザーのログオフ後も記録され続ける点である。
既定値ではこの値は設定されない。
この場合、システムが利用している utmp ファイルが使われる
(Linux の場合、通常
/var/run/wtmp
にある)。
既定値: wtmp directory
=
例: wtmp directory
= /var/log/wtmp
設定ファイルでは、スペースを含むサービス名も利用できるが、 クライアント側のソフトウェアで禁止されているかもしれない。 文字列比較を行なう際にスペースは常に無視されるため、 問題は発生しないはずであるが、可能性は考慮しておく必要がある。
同様の注意事項として、多くのクライアント、特に DOS クライアントでは、サービス名が最長8文字に制限されている。 smbd(8) にはそのような制限はなく、 こうしたクライアントからの接続要求は、サービス名が切り捨てられてしまう ために失敗することになる。このため、サービス名の長さは、最大 8 文字に制限すべきである。
[homes]
および [printers]
という特殊セクションにより、
管理者の負担を軽減することができるが、デフォルトの設定の組合せ方に
よっては、予期しない設定が行なわれる可能性もある。これらのセクションの
設定を行なう際には、特に注意深く行なうこと。特にスプールディレクトリの
パーミッションが適切であることを確認しておくこと。
samba(7), smbpasswd(8), smbd(8), nmbd(8), winbindd(8), samba(8), samba-tool(8), smbclient(1), nmblookup(1), testparm(1), testprns(1)