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は、ドメインユーザーかドメイングループのアカウント名である。