Windows TIPS
[System Environment]
subinaclでアクセス制御リスト中のメンバーを変更する
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ 打越 浩幸
2010/08/20
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
■
ファイルやフォルダ、レジストリなどのオブジェクトに対するアクセス権は、アクセス制御リストACLで管理されている。
■
ACLのエントリ中に含まれるメンバーを変更(置換)するには、subinaclコマンドを利用する。
■
削除済みアカウントを変更する場合は、SID形式で指定する。
TIPS「caclsコマンドでACLを編集する 」「icacls/subinaclでアクセス制御リストからメンバーを削除する 」では、アクセス制御リスト(以下ACL)において、特定のメンバー名が含まれるエントリを削除する方法を紹介した。本TIPSではこの応用として、削除ではなく、別のアカウントに変更する方法を紹介する。人事異動などでセキュリティ設定を変更する場合や、すでに削除してしまったユーザーやグループ・アカウントが含まれるエントリを、別のユーザー/グループに置き換えたい場合に利用できる。
ACLのエントリ中のメンバーを変更(置換)するには、subinaclコマンドを利用する。subinaclコマンドの入手方法は、TIPS「subinaclコマンドでオブジェクトのセキュリティ情報を表示させる(subinaclの基本) 」を参照するか、以下のリンク先からダウンロードしていただきたい。
subinaclコマンドで特定のユーザー/グループ・アカウントが含まれるエントリを削除するには、/replaceオプションを利用する。
C:\>subinacl /help /replace ……ヘルプの表示
SubInAcl version 5.2.3790.1180
/REPLACE
--------
/replace=DomainName\OldAccount=DomainName\New_Account ……使用方法
replace all ACEs (Audit and Permissions) in the object
Ex: /replace=DOM_MARKETING\ChairMan=NEWDOM\NewChairMan will replace
all ACEs containing DOM_MARKETING\ChairMan with NewChairMan SID
retrieves from NEWDOM domain
Warning: if DomainName\New_Account has already an ACE, ACE replacement is
skipped
対象となるファイルやフォルダ、レジストリ・エントリなどの指定方法については、TIPS「subinaclコマンドでオブジェクトのセキュリティ情報を表示させる(subinaclの基本) 」を参照していただきたい。例えばファイルなら「/file testfile.dat」のように指定する。
例として、次のようなACLを持つファイルがあるとする(caclsコマンドの出力がいちばんシンプルなので、これでACLを確認する)。
C:\>cacls testfile.dat ……caclsコマンドによる確認
C:\testfile.dat BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
MYPC12\user01:F ……このアカウントを変更してみる
MYPC12\user02:F
BUILTIN\Users:R
この中にある「MYPC12\user01」というローカル・ユーザー・アカウントを、「EXAMPLEDOM\uchikoshi」というドメイン・ユーザー・アカウントに変更するには(ユーザーでなく、グループに変更することも可能)、次のよう/replaceに続けて、旧アカウントと新アカウントを指定する(ローカル・アカウントの場合、コンピュータ名の指定は省略可能)。
C:\>subinacl /file testfile.dat /replace=user01=EXAMPLEDOM\uchikoshi ……置換
C:\testfile.dat : replace Perm. ACE 2 MYPC12\user01 with EXAMPLEDOM\uchikoshi
C:\testfile.dat : 1 change(s)
Elapsed Time: 00 00:00:00
Done: 1, Modified 1, Failed 0, Syntax errors 0
Last Done : C:\testfile.dat ……処理されたファイル
C:\>cacls testfile.dat ……caclsコマンドによる結果の確認
C:\testfile.dat BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
EXAMPLEDOM\uchikoshi:F ……変更されている
MYPC12\user02:F
BUILTIN\Users:R
すでに削除されたアカウントを置換したい場合は、アカウントをSID文字列形式で指定すればよい。subinaclコマンドを使うと削除済みアカウントのSID形式表現を取得できるので(TIPS「icacls/subinaclでアクセス制御リストからメンバーを削除する 」参照)、これを/replaceオプションに指定する。
※先ほどの例で、user02というローカル・ユーザー・アカウントを削除してみる
C:\>net user user02 /delete ……アカウントの削除
コマンドは正常に終了しました。
C:\>cacls testfile.dat ……caclsによる確認
C:\testfile.dat BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
MYPC12\user01:F
<アカウント ドメインが見つかりません>F ……削除されている
BUILTIN\Users:R
C:\>subinacl /file testfile.dat ……subinaclによる確認
======================
+File C:\testfile.dat
======================
……(中略)……。次のS-1-5-… がSID形式での表現
/pace =S-1-5-21-515967899-1637723012-1926980848-1033 ACCESS_ALLOWED_ACE_TYPE-0x0
……(以下省略)……
※subinaclでDomain Usersに置換する
C:\>subinacl /file testfile.dat /replace=S-1-5-21-515967899-1637723012-1926980848-1033 ="Domain Users"
C:\testfile.dat : replace Perm. ACE 3 S-1-5-21-515967899-1637723012-1926980848-1033 with exampledom\domain users
C:\testfile.dat : 1 change(s)
Elapsed Time: 00 00:00:00
Done: 1, Modified 1, Failed 0, Syntax errors 0
Last Done : C:\testfile.dat
※caclsで確認してみる
C:\>cacls testfile.dat
C:\testfile.dat BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
MYPC12\user01:F
EXAMPLEDOM\Domain Users:F ……置換されたエントリ
BUILTIN\Users:R
以上では、単独のファイルを対象に操作しているが、サブフォルダ全体を対象にしたければ、「/file 〜」の代わりに「/subdirectories 〜」を利用すればよい。
この記事と関連性の高い別のWindows TIPS
generated by
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ
**先週の人気講座ランキング**
〜 Android編 〜