ファイルとフォルダのアクセス権を一括して変更するため、 CACLS.EXE を用いてコマンドプロンプトから設定しました。 ところで、 CACLS.EXE を使ってアクセス権の設定を表示すると、「(CI)(OI)」などの文字列が現れ、正しく設定できているか不安です。 エクスプローラからアクセス権を設定するのと、違いはあるのでしょうか?
アクセス権をエクスプローラから設定する場合と CACLS.EXE (以下CACLS) から設定を行なう場合とでは、基本的に同じ設定が可能です。
ただし、 CACLS とエクスプローラの機能差のため、設定できるアクセス権に多少違いがあります。
たとえば、エクスプローラ上の「特殊なアクセス権」に相当する設定は、 CACLSから設定できません。反対に、CACLSの「/E 」オプションを使ったアクセス権の追加設定は,エクスプローラからではできません。
CACLS は、 Windows NT に標準で添付されているアクセス権設定用のコマンドです。 一定の書式で入力するため慣れが必要ですが、一括して大量のフォルダのアクセス権を変更するときなどに利用すると便利です。
CACLSでアクセス権を表示すると,「(OI)(CI)」といった見慣れない記号が表示されます。 ヘルプを参照しても説明がありません。実はこれらの記号は NTFS アクセス権の継承機能に関連した設定を表しています。 以下具体的に例をあげて説明しましょう。
フルコントロールとなっているEドライブの直下に作成した「test」フォルダのプロパティ画面でアクセス権を確認すると, 図xxのように「Everyone フルコントロール(All)(All)」と表示されます。 一方 CACLSコマンドで「CACLS E:\test」入力すると、一般的に図xxのように記述されます。
E:\test Everyone:F Everyone:(OI)(CI)(IO)F
1行目の「E:\test Everyone:F」は、ディレクトリのアクセス権画面に表示される「左側の(All)」に相当し、testフォルダのアクセス権が「 Everyone フルコントロール」であることを意味しています。
2行目は「右側の(All)」に相当し、フォルダ内に作成されるファイルやフォルダに対する Everyoneのアクセス権が「フルコントロール」 であることを表しています。
それでは「(OI)(CI)(IO)」は、それぞれどういう意味を持っているのでしょうか。
OI は「Object Inheritance」の略で、フォルダの中に作成したファイルに対して、このアクセス権 (今回は「フルコントロール」) を継承させることを意味します。
同様に CI は「Container Inheritance」の略で、中に作成したフォルダに対してアクセス権を継承する設定です。
最後の IO は「Inheritance Only」の略であり、「定義したアクセス権はフォルダの中に作成したファイルやフォルダにのみ継承され,上位のフォルダ (ここでは E:\test) には影響しない」ことを意味します。
これらの設定項目は、図xx1左の「ディレクトリのアクセス権」画面では表示されません。
一見、エクスプローラでの設定内容と異なっているかのように見えますが、ここまでの説明をご理解頂ければ,実は,同一のアクセス権を表示していることが理解できます。
「(CI)(OI)(IO)」の表示の意味は理解できましたが、 CACLS を利用しても、これらの設定を変更することはできません。
実は、SP3 までの Windows NT でこれらの設定を変更するためには、直接 APIを呼びだす必要があり通常は不可能でした。
Windows NT SP4 以降に付属している「セキュリティ構成マネージャ (SCE) 」をインストールすると、 GUI が Windows 2000 と同等のものに変更され、図xxのようにファイルやフォルダのプロパティ画面からこうした設定を参照/変更できるようになります。
まず最初に、ファイルやフォルダのプロパティ画面が変更されているのが分かります。 「セキュリティ」タブで 「詳細」 ボタンを押すと、「アクセス制御の設定」画面を表示します。 「アクセス権のエントリ」欄の「適用先」に「サブフォルダとファイルのみ」とありますが、実はこれがCACLSの「(CI)(OI)(IO)」に相当する設定です。 ここで「表示/編集」ボタンを押し、「適用先」というドロップダウンリストから設定を変更することが可能です