前々回でWindowsのACL(Access Control List)関連の機能(エクスプローラー、icacl.exeコマンド)を(「WindowsのACL(Access Control List)を解説する【準備編】」)、前回はACLとその中に含まれるACE(Access Control Entry)の構造を解説した(「WindowsのACL(Access Control List)を解説する【定義編】」)。今回は、icacls.exeコマンドの設定項目とWindows内部のACL設定との関係を見ていく。
icacls.exeの設定
icacls.exeのオンラインヘルプを見ると、「単純な権限」と「特定の権限」の2つをアクセス許可マスクの指定で利用できる。設定した権限とアクセスマスクの対応を調べるには、icacls.exeの「/save」オプションを利用する。
このオプションではファイルやディレクトリのACLを再割り当て可能な形式でファイルに保存する。ファイルの中身はテキスト形式で、SDDL(Security Descriptor Definition Language)という形式で表記される。この中にACEのアクセスマスクに対応した部分がある。これを見ることで、ファイルやディレクトリに設定されているACEのアクセスマスクを直接見ることができる。
具体的には、以下のような手順でファイルやディレクトリのACLが表示可能だ。
●grantオプションを使いアクセス権を設定する
icacls.exe file /grant:r 〈アクセス権〉
●ACLをSDDL形式で保存する
icacls.exe file /save 〈ファイル名〉
icaclsの「/grant:r」オプションを使うと、指定したプリンシパルのアクセス権を指定できる。アクセス権の表示は、icaclsコマンドに対象ファイル名のみを指定すればよい。また、「/save」オプションを使うことで、SDDLで記述されたACLをファイルに保存できる
こうして作られた〈ファイル名〉の中身を表示させれば、fileに設定されたACLが表示される。これは、以下のような形式になっている。
D:PAI(A;;〈SDDLアクセス権〉;;;〈プリンシパル〉)
この形式で1行が1つのACLを表し、1組のカッコが1つのACEを表す。カッコの中にある2つめのセミコロンと3つめのセミコロンの間にあるのが、アクセス権を示す「ACE文字列」だ。この文字列には、「FA」のようなSDDLの定数文字列と「0x1200a9」のような16進数文字列の場合がある。前者については、以下のサイトに文字列と定数値の対応がある。
●ACE 文字列
https://docs.microsoft.com/ja-jp/windows/win32/secauthz/ace-strings
また、SDDL自体に関しては、以下のURLに解説がある。
●セキュリティ記述子定義言語
https://docs.microsoft.com/ja-jp/windows/win32/secauthz/security-descriptor-definition-language
これらとは別にSDDLの定義は、以下のURLにある。
●[MS-DTYP]: Security Descriptor Description Language(英語)
https://docs.microsoft.com/ja-jp/openspecs/windows_protocols/ms-dtyp/4f4251cc-23b6-44b6-93ba-69688422cb06
ただし、ここでACE文字列の定数値として表示される値は、WindowsのSDKに含まれているwinnt.hで定義されている定数名だ。たとえば、ACE文字列「RC」は、上記のサイトによれば、「READ_CONTROL」という値になるが、この値は、winnt.hでは、0x00020000という値だと定義されている。これを前回のマスクビットに当てはめると、17ビット目となるため、標準アクセス権の「アクセス許可の読みとり」であることがわかる。
実際に調査する場合、無関係なアクセス権は削除しておく必要がある。icacls.exeで特定のユーザー(プリンシパル)のアクセス権を削除するには、「/remove」オプションを使って、指定したプリンシパルに対応したACEをすべて削除する。
ただし、上位のオブジェクトから継承したアクセス権に関しては、直接削除できない。継承されたアクセス権を削除するには、継承自体を停止させる。継承を停止するには、「/inheritance」オプションを使って、継承アクセス権を削除(/inheritance:r)するか、継承アクセス権を個別指定アクセス権に変換する必要がある(/inheritance:d)。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ













