Table of Contents
Samba-3 より Windows のグループ SID と UNIX のグループを関連づける新しいグループ・マッピング機能が 利用できます。net ツールに含まれる groupmap サブコマンドを、 関連づけの管理に使用します。
NT のグループと UNIX のシステム・グループをマッピングするこの新しい機能では、管理者が、どの NT ドメイン・グループを MS Windows クライアントに公開するか決定することができます。デフォルト -1) 以外の値を持つ UNIX のグループにマッピングする NT のグループのみが ドメイン・ユーザー及びグループにアクセスするツールのグループ選択リストに含まれます。
Samba-3 では domain admin group のパラメーターが削除されたので、smb.conf ファイル内ではもう指定しないようにしてください。このパラメーターは一覧されたユーザーに、 ワークステーション上でローカル管理権限を与える Windows グループの Domain Admins メンバーシップを付与するのに使用されていました (デフォルト設定)。
Samba では、管理者が MS Windows NT4/200x グループ・アカウントを作成し、それらを任意に UNIX/Linux のグループ・アカウントと関連づけることができます。
グループ・アカウントは MS Windows NT4 または MS Windows 200x/XP Professional の MMC ツールを使用して 管理することができます。これらのツールを使って自動的に UNIX/Linux のシステム・アカウントを作成するには、 適切なスクリプトを smb.conf で提供する必要があります。このスクリプトがない場合、winbindd が走っている限りは、これらのツールを使って作成された Samba グループ・アカウントは smb.conf ファイル内の idmap uid/idmap gid パラメーターで指定されている ID 範囲内で UNIX UID/GID を割り当てられます。
どちらのケースでも winbindd が動作していない場合は、ローカルで解決可能なグループのみが認識されます。 IDMAP: グループ SID から GID への解決 と IDMAP: GID から対応する SID への解決 をご参照下さい。 IDMAP のグループ・マッピング保存 が示すように net groupmap が NT の SID に対応する UNIX グループの作成に使用されます。
smb.conf のグループ・インターフェース・スクリプトが、直接 UNIX/Linux システムツール (shadow utilities、groupadd、groupdel、groupmod) を呼び出した場合、UNIX/Linux グループ名は、これらのツールが課す制約を受けることを、 管理者は知っていなければなりません。例えば、Engineering Managers グループを MS Windows NT4/200x 式に作成したい場合、同名の UNIX/Linux グループの作成が試みられるわけですが、 ツールが大文字やスペースを認めない場合は、もちろんこの試みは失敗します。
この OS ツールの制約に対しては幾つかの回避策があります。一つは OS の制約に合う UNIX/Linux システム・グループ名を作成し、呼びかけてくる Samba のインターフェースには、UNIX/Linux のグループ ID (GID) を返すようなスクリプトを使う方法です。これは、動的な回避策です。
もう一つの回避策は、手動で UNIX/Linux グループを作成し、また手動で Samba サーバーに MS Windows NT4/200x グループを作成し、そして net groupmap ツールを使ってこの 2 つを互いに関連付けることです。
MS Windows NT4/200x をコンピュータにインストールすると、 インストールプログラムがデフォルトのユーザーとグループを作成し、特に Administrators グループの場合は、必須のシステム・タスクを実行するのに必要な権限をグループに付与します。 例えばローカルマシンの日付や時間を変更したり、実行中のプロセスを止める (又は閉じる) ような権限です。
Administrator ユーザーは Administrators グループのメンバーで、 従って Administrators グループの権限を継承します。joe というユーザーが Administrators グループのメンバーとして作成された場合、 joe は Administrator という名前のユーザーと全く同じ権限を持ちます。
MS Windows NT4/200x/XP マシンがドメイン・メンバーになる場合、PDC の “Domain Admins” グループはワークステーションのローカルの Administrators 管理者グループに追加されます。 Domain Administrators グループのいずれのメンバーも、ワークステーションにログインすると、 ローカルの Administrators グループの権限を持つことになります。
次のステップは、Samba PDC ユーザーを Domain Admins グループのメンバーにする方法を説明します。
(通常、/etc/group の中に) domadm という UNIX グループを作成します。
このグループに “管理者” になるユーザーを追加します。例えば、joe、 john、mary を管理者にしたい場合、 /etc/group のエントリーは次のようになります:
domadm:x:502:joe,john,mary
この domadm グループを次のコマンドを実行して “Domain Admins” グループにマッピングします:
root# net groupmap add ntgroup=“Domain Admins” unixgroup=domadm
“Domain Admins” の両側の引用符は、グループ名に空白があるために必要です。 また、イコール記号 (=) の前後に空白を入れないで下さい。
こうして joe、john、mary はドメイン管理者になります。
任意の UNIX グループを任意の Windows NT4/200x グループにマッピングしたり、UNIX グループを Windows ドメイン・グループにすることが可能です。例えば、ある UNIX グループ (例: acct) をドメイン・メンバー・マシンのローカルファイルやプリンターの ACL に含めたい場合、 次のコマンドを Samba PDC 上で実行して、そのグループをドメイン・グループにします。
root# net groupmap add rid=1000 ntgroup="Accounting" unixgroup=acct
RID パラメーターは通常 1000 から始まる符号なしの 32 ビット整数です。しかし、 この RID はユーザーに割り当てられる RID と重複してはいけません。 これについての検証法は使用しているパスワード・データベース・バックエンドによって異なります。 このツールの今後のバージョンでは自動検証が可能になるかもしれませんが、現行では、 使用者が自分でやらなければなりません。
管理者権限は以下の二つの用途に対して必要です。
Samba-3 のドメイン・コントローラー、ドメイン・メンバー・サーバー 及びクライアント。
Windows のドメイン・メンバー・ワークステーション。
ユーザやグループの追加などの UNIX/Linux システムにおける管理の作業には、root と同等の権限が必要です。Samba のドメインに対する Windows クライアントの追加は、Windows クライアント 用のユーザー・アカウントの追加が含まれます。
多くの UNIX 管理者が Samba Team に対して root の権限を持たなくても Windows クライアントを追加できたり、ユーザーの追加、変更、削除ができるようにしてほしいという要望を寄せ続けています。 こういった要望は UNIX システムの基本的なセキュリティの観念と接触するものです。
root と同等の権限を与えずに UNIX/Linux システムに対してアクセスを許可するのに 安全な方法はありません。root 権限はドメインに root ユーザーが ログインするか、ある特定のユーザーを、/etc/passwd の中の GID=0 を持つグループを プライマリー・グループに持つ UNIX グループのメンバーとして登録することで可能になります。それらの ユーザーは NT4 の「ドメイン・ユーザー・マネージャー」や「ドメイン・サーバー・マネージャー」 などのツールを使用してユーザーやグループに加えドメイン・メンバー・サーバーやクライアント・アカウントの 管理ができます。また、これらと同等の権限が共有レベルの ACL の管理には必要です。
Windows のドメイン・メンバー・ワークステーションの管理は、Domain Admins グループに属するメンバーなら誰でも行うことができます。このグループは好みの UNIX グループに マップすることができます。
Microsoft Windows NT4/200x/XP は、はじめてインストールされる際に、特定のユーザー、グループ及び別名の エントリーが事前に設定されます。それぞれ、よく知られている相対 ID (RID) を持ちます。 これらは運用の継続的な整合性のために維持しなければなりません。Samba は必須のドメイン・グループを 持たなければならず、それらのグループは適切な RID 値を必要とします。Samba-3 が tdbsam を使用するよう設定されていると、必須のドメイン・グループは自動的に作成されます。 そのデフォルトの NT グループを作成 (準備) するのは LDAP 管理者の責任です。
必須のドメイン・グループには良く知られている RID を割り当てなければなりません。デフォルトのユーザー、 グループ、別名、RID は 良く知られているユーザー・デフォルト RID 表に表示されています。
他にも必要なドメイン・グループを作成することは問題ありませんが、必須のドメイン・グループ (良く知られているもの) が作成済みで、デフォルト RID が割り当てられていることを確認してください。 作成する他のグループには任意の RID を割り当てることができます。
各ドメイン・グループを UNIX システム・グループにマッピングしてください。それが、これらのグループを NT ドメイン・グループとして使用できる唯一の方法です。
Table 12.1. 良く知られているユーザーのデフォルト RID
Well-Known Entity | RID | Type | Essential |
---|---|---|---|
Domain Administrator | 500 | User | No |
Domain Guest | 501 | User | No |
Domain KRBTGT | 502 | User | No |
Domain Admins | 512 | Group | Yes |
Domain Users | 513 | Group | Yes |
Domain Guests | 514 | Group | Yes |
Domain Computers | 515 | Group | No |
Domain Controllers | 516 | Group | No |
Domain Certificate Admins | 517 | Group | No |
Domain Schema Admins | 518 | Group | No |
Domain Enterprise Admins | 519 | Group | No |
Domain Policy Admins | 520 | Group | No |
Builtin Admins | 544 | Alias | No |
Builtin users | 545 | Alias | No |
Builtin Guests | 546 | Alias | No |
Builtin Power Users | 547 | Alias | No |
Builtin Account Operators | 548 | Alias | No |
Builtin System Operators | 549 | Alias | No |
Builtin Print Operators | 550 | Alias | No |
Builtin Backup Operators | 551 | Alias | No |
Builtin Replicator | 552 | Alias | No |
Builtin RAS Servers | 553 | Alias | No |
net groupmap list を実行することによりマッピング・データベースに 様々なグループを一覧表示できます。以下がその例です:
root# net groupmap list Domain Admins (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin Domain Users (S-1-5-21-2547222302-1596225915-2414751004-513) -> domuser Domain Guests (S-1-5-21-2547222302-1596225915-2414751004-514) -> domguest
net groupmap の詳細については net(8) の man ページをご参照下さい。
誰もがツールを必要とします。自分のツールを作ることが好きな人もいれば、既成のツール (汎用に誰かが作成したもの) を好む人もいます。
Samba のグループ・インターフェースで使用するグループ名を作成するスクリプトは smbgrpadd.sh で提供されています。
Example 12.1. smbgrpadd.sh
#!/bin/bash # 通常のシステムの groupadd ツールでグループを追加する。 groupadd smbtmpgrp00 thegid=`cat /etc/group | grep smbtmpgrp00 | cut -d ":" -f3` # MS Windows ネットワーキング側のために使用したい名前に変更する。 cp /etc/group /etc/group.bak cat /etc/group.bak | sed "s/smbtmpgrp00/$1/g" > /etc/group # 通常の動作のように GID を返す。 echo $thegid exit 0
smb.conf ファイルでは、上のスクリプトのエントリーを 次のように 記述します。
Example 12.2. グループ追加スクリプトのための smb.conf の設定
[global] |
... |
add group script = /path_to_tool/smbgrpadd.sh "%g" |
... |
上の例では ntadmin という名前の UNIX/Linux のグループを作成しました。このスクリプトで、 次に Orks、Elves、Gnomes というグループも作成します。後でマッピング・データベースを再作成する必要がある場合に備えて、 このシェルスクリプトを保存することをお奨めします。便宜上、initGroups.sh というファイル名で保存します。このスクリプトは intGroups.sh で提供されています。
Example 12.3. グループ・マッピング設定スクリプト
#!/bin/bash net groupmap modify ntgroup="Domain Admins" unixgroup=ntadmin net groupmap modify ntgroup="Domain Users" unixgroup=users net groupmap modify ntgroup="Domain Guests" unixgroup=nobody groupadd Orks groupadd Elves groupadd Gnomes net groupmap add ntgroup="Orks" unixgroup=Orks type=d net groupmap add ntgroup="Elves" unixgroup=Elves type=d net groupmap add ntgroup="Gnomes" unixgroup=Gnomes type=d
もちろん必要に合わせて管理者がこれを編集することを想定しています。 net groupmap ツールの使用方法の詳細については man ページをご参照下さい。
この時点で、油断していると管理者はいろいろな細かいことにびっくりされられることになります。 現実問題として、自動の制御スクリプトの全ステップを実用に移す前には、注意深く手動で テストしなければなりません。
これは Samba インターフェース・スクリプトが、smb.conf ファイルの add group script として、直接 groupadd を呼んだ場合によく生じる問題です。
もっともよくある失敗の原因は、名前に大文字かつまたはスペースを含む MS Windows グループ・アカウントを追加しようとしたということです。
これには 3 つの回避策があります。一つは、UNIX/Linux の groupadd システムツールの制約に沿うグループ名のみを使用することです。二つ目は、 この章で先に言及したスクリプトを使用することです。三つ目は MS Windows グループ名に代わる UNIX/Linux グループ・アカウントを手動で作成し、 上で説明した手順でそのグループを MS Windows グループにマッピングするという方法です。
“ Domain Users を Power Users グループに追加するにはどうすればいいですか? ”
Power Users グループは各 Windows 200x/XP Professional ワークステーションのローカルグループです。 Domain Users グループは自動で Power Users グループに追加することはできません。 追加するためには各ワークステーションにローカル・ワークステーションに 管理者 としてログインし、次の手順を実行してください。
をクリックします。
タブをクリックします。
ボタンをクリックします。
グループ をクリックします。
Power Users をダブル・クリックします。 これでユーザー及びグループをローカルマシンの Power Uses グループに追加するパネルを起動します。
ボタンをクリックします。
追加される Domain Users グループの元のドメインを選択します。
Domain Users グループをダブルクリックします。
ボタンをクリックします。この作業中にログオンボックスが 表示されたら DOMAIN\UserName を入力して下さい (例: ドメインが MIDEARTH、ユーザーが root の場合は MIDEARTH\root を入力のこと)。