idmap_tdb2 — Samba の Winbind 用 idmap_tdb2 バックエンド
idmap_tdb2 プラグインはデフォルトの idmap_tdb バックエンドの代替と なるもので、Samba と CTDB におけるクラスタ環境において winbindd が SID/uid/gid の対応表を格納するのに使われる。
idmap_rid のようなバックエンドはリードオンリーであるが、これは
割り当て機能を持つバックエンドだと言える。つまり、新しいマッピング
を生成するために、新しいユーザやグループの ID を割り当てる必要が
あるということである。(割り当てを受け持つ)アロケータを idmap_tdb2
バックエンド自身が担当することもできるし、idmap_tdb や idmap_ldap
といった他のバックエンドにその処理を依頼することもできる。この機能は
idmap alloc backend
パラメータにより有効となる。
注意:この(もしくは他のアロケータとなりうる)バックエンドで本機能が 動作するためには、デフォルトのバックエンドが書き込み可能でなければ ならない。uid と gid の割り当てに使われる範囲は、"idmap uid" と "idmap gid" で構成されるデフォルトの範囲が使われる。
さらに、書き込み可能な idmap バックエンドを使うすべてのドメインの ために、割り当てを実行できる唯一のグローバルなバックエンドがあるので、 明示的に tdb2 の idmap バックエンドで構成されたドメインは、 同じ範囲をデフォルトの範囲として持つべきである。つまり、グローバルの uid / gid アロケータを使用する必要がある。以下の例を見て欲しい。
バックエンドが割り当て権限を持っていて、かつ利用可能な uid と gid の範囲を定義する。このパラメータが指定されない場合 winbind は フェイルオーバーして、smb.conf の "idmap uid" と "idmap gid" オプションを使う。
tdb2 idmap バックエンドは、id のマッピングをスクリプトで実行するための
smb.conf の idmap : script
オプションをサポート
している。このスクリプトは、以下のコマンドラインオプションを受け付ける
ようになっていなければならない。
SIDTOID S-1-xxxx IDTOSID UID xxxx IDTOSID GID xxxx
またそのスクリプトは、以下のいずれかのレスポンスを1行で返すように なっている必要がある。
UID:yyyy GID:yyyy SID:yyyy ERR:yyyy
注意:SID を UNIX の ID マッピングに対して渡すにあたり、このスクリプトは SID の全範囲をカバーするべきである。そうでないと、スクリプトではカバー されていない SID が、すでにスクリプトで割り当て済みの ID に割り当てられる 恐れがある。
tdb2 がどのようにデフォルトの imapd バックエンドとして使われるかという 例を以下に示す。全ドメインについて適用されるグローバルオプションで idmap の範囲を設定していることがわかる。これと同じ範囲が uid/gid の割り当て の際に使われる。
[global] idmap backend = tdb2 idmap uid = 1000000-2000000 idmap gid = 1000000-2000000