連載
» 2006年01月28日 05時00分 UPDATE

Tech TIPS:Windowsのcaclsコマンドが出力する内容の意味や見方を知る

コマンド・プロンプト上でACLの内容を操作/確認するには、cacls.exeコマンドが利用できる。代表的なアクセス権は「F」「W」「W」「C」などで表される一方で、特殊なアクセス権の場合は個別に列挙される。フォルダの場合は、適用先が「(OI)」「(CI)」「(IO)」という文字列で表される。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003



解説

 右の関連記事では、Windows OS(正確にはNTFS)の持つファイルのアクセス制御リスト(Access Control List、以下ACL)について解説した。これらの記事では、ACLの概要や「有効なACL」の確認方法などについて説明しているので、参考にしていただきたい。

 ACLの設定や確認には、エクスプローラの[プロパティ]ダイアログを利用するのが一般的であるが、コマンド・プロンプト上で実行したい場合もある。多数のファイルやフォルダのACLをまとめて確認したり、設定を変更したりするには、CUIのツールの方が便利だからだ。

 コマンド・プロンプト上でACLの内容を確認したり、設定し直したりするには、cacls.exeというコマンドが利用できる(サポート・ツールにはxcacls.exeという、ほぼ同等の機能を持つスクリプトも用意されている)。本TIPSでは、cacls.exeコマンドの出力の見方(表示されたACLの意味)について解説する。ACLを設定/変更する方法については、右上の関連記事を参照していただきたい。

操作方法

 cacls.exeコマンドは、ファイルやフォルダに対して設定されているACLの内容を確認したり、変更したりするために利用するコマンドラインのツールである。ACLは(複数の)ACE(Access Control Entry、アクセス制御エントリ)の組み合わせで構成されているが、それらACEの内容をすべて表示させたり、ACEを追加/削除したり、既存のACEの内容を編集したりすることができる。だが、このコマンドの出力形式はやや分かりづらいので、本TIPSで解説する。

●caclsコマンドの使い方

 caclsコマンドを引数なしで実行すると、次のように使い方が表示される。

C:\>cacls
ファイルのアクセス制御リスト(ACL) を表示または変更します。

CACLS ファイル名 [/T] [/E] [/C] [/G ユーザー名:アクセス権]
                 [/R ユーザー名 [...]] [/P ユーザー名:アクセス権 [...]]
                 [/D ユーザー名 [...]]
  ファイル名        ACL を表示します。
  /T                現在のディレクトリとすべてのサブディレクトリにある
                    指定されたファイルの ACL を変更します。
  /E                ACL を置き換えずに、ACL を編集します。
  /C                アクセス拒否エラーを無視して、ACL の変更を続行します。
  /G ユーザー名:アクセス権
                    指定されたユーザーにアクセス権を与えます。
                    アクセス権: R  読み取り
                                W  書き込み
                                C  変更 (書き込み)
                                F  フル コントロール
  /R ユーザー名     指定されたユーザーのアクセス権を失効させます。
                    (/E オプションと共に使用)。
  /P ユーザー名:アクセス権
                    指定されたユーザーのアクセス権を置き換えます。
                    アクセス権: N  なし
                                W  書き込み
                                R  読み取り
                                C  変更 (書き込み)
                                F  フル コントロール
  /D ユーザー名     指定されたユーザーのアクセスを拒否します。
複数のファイルを指定するには、ワイルドカードを使用できます。
複数のユーザーを指定できます。

省略形:
   CI - コンテナ継承。
        ACE はディレクトリに継承されます。
   OI - オブジェクト継承。
        ACE はファイルに継承されます。
   IO - 継承のみ。
        ACE は現在のファイル/ディレクトリに適用されません。



●caclsコマンドによるACLの表示

 caclsに続けて、ファイル名やフォルダ名(ワイルドカードも利用可)を指定すると、それらのACLが1ファイル/フォルダずつ表示される。

 例えば、次のようなACLが設定されたフォルダがあるとする。

あるフォルダに設定されたACLの例 あるフォルダに設定されたACLの例
これは、user01というフォルダに対して、ユーザーuser01/Administratorsグループ/Usersグループにフルコントロール、OtherGroup1にアクセス拒否、OtherGroup2に読み取り許可、などの設定を行った場合の例である。
  (1)ここが「拒否」の場合は指定された操作やアクセスが(明示的に)禁止され、「許可」の場合は、その操作が許可される。
  (2)対象となるグループやユーザー名。「CREATOR OWNER」は作成者という意味。
  (3)アクセス許可。「フル コントロール」はあらゆる操作が該当する。「特殊」は、各権限を自由に組み合わせたものであり、実際の設定内容は[編集]ボタンを押すと確認できる。
  (4)フォルダの場合は、このフォルダに設定されているACLなどを、サブフォルダへと継承させることができる。この「適用先」は、実際にどのレベルのフォルダまで継承できるかを表す。ファイルの場合はこの属性はない。

 このフォルダの内容をcaclsコマンドで出力させると、次のようになる。

caclsによるACLの表示例 caclsによるACLの表示例
これは、上の画面と同じACLを、caclsコマンドで表示させた場合の例である。このフォルダのACLには、全部で8つのACEが含まれていることが分かる(これは上のプロパティ画面のACEの数と一致している)。
  (1)対象となるファイル名やフォルダ名。
  (2)ACEの対象アカウント名。ユーザー名やグループ名、組み込みのシステム・アカウント名など。
  (3)フォルダの場合は、このようにACEの適用先が「(OI)」や「(CI)」「(IO)」という文字列で表示される(「このフォルダにのみ適用」の場合は表示されない)。
  (4)ACEの種類が「許可」の場合は何も表示されないが、「拒否」の場合はこのように「(DENY)」と表示される。
  (5)代表的なアクセス権については「F」「R」「W」「C」などと省略形で表示されるが、そうでない場合は個別のアクセス権が次行以降に列挙される。
  (6)列挙された個別のアクセス権。
  (7)組み込みアカウントの例。先頭に「BUILTIN\〜」と表示される。
  (8)フルコントロールの場合はこのように「F」と表示される。
  (9)Everyoneアカウント。
  (10)「R」は読み出しのみ可能という意味。
  (11)こちらは、このフォルダに対するアクセス権。このフォルダは「BUILTIN\Users」グループからフルコントロールでアクセス可能。
  (12)こちらは、このフォルダおよびサブフォルダなどに対するアクセス権。このフォルダ中に作成されるファイルやフォルダは、「BUILTIN\Users」グループに対して読み取りの権限を持つ。

 caclsの結果は次のようになっている。

 最初に(一番左に)表示されているのが、対象となるファイルやフォルダの名称である((1))。この例では、C:\Folder\user01というフォルダのACLを表示させている。

 その右に表示されているのが、ACLを構成する各ACEの要素である。基本的なフォーマットは、「ACEのアカウント名:アクセス権」か、「ACEのアカウント名:ACEの適用先 アクセス権」となる。ACEは1行ずつ表示されるが、上の(6)のように、特殊なアクセス権では複数行にまたがって表示されることがある。

■アカウント名((2)
 アカウント名は、ローカルのコンピュータ上のアカウントの場合は「コンピュータ名\アカウント名」となり、ドメイン・アカウントの場合は「ドメイン\アカウント名」となる。

■ACEの適用先((3)
 このACEの適用先という情報は、フォルダの場合にしか存在しないものであり、先のセキュリティ画面では、(4)の「適用先」という欄に相当する。ここには「(OI)」や「(CI)」「(IO)」という文字列(およびその組み合わせ)が表示されているが、それぞれ、次のような意味を持っている。

表示名 意味
(OI) Object Inheritの略。このフォルダ(この例ではuser01フォルダ)中に作成されたファイルにのみ適用する。適用先の「このフォルダとファイル」に相当
(CI) Container Inheritの略。このフォルダ中に作成されたサブフォルダにのみ適用する
(IO) Inherit Onlyの略。このフォルダには適用せず、その中に作成されたファイルやフォルダにのみ適用する
(IO)(CI) このフォルダにのみ適用する
(OI)(CI)(IO) このフォルダ、サブフォルダ、およびファイルに適用する
(CI)(IO) サブフォルダにのみ適用する
(OI)(IO) ファイルにのみ適用する
(なし) このファイルやフォルダにのみ適用し、サブフォルダへは適用しない
ACEの適用先文字列の意味
フォルダの場合は、このように、ACEをどこに適用するかを指定するための文字列が表示される。

■アクセス権
 そのファイルやフォルダに適用されるアクセス権。ただし先頭に「(DENY)」という表示が付いている場合は((4))、その操作が拒否される。アクセス権は、実際には10個以上の個別の権限の集合であるが、代表的なものについては以下のように1文字の省略形が用意されている。

表示 意味
F フルコントロール。すべての操作が対象となる
W 書き込み可能
R 読み出しのみ可能
C 変更(書き込み)可能
N アクセス権なし
アクセス権の省略型表示

「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。