Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

subinaclでアクセス制御リストから不明なメンバーを削除する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2010/08/27
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
ファイルやフォルダ、レジストリなどのオブジェクトに対するアクセス権は、アクセス制御リストACLで管理されている。
削除されたアカウントが含まれるACLのエントリをまとめて削除するには、subinaclコマンドが利用できる。

解説

 TIPS「icacls/subinaclでアクセス制御リストからメンバーを削除する」では、アクセス制御リスト(ACL)に不明なメンバーが含まれている場合に、それを削除する方法を紹介した。ローカル・コンピュータやドメインのユーザー・アカウントからメンバーを削除しても、そのメンバーを含むアクセス制御リストからは削除されず、不明なメンバーのままアクセス制御リスト中に残っている。それをクリーンアップする方法が先のTIPSである。subinaclでは不明なアカウントSIDが表示されるので、それを使って不明なメンバーを明示的に指定して削除していた。

 だがsubinaclには不明なアカウントを自動的に見つけて削除する機能もある。本TIPSではその方法を紹介する。ただしこの方法では、予期しないエントリ、削除したくないエントリまで削除されてしまう可能性があるので(一時的にドメイン・コントローラと不通になっていて、アカウントが確認できない場合など)、注意していただきたい。

  操作方法

 subinaclコマンドを使ってACLに含まれる不明なアカウントを削除するには、/cleandeletedsidsfromオプションを利用する。以下は、このオプションの使用方法である。

C:\>subinacl /help /cleandeletedsidsfrom
SubInAcl version 5.2.3790.1180

/CLEANDELETEDSIDSFROM
---------------------

/cleandeletedsidsfrom=domain[=dacl|sacl|owner|primarygroup|all]

    delete all ACEs containing deleted (no valid) Sids from DomainName
    You can specify which part of the security descriptor will be scanned
    (default=all)
    If the owner is deleted, new owner will be the Administrators group.
    If the primary group is deleted, new primary group will be the Users group.

 削除対象は「/file 〜」や「/subdirectories 〜」などで指定するが、具体的な指定方法はTIPS「subinaclコマンドでオブジェクトのセキュリティ情報を表示させる(subinaclの基本)」を参照していただきたい。

 「subinacl <削除対象> /cleandeletedsidsfrom=<ドメイン名>」を実行すると、削除対象のオブジェクトのACLエントリを調査し、アカウントが見つからないもの(アカウントがデータベース上に存在せず、subninaclコマンドではSID形式でしか表示されないアカウント)があれば、そのエントリが削除される。<ドメイン名>の部分には、Active Directoryのドメイン名(NTドメイン名かFQDNドメイン名)やローカルのコンピュータ名が指定できるが、省略すると現在属しているドメインが対象となる。

 現在、次のような3つのファイルがあるとする。

※1はローカル・コンピュータ上の削除済みアカウント
※2はドメイン上の削除済みアカウント


C:\>cacls *.data …caclsコマンドの方が結果が見やすいのこれを利用する
C:\file1.data <アカウント ドメインが見つかりません>F …※1
              BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R
↑このACLには、不明ローカル・アカウントが1つある

C:\file2.data <アカウント ドメインが見つかりません>F …※2
              BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R
↑このACLには、不明ドメイン・アカウントが1つある

C:\file3.data <アカウント ドメインが見つかりません>F …※1
              <アカウント ドメインが見つかりません>F …※2
              BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R
↑このACLには、不明なローカルとドメインのアカウントが1つずつある

 ファイルが3つあるが、file1のACLには削除済みローカル・アカウントが1つ、file2のACLには削除済みドメイン・アカウントが1つ、file3には削除済みのローカルとドメインのアカウントが1つずつ含まれている。

 これらのファイルから、まず不明ドメイン・アカウントを含むACLを削除してみる。このためには、「/cleandeletedsidsfrom=exampledom.com」というオプションを指定する。

C:\>subinacl /file *.data /cleandeletedsidsfrom=exampledom.com /testmode
C:\file2.data : delete Perm. ACE 0 S-1-5-21-912561763-1030417263-475923621-9198
C:\file2.data (TestMode) : 1 change(s)
C:\file3.data : delete Perm. ACE 1 S-1-5-21-912561763-1030417263-475923621-9198
C:\file3.data (TestMode) : 1 change(s)


Elapsed Time: 00 00:00:00
Done:        3, Modified        2, Failed        0, Syntax errors        0
Last Done  : C:\file3.data

 不明ドメイン・アカウントはfile2とfile3に含まれているため、その2つのACLが変更されている。ドメイン名部分を省略して「subinacl /file *.data /cleandeletedsidsfrom= /testmode」としてもよい。

 なおオプションの最後にある「/testmode」は、コマンドを実際には実行せず、シミュレーションを行うという指示である。何が削除されるかを確認後、最後にこのオプションを外して実行するとよい(/testmodeは、これ以外のsubinaclのコマンドでも利用できる)。

 次はローカルの削除済みアカウントを含むACLを削除してみる。

C:\>subinacl /file *.data /cleandeletedsidsfrom=MYPC12 /testmode
C:\file1.data : delete Perm. ACE 0 S-1-5-21-515967899-1637723038-1606980848-1040
C:\file1.data (TestMode) : 1 change(s)
C:\file3.data : delete Perm. ACE 0 S-1-5-21-515967899-1637723038-1606980848-1040
C:\file3.data (TestMode) : 1 change(s)

 不明ローカル・アカウント(コンピュータ名はMYPC12)はfile1とfile3に含まれているため、その2つのACLが変更されている。

 テスト・モードを解除して実行すると、次のようになる。

※不明ドメイン・アカウントのACLを削除
C:\>subinacl /file *.data /cleandeletedsidsfrom=exampledom.com
C:\file2.data : delete Perm. ACE 0 S-1-5-21-912561763-1030417263-475923621-9198
C:\file2.data : 1 change(s)
C:\file3.data : delete Perm. ACE 1 S-1-5-21-912561763-1030417263-475923621-9198
C:\file3.data : 1 change(s)

Elapsed Time: 00 00:00:00
Done:        3, Modified        2, Failed        0, Syntax errors        0
Last Done  : C:\file3.data

※不明ローカル・アカウントのACLを削除
C:\>subinacl /file *.data /cleandeletedsidsfrom=MYPC12
C:\file1.data : delete Perm. ACE 0 S-1-5-21-515967899-1637723038-1606980848-1040
C:\file1.data : 1 change(s)
C:\file3.data : delete Perm. ACE 0 S-1-5-21-515967899-1637723038-1606980848-1040
C:\file3.data : 1 change(s)

Elapsed Time: 00 00:00:00
Done:        3, Modified        2, Failed        0, Syntax errors        0
Last Done  : C:\file3.data

C:\>cacls *.data …結果を確認する
C:\file1.data BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R

C:\file2.data BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R

C:\file3.data BUILTIN\Administrators:F
              NT AUTHORITY\SYSTEM:F
              EXAMPLEDOM\user05:F
              BUILTIN\Users:R

 いずれの結果にも、もう不明アカウント(「アカウント ドメインが見つかりません」というエントリ)は含まれていない。End of Article


「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間