Chapter 15. User Rights and Privileges

Gerald (Jerry) Carter

Samba Team

John H. Terpstra

Samba Team

Table of Contents

権利の管理能力
net rpc rightsユーティリティの使用
権限の説明
Windows2000ドメインコントローラでサポートされている権限
管理者のドメインSID
よくあるエラー
Windowsクライアントの管理が出来る権利と権限は何か?

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 <user> <right [right ...]>

引数なしで起動すると、この機能は指定されたユーザかグループに一連の 権利を割り当てるのに使う。例えば、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 <user> <right [right ...]>

このコマンドは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 time
SeProfileSingleProcessPrivilege  Profile single process
SeIncreaseBasePriorityPrivilege  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 time
SeProfileSingleProcessPrivilege  Profile single process
SeIncreaseBasePriorityPrivilege  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 getlocalsid
SID 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は、ドメインユーザかドメイングループのアカウント名である。