Windows OSでは、ファイルやオブジェクトにACL(アクセス制御リスト)を付与し、アクセスを許可するか、禁止するかなどを制御している。ACLの詳細についてはTIPS「アクセス制御リストACLとは?」や「有効なファイル・アクセス権を調査する」などを参照していただきたい。
ACLを調査するコマンドとしてはcacls.exeがあり、TIPS「caclsコマンドの出力の見方」「caclsコマンドでACLを編集する」などで紹介している。このcaclsコマンドの後継として、Windows Server 2003 SP2以降のOSでは、icacls.exeというコマンドが提供されている。オプションの指定方法が少し変更されているほか、ACLの保存や復元、SIDを指定しての削除など、いくつか機能が拡張されている。
■Windows Server 2003 SP3に付属のicacls.exeコマンドについて
日本語版のWindows Server 2003 SP2に付属のicacls.exeコマンドには不具合があり、/?を付けてもヘルプが正しく表示されない。とはいえ、これはヘルプの表示方法だけの問題であり、機能的には正しく動作する。Windows Vista以降のWindows OSに付属のものは正しくヘルプが表示される。
結果は次のように、Unicode形式のテキスト・ファイルとして保存される(ただし先頭の「BOM:Byte Order Mark」はないので注意)。「D:AI(A;OICIID;FA;;;WD)」といった文字列はSDDL形式で表現したACLである。SDDLについてははTIPS「セキュリティ設定を記述するSDDL文字列とは?」「caclsコマンドでACLを編集する(SDDL編)」を参照していただきたい。
なおメモ帳でUnicodeとして保存すると先頭に「BOM:Byte Order Mark(16進数でFF-FE)」が付くが、このようなUnicodeテキスト・ファイルはWindows 7やWindows Server 2008 R2以降のicacls.exeコマンドでないと正しく読み込めないようである。Windows Server 2003やWindows Vista、Windows Server 2008のicacls.exeに与える場合は、BOMマークのないUnicodeテキスト・ファイルにする必要がある。いったんInternet Explorer 8で開いて、Unicode形式で保存し直すと、BOMのないUnicodeファイルになる(TIPS「文字コードを変換する」参照)。