目次
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 でサポートされている権利は「現在有効な権限の一覧」に一覧がある。 この章の残りでは、Samba サーバー上でどのように権限を管理し使うかについて説明する。
表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を変更も出来る。
プリンターへの管理者権限は、この権利と、レジストリ中の、 プリンターオブジェクトに対するセキュリティ記述子 によってのみ排他的に制御される。
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
は、ドメインユーザーかドメイングループのアカウント名である。