Table of Contents
Sambaがドメインを制御しているネットワーク中で、Windowsのユーザ、グループとマシン アカウントを管理するには、Microsoft Windowsネットワーク環境とUNIX OS環境の間で インタフェースを取る必要がある。Windows セキュリティドメインにマシンを追加するための 権利(許可)は、Windows NT4ドメインとActive Directoryドメインの両方で、非管理者ユーザに 割り当て(設定)することができる。
ドメインへWindows NT4/2kX/XPProましんを追加するには、追加されるマシンごとにマシン アカウントを作成する必要がある。マシンアカウントは、ユーザのログオンを許可する ために信頼できるマシンを検証するために使うのに必要である。
マシンアカウントはユーザアカウントに類似していて、そのため、Sambaをホスティングしている
UNIXマシンでの実装では(すなわちSambaが動いているマシン)、ユーザアカウントの特別なタイプ
として作成する必要がある。マシンアカウントは、通常のユーザアカウントと比べて、
アカウント名(ログインID)が$
記号で終わっているところが異なる。
更に、このタイプのアカウントは、システムユーザとしてUNIX環境に決してログイン出来ない
ことと、ログインシェルが/bin/false
に設定されていることと、ホーム
ディレクトリが/dev/null
に設定されていることも違う。マシンアカウントは
起動時にドメインメンバのマシンであることを検証するためのみに使われる。このセキュリティ
対応は、ネットワークの完全性を破る中間者攻撃をブロックするために設計されている。
マシン(コンピュータ)アカウントは、ドメインメンバサーバとワークステーションのための セキュリティ証明書(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 | ファイルか他のオブジェクトに対する所有権の取得 |
Sambaサーバ上でユーザとグループに権利を割り当てる管理には2つの主要な手段がある。
止め引用のNT4ユーザマネージャ
はSambaドメインコントローラに接続
するためにWindows NT4、2000かXP Professionalのドメインメンバクライアントのどれから
でも使うことが出来、権限の割り当てを表示したり修正できる。しかし、このアプリケーション
は、Windows 2000かそれ以降のクライアント上で動かす時にはバグがある。そのため、管理
操作の実行を行うために必要なコマンドラインユーティリティを提供している。
Samba-3.0.11以降のnet rpc rights
ユーティリティは新しい3つの
サブコマンドを提供している:
引数なしで起動した場合、net rpc list
は単純にサーバ
上の有効な権利の一覧を表示する。特定のユーザまたはグループを指定した
場合、ツールは指定されたアカウントに割り当てられている現在の権限を
表示する。accounts
という特別な文字列を付けて起動
した場合、net rpc rights list
はサーバ上のすべての
特権アカウントの一覧とそれに割り当てられた権利を表示する。
引数なしで起動すると、この機能は指定されたユーザかグループに一連の 権利を割り当てるのに使う。例えば、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'はシステムシェルによって バックスラッシュと空白が解釈されてしまうのを防ぐために、シングルクォート かダブルクォートで囲まなければならない。
このコマンドはnet rpc rights grant
と形式が似ている。
これは、ユーザとグループから割り当てられた権利(か権利の一覧)を削除する。
、アカウントに割り当てられる権限の設定か削除を可能にするため、Domain Admins グループ メンバとして接続する必要がある。この能力はDomain Adminsグループに固有で変更できない。 Domain Adminsのメンバに割り当てられた能力以外、既定値の権利と権限はない。これは、 すべての管理者の権利と権限(それらに割り当てられた能力以外)は、Domain Adminsグループ でも明示的に割り当てられなければならないということを意味する。
いったんsmbdが、ユーザが必要な権利を持っていると確認した場合、特定の操作はrootとして
実行されるので、初期状態では、どのユーザに対しても、何らの権利は割り当てられない。
例えば、Windowsドメインにクライアントを参加させる時、add machine script
はほとんどの場合、スーパーユーザの権利で動作させる必要がある。この理由のため、アカウントに
対して権限を割り当てるのはとても注意すべきである。
Samba-3.0.11で実装された権限は以下の通りである。ありそうではあるが、可能であれば、 この後のSambaのリリースで権限が追加実装されるかもしれない。また、現在実装されて いるが、使われていないものは、管理項目として将来のリリースで削除されるかも しれないので、それらの機能を使った時の成功/失敗はSambaメーリングリスト上で報告 することは重要である。
この権利は、net rpc user add
か、
NT4 User Manager for Domains
のような
ツール経由で新しいユーザまたはグループアカウントを作成
するか否かをsmbdがユーザに許可することを決める。
この権利を所有するアカウントは、 smb.conf
ファイル中で定義した
共有を追加/削除/変更
するコマンドをrootとして
実行出来る。このようなユーザはSambaサーバ上のファイル共有に関連
づけられているACLを変更も出来る。
この権限はsmb.conf
ファイル中のprinter admin
オプションと、それがグローバルな権利であるという(プリンタ単位毎ではない)
ことを除いて同じように動作する(セクション5のsmb.conf
マニュアルページ
参照)。結局smb.confのオプションは無効となり、プリンタへの管理者権限は
このオプションと、ntprinters.tdb
ファイル中にある
プリンタオブジェクトに対するセキュリティ記述子によって排他的に制御される。
Sambaはサーバのシャットダウンと再起動のためと、直前に出されたシャット ダウンコマンドを中止するためののフックを提供する。この操作は通常OS によってrootユーザにのみ制限されているので、上記のフックのどれかを使う ことができるアカウントはこの権利を持っていなければならない。
参照のために、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中のものに直接相当するものは無い。
すべての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
500というRIDの値は、よく知られた既定値のAdministratorアカウントの標準値である。これは、 Windowsマシン上かドメイン上のAdministratorアカウントが持つ権利と権限を割り当てるRIDで ある。UNIX/Linux環境下では、同等なものはUID=0(rootアカウント)である。
Sambaバージョン 3.0.11以降のリリースでは、WindowsのユーザかWindowsのグループアカウントの ために設定された権利と権限と同等のものを提供するAdministratorアカウントなしで動作させる ことが可能である。
Windows NT4(とそれ以降)のクライアントがドメインに参加したとき、ドメイン全体での
Domain Admins
グループはクライアント上のローカルな
Administrators
グループのメンバシップに追加される。ドメイン
グローバルのDomain Admins
グループのメンバであるユーザは誰でも
Windowsクライアント上で管理者の権利と権限を持つ。
これは、ユーザがドメインサーバ上でも管理者の権利と権限を持ってしまうために、
必ずしもすべての場合において良い解決方法とは言えない。Windowsクライアント上の
Power Users
グループはワークステーションのみのローカルな
管理者権限を持つ。任意のグローバルユーザかドメイングローバルグループは、
ローカルワークステーションのPower Users
グループのメンバに
追加できる。
ネストされたグループのサポートに、Windows
ワークステーション上でのローカルグループにドメインユーザとグループを追加する
方法の例がある。Sambaサーバからnet
を使うことで、この作業が
行える。
これを行う別の方法は、WindowsワークステーションにAdministrator
としてログオンし、cmd
シェルを開き、以下を実行する:
C:\>
net localgroup administrators /adddomain_name\entity
ここで、entity
は、ドメインユーザかドメイングループのアカウント名である。