Chapter 12. MS Windows と UNIX のグループ・マッピング

John H. Terpstra

Samba Team

Jean Franois Micouleau

Gerald (Jerry) Carter

Samba Team

Table of Contents

特長と便益
検討
重要な管理の情報
デフォルトのユーザー、グループ及び相対識別子
設定例
設定スクリプト
smb.conf のグループ追加スクリプトの例
グループ・マッピング設定スクリプト
よくあるエラー
グループの追加に失敗する
MS Windows グループの MS Windows グループへの追加に失敗する
Domain Users グループを Power Users グループに追加する

Samba-3 より Windows のグループ SID と UNIX のグループを関連づける新しいグループ・マッピング機能が 利用できます。net ツールに含まれる groupmap サブコマンドを、 関連づけの管理に使用します。

NT のグループと UNIX のシステム・グループをマッピングするこの新しい機能では、管理者が、どの NT ドメイン・グループを MS Windows クライアントに公開するか決定することができます。デフォルト -1) 以外の値を持つ UNIX のグループにマッピングする NT のグループのみが ドメイン・ユーザー及びグループにアクセスするツールのグループ選択リストに含まれます。

Warning

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 を割り当てられます。

Figure 12.1. IDMAP: グループ SID から GID への解決

IDMAP: グループ SID から GID への解決

Figure 12.2. IDMAP: GID から対応する SID への解決

IDMAP: GID から対応する SID への解決

どちらのケースでも winbindd が動作していない場合は、ローカルで解決可能なグループのみが認識されます。 IDMAP: グループ SID から GID への解決IDMAP: GID から対応する SID への解決 をご参照下さい。 IDMAP のグループ・マッピング保存 が示すように net groupmap が NT の SID に対応する UNIX グループの作成に使用されます。

Figure 12.3. IDMAP のグループ・マッピング保存

IDMAP のグループ・マッピング保存

smb.conf のグループ・インターフェース・スクリプトが、直接 UNIX/Linux システムツール (shadow utilities、groupaddgroupdelgroupmod) を呼び出した場合、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 グループのメンバーとして作成された場合、 joeAdministrator という名前のユーザーと全く同じ権限を持ちます。

MS Windows NT4/200x/XP マシンがドメイン・メンバーになる場合、PDC の “Domain Admins” グループはワークステーションのローカルの Administrators 管理者グループに追加されます。 Domain Administrators グループのいずれのメンバーも、ワークステーションにログインすると、 ローカルの Administrators グループの権限を持つことになります。

次のステップは、Samba PDC ユーザーを Domain Admins グループのメンバーにする方法を説明します。

  1. (通常、/etc/group の中に) domadm という UNIX グループを作成します。

  2. このグループに “管理者” になるユーザーを追加します。例えば、joejohnmary を管理者にしたい場合、 /etc/group のエントリーは次のようになります:

    		domadm:x:502:joe,john,mary
    		

  3. この domadm グループを次のコマンドを実行して “Domain Admins” グループにマッピングします:

    	root# net groupmap add ntgroup=“Domain Admins” unixgroup=domadm
    	

    Domain Admins” の両側の引用符は、グループ名に空白があるために必要です。 また、イコール記号 (=) の前後に空白を入れないで下さい。

こうして joejohnmary はドメイン管理者になります。

任意の 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 と重複してはいけません。 これについての検証法は使用しているパスワード・データベース・バックエンドによって異なります。 このツールの今後のバージョンでは自動検証が可能になるかもしれませんが、現行では、 使用者が自分でやらなければなりません。

重要な管理の情報

管理者権限は以下の二つの用途に対して必要です。

  1. Samba-3 のドメイン・コントローラー、ドメイン・メンバー・サーバー 及びクライアント。

  2. 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 表に表示されています。

Note

passdb backend が LDAP (ldapsam) を使用する場合、必須のドメイン・グループを作成し、 それぞれにデフォルトの RID を割り当てるのは管理者の責任です。

他にも必要なドメイン・グループを作成することは問題ありませんが、必須のドメイン・グループ (良く知られているもの) が作成済みで、デフォルト RID が割り当てられていることを確認してください。 作成する他のグループには任意の RID を割り当てることができます。

各ドメイン・グループを UNIX システム・グループにマッピングしてください。それが、これらのグループを NT ドメイン・グループとして使用できる唯一の方法です。

Table 12.1. 良く知られているユーザーのデフォルト RID

Well-Known EntityRIDTypeEssential
Domain Administrator500UserNo
Domain Guest501UserNo
Domain KRBTGT502UserNo
Domain Admins512GroupYes
Domain Users513GroupYes
Domain Guests514GroupYes
Domain Computers515GroupNo
Domain Controllers516GroupNo
Domain Certificate Admins517GroupNo
Domain Schema Admins518GroupNo
Domain Enterprise Admins519GroupNo
Domain Policy Admins520GroupNo
Builtin Admins544AliasNo
Builtin users545AliasNo
Builtin Guests546AliasNo
Builtin Power Users547AliasNo
Builtin Account Operators548AliasNo
Builtin System Operators549AliasNo
Builtin Print Operators550AliasNo
Builtin Backup Operators551AliasNo
Builtin Replicator552AliasNo
Builtin RAS Servers553AliasNo

設定例

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 ページをご参照下さい。

設定スクリプト

誰もがツールを必要とします。自分のツールを作ることが好きな人もいれば、既成のツール (汎用に誰かが作成したもの) を好む人もいます。

smb.conf のグループ追加スクリプトの例

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 のグループを作成しました。このスクリプトで、 次に OrksElvesGnomes というグループも作成します。後でマッピング・データベースを再作成する必要がある場合に備えて、 このシェルスクリプトを保存することをお奨めします。便宜上、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 グループにマッピングするという方法です。

MS Windows グループの MS Windows グループへの追加に失敗する

Samba-3 は MS Windows の管理環境からのネストされたグループをサポートしていません。

Domain Users グループを Power Users グループに追加する

Domain Users を Power Users グループに追加するにはどうすればいいですか?

Power Users グループは各 Windows 200x/XP Professional ワークステーションのローカルグループです。 Domain Users グループは自動で Power Users グループに追加することはできません。 追加するためには各ワークステーションにローカル・ワークステーションに 管理者 としてログインし、次の手順を実行してください。

  1. スタート -> コントロール パネル -> ユーザー アカウント をクリックします。

  2. 詳細 タブをクリックします。

  3. 詳細 ボタンをクリックします。

  4. グループ をクリックします。

  5. Power Users をダブル・クリックします。 これでユーザー及びグループをローカルマシンの Power Uses グループに追加するパネルを起動します。

  6. 追加 ボタンをクリックします。

  7. 追加される Domain Users グループの元のドメインを選択します。

  8. Domain Users グループをダブルクリックします。

  9. Ok ボタンをクリックします。この作業中にログオンボックスが 表示されたら DOMAIN\UserName を入力して下さい (例: ドメインが MIDEARTH、ユーザーが root の場合は MIDEARTH\root を入力のこと)。