Cacls.exe を使用して Windows ACL を表示および管理する - TechRepublic

Cacls.exe を使用して Windows ACL を表示および管理する - TechRepublic

Cacls.exe は、Windows NT/2000/XP 用のコマンドラインツールです。ファイルやフォルダに ACL(アクセス制御リスト)を割り当て、表示、または変更することができます。Cacls は対話型ツールであり、コマンドラインユーティリティであるため、バッチファイルでも使用できます。私は初めてバッチファイルで Cacls を使用し、新規ユーザー作成プロセスの一部として使用しましたが、非常に便利だと感じました。Cacls は他のコマンドラインツールと組み合わせて使用​​することもできます。他の管理ツールと組み合わせることで、Cacls は大規模環境での管理タスクの処理を大幅に簡素化します。

この記事の補足として、ダウンロード可能なCaclsリファレンスガイドを作成しました。パラメータの説明、関連リソースへのリンク、使用シナリオなどが記載されています。

Cacls の
操作 Cacls は、単一のタスクの場合はコマンドラインから、複数の操作の場合はバッチファイルから使用できます。Cacls.exe のデフォルトの場所は、Windows NT、2000、および XP のすべてのインストールで %SystemRoot%\System32 フォルダにあり、NTFS ファイルシステムが必要です。

Caclsの使い方はWindowsのバージョンを問わず共通しているため、新しいWindowsリリースへの切り替えが容易になります。Caclsのオプションを確認するには、コマンドプロンプトを起動し、「cacls」と入力してください。オプションとパラメータの一覧が表示されます。Caclsで最も簡単な操作は、ファイルまたはフォルダのACLを表示することです。例えば、
cacls c:\folder\file.txtのように入力します。

Caclsでは、ワイルドカード、変数、そして1行に複数の権限やユーザーを指定することも可能です。Caclsの豊富な機能セットは、強力な設定オプションを提供します。表Aは、Caclsで実行できる操作と、対応するオプションフラグを示しています。

表A
手術 パラメータ
現在のフォルダとすべてのサブフォルダ内の指定されたファイルの ACL を変更します /T
ACLを置き換えるのではなく編集する /E
アクセス拒否エラーでも続行 /C
指定されたユーザーにアクセス権限を付与します。
権限は読み取り (R)、書き込み (W)、変更 (C)、フル コントロール (F) です。
/G ユーザー:パーマ
ACLを取り消す /R ユーザー
指定されたユーザーのアクセス権を置き換えます。
権限はなし (N) で、許可操作と同じオプションです。
/P ユーザー:パーミッション
指定されたユーザーのアクセスを拒否する                                /D ユーザー

Windows 2000 および XP では、Cacls リストに 3 つの新しい説明表示オブジェクトが追加されました。これらは Active Directory オブジェクトの継承属性を記述します。例えば、図 A はコマンドcacls C:\xfer\user-1の実行結果を示しています。これは、このサンプルユーザーディレクトリの ACL を表示しています。

図A

ご覧のとおり、表示される 3 つの継承オブジェクトは次のとおりです。

  • CI - コンテナ継承
  • OI—オブジェクト継承
  • IO—継承のみ

バッチファイルでのCaclsの使用: Caclsの管理上の利点の一つは、バッチファイルで使用する際に%1
変数を渡すことができることです。これにより、Caclsは大規模なユーザー管理プロセスに不可欠な要素となります。この機能を明確にするために、以下の処理を実行する例を見てみましょう。

  • フォルダとそのサブフォルダの ACL を表示する
  • フォルダのプライマリユーザーに変更/書き込みACLを付与し、別のユーザーに読み取りACLを付与します。
  • 同じフォルダに対する別のユーザーの ACL を取り消す

bat ファイル ( test-variable-pass.bat ) は次のようになります:
echo これは C:\test-variable-pass.bat です
echo Cacls での変数渡しのテスト
cacls %1 /t
cacls %1 /e /g user-1:W user-2:R
cacls %1 /e /r user-3

コマンドプロンプトから、次を実行しました:
C:\test-variable-pass c:\xfer\user-1

より高度な方法としては、コマンドプロンプトの末尾に「 > c:\dump.txt」と記述することで、結果をテキストファイルにパイプし、後で確認できるようにすることができます。これは大規模な操作の検索に便利です。もちろん、このbatファイルで指定できる変数は%1だけではありません。任意の数の変数を使用できます。

制限事項と回避策
Cacls は ACL を管理するための強力なツールですが、いくつかの注意事項があります。いくつかの状況を見てみましょう。

Y/Nプロンプトへの自動応答
grant (/g) オプションを使用する場合、Caclsはパラメータ内でYまたはNで応答する方法を提供していません。回避策としては、リソースキットツールXCacls(ダウンロード可能なCaclsリファレンスシートで説明されています)を使用することです。このツールには、確認プロンプトをバイパスするオプションがあります。別の方法としては、batファイル内でY/Nを要求するCaclsコマンドの前にecho y|またはecho nを挿入する方法があります。

Cacls(およびXCacls)はローカルで実行する必要があります。Cacls
は1台のコンピュータから別のコンピュータへ実行できますが、必ずしも正常に動作するとは限りません。より良い方法は、Cacls操作を問題のコンピュータで実行するか、ターミナルサービス経由で実行することです。例えば、あるコンピュータからネットワーク経由でリモートコンピュータ上のリソースに対してCacls grant (/g) コマンドを実行すると、存在しないアカウントのACLエントリをエラーなく受け入れます。図Bは、リモートCacls実行前後の2kas.txt ACLの表示例です。(「アカウントドメインが見つかりません」というメッセージに注意してください。)

図B

特別なファイルアクセス権の割り当て
Caclsツールは、ACLの割り当てを読み取り、書き込み、変更(いずれも同じ)、フルコントロール、またはなしに制限します。特別な権限は、権限の変更、所有権の取得、実行、削除です。これらはCaclsでは利用できませんが、XCaclsツールはこの制限に対処できます。

現在のフォルダとサブフォルダ/t
オプションを使用する場合は、待機時間が発生することをご承知おきください。Windows NTのGUIでお馴染みの通り、Windowsエクスプローラの「サブディレクトリのアクセス許可を置き換える」オプションを使用してACLを書き換える処理には、しばらく時間がかかることがあります。Windows 2000以降のWindowsバージョンでは、継承可能なアクセス制御エントリ(ACE)の自動伝播がサポートされています。しかし、Caclsを/tオプション付きで使用すると再帰処理が発生し、時間がかかります。

開いているファイルまたはロックされているファイル
Cacls は、排他使用でロックされているファイルの ACL 状態を表示または変更できません。


Cacls または XCacls をテスト運用する場合は、ユーザーや自分自身がファイル、フォルダ、またはドライブにアクセスできなくなる可能性があるので注意してください。そのため、テストネットワークシステムで徹底的なテストと実験を行うことをお勧めします。

要約:
CaclsはACL管理に役立つ強力なツールです。バッチファイルでも使用できるため、特に大規模環境では便利です。CaclsまたはXCaclsを他のWindows管理ツールと併用することで、多数のユーザーアカウントの管理がはるかに容易になります。

Tagged: