Chapter 15. User Rights and Privileges
Prev | Part III. 詳細な設定方法 | Next

## Chapter 15. User Rights and Privileges

### Gerald (Jerry) Carter

Samba Team

`<jerry@samba.org>`

### John H. Terpstra

Samba Team

`<jht@samba.org>`

Sambaがドメインを制御しているネットワーク中で、Windowsのユーザ、グループとマシンアカウントを管理するには、Microsoft Windowsネットワーク環境とUNIX OS環境の間でインタフェースを取る必要がある。Windows セキュリティドメインにマシンを追加するための権利(許可)は、Windows NT4ドメインとActive Directoryドメインの両方で、非管理者ユーザに割り当て(設定)することができる。

ドメインへWindows NT4/2kX/XPProましんを追加するには、追加されるマシンごとにマシンアカウントを作成する必要がある。マシンアカウントは、ユーザのログオンを許可するために信頼できるマシンを検証するために使うのに必要である。

マシンアカウントはユーザアカウントに類似していて、そのため、SambaをホスティングしているUNIXマシンでの実装では(すなわちSambaが動いているマシン)、ユーザアカウントの特別なタイプとして作成する必要がある。マシンアカウントは、通常のユーザアカウントと比べて、アカウント名(ログインID)が`$`記号で終わっているところが異なる。更に、このタイプのアカウントは、システムユーザとしてUNIX環境に決してログイン出来ないことと、ログインシェルが`/bin/false`に設定されていることと、ホームディレクトリが`/dev/null`に設定されていることも違う。マシンアカウントは起動時にドメインメンバのマシンであることを検証するためのみに使われる。このセキュリティ対応は、ネットワークの完全性を破る中間者攻撃をブロックするために設計されている。

### Note

マシン(コンピュータ)アカウントは、ドメインメンバサーバとワークステーションのためのセキュリティ証明書(credentials)を格納するために、Windows NT OSファミリで使われる。ドメインメンバの起動時、ドメインコントローラと証明書の交換を含む検証プロセスを行う。もしもドメインコントローラが保持している証明書を使っての認証に失敗した場合、マシンはドメインユーザからのアクセスが出来なくなる。コンピュータアカウントは、Microsoft Windowsのセキュアな認証方法において必須のものである。

UNIXシステムアカウントの作成は、`root`アカウントと言う方が通りがよい、システム管理者の伝統的な唯一の権利であった。UNIX環境では、同じUIDを持つ複数のユーザを作ることが可能である。UID=0のUNIXユーザはだれでも`root`アカウントユーザと本質的に同じである。

すべてのバージョンのSambaは、UNIX環境で、ユーザ、グループとマシンアカウントを管理するためのCIFS機能呼び出しを許可するシステムインタフェーススクリプトを呼び出す。3.0.10を含むそれまでのすべてのバージョンのSambaは、それらのインタフェーススクリプトを実行するために、明確にUNIXの`root`アカウントにマップされるWindows管理者アカウントを使用することを要求する。こうする必要性は、無理もない話だが、特に、UNIXホストシステムで`root`レベルのアクセスを行ってはならない人が特権を得てしまう事について、Samba管理者の間では評判が悪い。

## 権利の管理能力

Samba 3.0.11から、Windowsの権限モデルのサポートが導入された。このモデルは、特定の権利をユーザかグループSIDに割り当てるというものである。この機能を有効にするため、`smb.conf`ファイル中の`global`セクション中で、enable privileges = yesを定義しなければならない。

現在、Samba-3でサポートされている権利は“現在有効な権限の一覧”に一覧がある。この章の残りでは、Sambaサーバ上でどのように権限を管理し使うかについて説明する。

Table 15.1. 現在有効な権限の一覧

権限 | 説明
--- | ---
SeMachineAccountPrivilege | マシンをドメインに追加する
SePrintOperatorPrivilege | プリンタの管理
SeAddUsersPrivilege | ドメインへのユーザとグループの追加
SeRemoteShutdownPrivilege | リモートシステムの強制シャットダウン
SeDiskOperatorPrivilege | ディスク共有の管理
SeTakeOwnershipPrivilege | ファイルか他のオブジェクトに対する所有権の取得

### “net rpc rights”ユーティリティの使用

Sambaサーバ上でユーザとグループに権利を割り当てる管理には2つの主要な手段がある。`止め引用のNT4ユーザマネージャ`はSambaドメインコントローラに接続するためにWindows NT4、2000かXP Professionalのドメインメンバクライアントのどれからでも使うことが出来、権限の割り当てを表示したり修正できる。しかし、このアプリケーションは、Windows 2000かそれ以降のクライアント上で動かす時にはバグがある。そのため、管理操作の実行を行うために必要なコマンドラインユーティリティを提供している。

Samba-3.0.11以降の`net rpc rights`ユーティリティは新しい3つのサブコマンドを提供している:

list [name|accounts]

  引数なしで起動した場合、`net rpc list`は単純にサーバ 上の有効な権利の一覧を表示する。特定のユーザまたはグループを指定した 場合、ツールは指定されたアカウントに割り当てられている現在の権限を 表示する。`accounts`という特別な文字列を付けて起動 した場合、`net rpc rights list`はサーバ上のすべての 特権アカウントの一覧とそれに割り当てられた権利を表示する。

grant

  引数なしで起動すると、この機能は指定されたユーザかグループに一連の 権利を割り当てるのに使う。例えば、Sambaドメインコントローラ上の Domain Admins groupのメンバに、ドメインにクライアントマシンを追加する 能力を許可するためには、以下のように実行する:

      root#  net -S server -U domadmin rpc rights grant \	 'DOMAIN\Domain Admins' SeMachineAccountPrivilege

  以下のような指定も同じ結果となる:

      root#  net rpc rights grant 'DOMAIN\Domain Admins' \     SeMachineAccountPrivilege -S server -U domadmin

  空白で区切った権利の一覧を指定することで、複数の権限を割り当てることも 可能である。パラメータ'Domain\Domain Admins'はシステムシェルによって バックスラッシュと空白が解釈されてしまうのを防ぐために、シングルクォート かダブルクォートで囲まなければならない。

revoke

  このコマンドは`net rpc rights grant`と形式が似ている。 これは、ユーザとグループから割り当てられた権利(か権利の一覧)を削除する。

### Note

、アカウントに割り当てられる権限の設定か削除を可能にするため、Domain Admins グループメンバとして接続する必要がある。この能力はDomain Adminsグループに固有で変更できない。Domain Adminsのメンバに割り当てられた能力以外、既定値の権利と権限はない。これは、すべての管理者の権利と権限(それらに割り当てられた能力以外)は、Domain Adminsグループでも明示的に割り当てられなければならないということを意味する。

いったんsmbdが、ユーザが必要な権利を持っていると確認した場合、特定の操作はrootとして実行されるので、初期状態では、どのユーザに対しても、何らの権利は割り当てられない。例えば、Windowsドメインにクライアントを参加させる時、`add machine script`はほとんどの場合、スーパーユーザの権利で動作させる必要がある。この理由のため、アカウントに対して権限を割り当てるのはとても注意すべきである。

root ユーザ(UID=0)としてのアクセスは、すべての権限チェックをバイパスする。

### 権限の説明

Samba-3.0.11で実装された権限は以下の通りである。ありそうではあるが、可能であれば、この後のSambaのリリースで権限が追加実装されるかもしれない。また、現在実装されているが、使われていないものは、管理項目として将来のリリースで削除されるかもしれないので、それらの機能を使った時の成功/失敗はSambaメーリングリスト上で報告することは重要である。

SeAddUsersPrivilege

  この権利は、`net rpc user add`か、 `NT4 User Manager for Domains`のような ツール経由で新しいユーザまたはグループアカウントを作成 するか否かをsmbdがユーザに許可することを決める。

SeDiskOperatorPrivilege

  この権利を所有するアカウントは、 `smb.conf`ファイル中で定義した 共有を`追加/削除/変更`するコマンドをrootとして 実行出来る。このようなユーザはSambaサーバ上のファイル共有に関連 づけられているACLを変更も出来る。

SeMachineAccountPrivilege

  この権利は、ユーザがSambaが制御しているドメインにクライアント マシンを参加させることが出来るか否かを制御する。

SePrintOperatorPrivilege

  この権限は`smb.conf`ファイル中のprinter admin オプションと、それがグローバルな権利であるという(プリンタ単位毎ではない) ことを除いて同じように動作する(セクション5の`smb.conf`マニュアルページ 参照)。結局smb.confのオプションは無効となり、プリンタへの管理者権限は このオプションと、`ntprinters.tdb`ファイル中にある プリンタオブジェクトに対するセキュリティ記述子によって排他的に制御される。

SeRemoteShutdownPrivilege

  Sambaはサーバのシャットダウンと再起動のためと、直前に出されたシャット ダウンコマンドを中止するためののフックを提供する。この操作は通常OS によってrootユーザにのみ制限されているので、上記のフックのどれかを使う ことができるアカウントはこの権利を持っていなければならない。

SeTakeOwnershipPrivilege

  この権利はファイルとディレクトリの所有権を得る事を許可する。

### Windows2000ドメインコントローラでサポートされている権限

参照のために、Windows NT4 PDCで表示される権限は以下の通り:

             SeCreateTokenPrivilege  Create a token object  SeAssignPrimaryTokenPrivilege  Replace a process level token          SeLockMemoryPrivilege  Lock pages in memory       SeIncreaseQuotaPrivilege  Increase quotas      SeMachineAccountPrivilege  Add workstations to domain                 SeTcbPrivilege  Act as part of the operating system            SeSecurityPrivilege  Manage auditing and security log       SeTakeOwnershipPrivilege  Take ownership of files or other objects          SeLoadDriverPrivilege  Load and unload device drivers       SeSystemProfilePrivilege  Profile system performance          SeSystemtimePrivilege  Change the system timeSeProfileSingleProcessPrivilege  Profile single processSeIncreaseBasePriorityPrivilege  Increase scheduling priority      SeCreatePagefilePrivilege  Create a pagefile     SeCreatePermanentPrivilege  Create permanent shared objects              SeBackupPrivilege  Back up files and directories             SeRestorePrivilege  Restore files and directories            SeShutdownPrivilege  Shut down the system               SeDebugPrivilege  Debug programs               SeAuditPrivilege  Generate security audits   SeSystemEnvironmentPrivilege  Modify firmware environment values        SeChangeNotifyPrivilege  Bypass traverse checking      SeRemoteShutdownPrivilege  Force shutdown from a remote system

また、Windows 200x/XP ドメインコントローラとワークステーションでサポートされている権限は以下の通り:

             SeCreateTokenPrivilege  Create a token object  SeAssignPrimaryTokenPrivilege  Replace a process level token          SeLockMemoryPrivilege  Lock pages in memory       SeIncreaseQuotaPrivilege  Increase quotas      SeMachineAccountPrivilege  Add workstations to domain                 SeTcbPrivilege  Act as part of the operating system            SeSecurityPrivilege  Manage auditing and security log       SeTakeOwnershipPrivilege  Take ownership of files or other objects          SeLoadDriverPrivilege  Load and unload device drivers       SeSystemProfilePrivilege  Profile system performance          SeSystemtimePrivilege  Change the system timeSeProfileSingleProcessPrivilege  Profile single processSeIncreaseBasePriorityPrivilege  Increase scheduling priority      SeCreatePagefilePrivilege  Create a pagefile     SeCreatePermanentPrivilege  Create permanent shared objects              SeBackupPrivilege  Back up files and directories             SeRestorePrivilege  Restore files and directories            SeShutdownPrivilege  Shut down the system               SeDebugPrivilege  Debug programs               SeAuditPrivilege  Generate security audits   SeSystemEnvironmentPrivilege  Modify firmware environment values        SeChangeNotifyPrivilege  Bypass traverse checking      SeRemoteShutdownPrivilege  Force shutdown from a remote system              SeUndockPrivilege  Remove computer from docking station           SeSyncAgentPrivilege  Synchronize directory service data    SeEnableDelegationPrivilege  Enable computer and user accounts to                                 be trusted for delegation        SeManageVolumePrivilege  Perform volume maintenance tasks         SeImpersonatePrivilege  Impersonate a client after authentication        SeCreateGlobalPrivilege  Create global objects

SambaチームはUNIX/Linux環境で論理的に問題が無く、有用な権限のみを実装している。 Windows 200X/XPにおける権限の多くはUNIX中のものに直接相当するものは無い。

## 管理者のドメインSID

すべてのWindows NT4とそれ以降のサーバはdomain Administratorアカウントを必要とすることに注意。Sambaバージョン3.0.11以降は、割り当てられた権利と権限(ユーザの権利と権限を参照)経由で管理者の任務を実行することを許可する。サーバのpassdbバックエンド中のアカウントは、よく知られている既定値の管理者アカウントのRIDに設定できる。Sambaドメインコントローラ上のドメインSIDを得るためには、以下のコマンドを実行する:

    root#  net getlocalsidSID for domain FOO is: S-1-5-21-4294955119-3368514841-2087710299

以下のように、`pdbedit`を使ってアカウントにドメイン管理者のRIDを割り当てても良い:

    root#  pdbedit -U S-1-5-21-4294955119-3368514841-2087710299-500 -u root -r

### Note

500というRIDの値は、よく知られた既定値のAdministratorアカウントの標準値である。これは、Windowsマシン上かドメイン上のAdministratorアカウントが持つ権利と権限を割り当てるRIDである。UNIX/Linux環境下では、同等なものはUID=0(rootアカウント)である。

Sambaバージョン 3.0.11以降のリリースでは、WindowsのユーザかWindowsのグループアカウントのために設定された権利と権限と同等のものを提供するAdministratorアカウントなしで動作させることが可能である。

## よくあるエラー

### Windowsクライアントの管理が出来る権利と権限は何か?

Windows NT4(とそれ以降)のクライアントがドメインに参加したとき、ドメイン全体での `Domain Admins`グループはクライアント上のローカルな `Administrators`グループのメンバシップに追加される。ドメイン グローバルの`Domain Admins`グループのメンバであるユーザは誰でも Windowsクライアント上で管理者の権利と権限を持つ。

これは、ユーザがドメインサーバ上でも管理者の権利と権限を持ってしまうために、 必ずしもすべての場合において良い解決方法とは言えない。Windowsクライアント上の `Power Users`グループはワークステーションのみのローカルな 管理者権限を持つ。任意のグローバルユーザかドメイングローバルグループは、 ローカルワークステーションの`Power Users`グループのメンバに 追加できる。

ネストされたグループのサポートに、Windows ワークステーション上でのローカルグループにドメインユーザとグループを追加する 方法の例がある。Sambaサーバから`net`を使うことで、この作業が 行える。

これを行う別の方法は、Windowsワークステーションに`Administrator` としてログオンし、`cmd`シェルを開き、以下を実行する:

    C:\>  net localgroup administrators /add domain_name\entity

ここで、`entity`は、ドメインユーザかドメイングループのアカウント名である。

Prev | Up | Next
Chapter 14. 識別情報のマッピング(IDMAP) | Home | Chapter 16. ファイル、ディレクトリと共有のアクセス制御