前々回で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 〈ファイル名〉
こうして作られた〈ファイル名〉の中身を表示させれば、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)。
この連載の記事
-
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる - この連載の一覧へ