ここでは、Windows10のコマンドプロンプトやバッチファイルで使用できるCACLSコマンドについて紹介します。
目次
CACLSコマンド
CACLSコマンドを使用すると、ファイルのアクセス権(アクセス制御リスト: ACL)を表示または変更することができます。
CACLSコマンドはWindows NTから継承された古いコマンドで、互換性維持のために残されてはいますが、CACLSコマンドの使用は推奨されていません。可能であれば、代わりにICACLSコマンドを使用してください。
CACLSコマンドは、Cacls.exeのコマンドとして実装されています。
CACLSコマンドの構文
CACLSコマンドのファイル名
ファイル名には、操作対象のファイルやフォルダーの名前を絶対パスまたは相対パスで指定します。
ファイル名にはワイルドカードの「*」「?」が使用できます。
CACLSコマンドのスイッチ
CACLSコマンドで使用できるスイッチには以下のものがあります。
CACLSコマンドで使用できるスイッチ一覧
スイッチ | 説明 |
---|---|
/T | カレントフォルダーとすべてのサブフォルダーにある条件に一致するファイルを操作対象にします。 |
/L | シンボリックリンクのリンクターゲット(リンクが指し示す実際のファイル本体)ではなく、シンボリックリンク自体を操作対象にします。 |
/M | フォルダーにマウントされたボリュームのアクセス制御リスト(ACL: Access Contrl Language)を変更します。 |
/S | 既存のACLをセキュリティ記述子(SDDL: Security Descriptor Definition Language)で指定したACLで上書きします。 このスイッチは、/E、/G、/R、/P、/Dスイッチと併用することはできません。 SDDLを省略すると、随意アクセス制御リスト(DACL: Discretionary Access Control List)のSDDL文字列を表示します。 |
/E | 既定ではACL全体を上書き編集しますが、このスイッチを指定すると、既存のACLの一部を置換します。 |
/C | アクセス拒否エラーを無視して操作を続行します。 |
/G | 「/G ユーザー名:アクセス権」の形式で指定します。 指定したユーザーに次のいずれかのアクセス権を与えます。 アクセス権 R: 読み取り W: 書き込み C: 変更(書き込み) F: フルコントロール |
/R | 「/R ユーザー名」の形式で指定します。 /E スイッチと併用して、指定したユーザーのアクセス権を削除します。ユーザー名はスペースで区切って複数指定することができます。 |
/P | 「/P ユーザー名:アクセス権」の形式で指定します。 指定したユーザーのアクセス権を次のいずれかのアクセス権で置換します。 ユーザー名とアクセス権のセットは複数指定することができます。 アクセス権 N: アクセス権なし R: 読み取り W: 書き込み C: 変更(書き込み) F: フルコントロール |
/D | 「/D ユーザー名」の形式で指定します。 指定されたユーザーのアクセスを拒否します。ユーザー名はスペースで区切って複数指定することができます。拒否のアクセス権の設定は許可のアクセス権より優先されます。 |
CACLSコマンドの実行例
以下にCACLSコマンドの実行例をいくつか示します。
実行例1
以下の例では、カレントフォルダー(現在のフォルダー)にある拡張子が「.png」のファイルのアクセス権を一覧表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
C:\Command>CACLS C:\Command\*.png C:\Command\image1.png BUILTIN\Administrators:(ID)F NT AUTHORITY\SYSTEM:(ID)F BUILTIN\Users:(ID)R NT AUTHORITY\Authenticated Users:(ID)C C:\Command\image2.png Everyone:R BUILTIN\Administrators:(ID)F NT AUTHORITY\SYSTEM:(ID)F BUILTIN\Users:(ID)R NT AUTHORITY\Authenticated Users:(ID)C C:\Command\image3.png PC\johobase:F BUILTIN\Administrators:(ID)F NT AUTHORITY\SYSTEM:(ID)F BUILTIN\Users:(ID)R NT AUTHORITY\Authenticated Users:(ID)C |
実行例2
以下の例では、「C:\Work」フォルダーに対して、ローカルのユーザー「johobase」にフルコントロールを設定し、ローカルのグループ「Users」のアクセス権を「読み取り」から「変更」に修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
C:\Command>CACLS C:\Work C:\Work BUILTIN\Administrators:(OI)(CI)(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)(ID)F BUILTIN\Users:(OI)(CI)(ID)R NT AUTHORITY\Authenticated Users:(ID)C NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(ID)C C:\Command>CACLS C:\Work /E /G johobase:F /P Users:C 処理ディレクトリ: C:\Work C:\Command>CACLS C:\Work C:\Work BUILTIN\Users:(OI)(CI)C PC\johobase:(OI)(CI)F BUILTIN\Administrators:(OI)(CI)(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)(ID)F NT AUTHORITY\Authenticated Users:(ID)C NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(ID)C |
実行例3
以下の例では、、「C:\Work」フォルダーに対して、ローカルのグループ「Users」にフルコントロールのアクセス権を与える設定で上書きします。
/Eスイッチを指定していないので、ACL全体を上書きするため、確認プロンプトのメッセージが表示されます。
1 2 3 |
C:\Command>CACLS C:\Work /G Users:F よろしいですか (Y/N)?y 処理ディレクトリ: C:\Work |
アクセス権の継承
ファイルやフォルダーのアクセス権には、「継承」という適用範囲の概念があり、CACLSコマンドでは次のように継承設定を省略形で表示します。
継承設定の省略表示 | 説明 |
---|---|
OI | OIは、オブジェクト継承(Object Inherit)を表します。 対象フォルダー内に作成したファイルに適用します。 |
CI | CIは、コンテナ継承(Container Inherit)を表します。 対象フォルダー内に作成したサブフォルダーに適用します。 |
IO | IOは、継承のみ(Inherit Only)を表します。 対象フォルダーには適用せず、対象フォルダー内に作成したファイルとフォルダーに適用します。 |
ID | IDは、継承済み(Inherited)を表します。 親フォルダーからアクセス権を継承します。 |
継承設定の省略表示と、GUIでのアクセス許可の「摘要先」の設定は、次のように対応します。
継承設定の省略表示 | 説明 |
---|---|
表示なし | このフォルダーのみを表します。 |
(OI)(CI) | このフォルダーとサブフォルダー、およびファイルを表します。 |
(CI) | このフォルダーとサブフォルダーを表します。 |
(OI) | このフォルダーとファイルを表します。 |
(OI)(CI)(IO) | サブフォルダーとファイルのみを表します。 |
(CI)(IO) | サブフォルダーのみを表します。 |
(OI)(IO) | ファイルのみを表します。 |