ファイルのアクセス権を表示または変更するCACLSコマンド [Windows10 コマンドプロンプト]

Windows 10 コマンドプロンプト ウィンドウ イメージ

ここでは、Windows10のコマンドプロンプトやバッチファイルで使用できるCACLSコマンドについて紹介します。

CACLSコマンド

CACLSコマンドを使用すると、ファイルのアクセス権(アクセス制御リスト: ACL)を表示または変更することができます。
CACLSコマンドはWindows NTから継承された古いコマンドで、互換性維持のために残されてはいますが、CACLSコマンドの使用は推奨されていません。可能であれば、代わりにICACLSコマンドを使用してください。
CACLSコマンドは、Cacls.exeのコマンドとして実装されています。

CACLSコマンドの構文

CACLS ファイル名 [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G ユーザー名:アクセス権] [/R ユーザー名 […]] [/P ユーザー名:アクセス権 […]] [/D ユーザー名 […]]

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」のファイルのアクセス権を一覧表示します。

実行例2

以下の例では、「C:\Work」フォルダーに対して、ローカルのユーザー「johobase」にフルコントロールを設定し、ローカルのグループ「Users」のアクセス権を「読み取り」から「変更」に修正します。

実行例3

以下の例では、、「C:\Work」フォルダーに対して、ローカルのグループ「Users」にフルコントロールのアクセス権を与える設定で上書きします。
/Eスイッチを指定していないので、ACL全体を上書きするため、確認プロンプトのメッセージが表示されます。

アクセス権の継承

ファイルやフォルダーのアクセス権には、「継承」という適用範囲の概念があり、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) ファイルのみを表します。