Xcacls.vbs を使用して NTFS アクセス許可を変更する方法

Windows XP のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Windows XP のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています

Windows Server 2003 のサポートは 2015 年 7 月 14 日で終了しています。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響します。 この変更の意味および保護された状態を維持する方法について説明します。

概要
Extended Change Access Control List ツール (Xcacls.exe) の更新版が Microsoft Visual Basic スクリプト (Xcacls.vbs) としてマイクロソフトから提供されています。この資料では、Xcacls.vbs スクリプトを使用してファイルまたはフォルダの NTFS ファイル システムのアクセス許可を変更する方法と表示する方法について説明します。Xcacls.vbs をコマンド ラインから使用して、エクスプローラでアクセスできるファイル システムのすべてのセキュリティ オプションを設定できます。Xcacls.vbs はファイルのアクセス制御リスト (ACL) を表示および変更します。

: Xcacls.vbs は Microsoft Windows 2000、Microsoft Windows XP、および Microsoft Windows Server 2003 とのみ互換性があります。Xcacls.vbs はマイクロソフトでサポートされていません。

先頭に戻る

Xcacls.vbs をセットアップして使用するには、以下の手順を実行します。
  1. 最新版の Xcacls.vbs を次のマイクロソフト Web サイトから入手します。
  2. Xcacls_Installer.exe をダブルクリックします。抽出したファイルの保存場所の指定を求めるダイアログ ボックスが表示されたら、C:\Windows など、コンピュータの検索パス設定内のフォルダを指定します。
  3. デフォルトのスクリプティング エンジンを Wscript から Cscript に変更します (Xcacls.vbs スクリプトは Cscript で最適に動作します)。変更を行うには、コマンド プロンプトで次のように入力し、Enter キーを押します。
    cscript.exe /h:cscript
    : デフォルトのスクリプティング エンジンを Cscript に変更することで影響を受けるのは、スクリプトの画面への書き込み方法のみです。Wscript では各行が個別に [OK] ダイアログ ボックスに書き込まれ、Cscript では各行がコマンド ウィンドウに書き込まれます。デフォルトのスクリプティング エンジンを変更しない場合は、次のコマンドを使用してスクリプトを実行する必要があります。
    cscript.exe xcacls.vbs
    一方、デフォルトを Cscript に変更する場合は、次のコマンドを使用してスクリプトを実行できます。
    xcacls.vbs
    .
  4. Xcacls.vbs コマンドの構文を参照するには、コマンド プロンプトで次のように入力します。
    xcacls.vbs /?
先頭に戻る

以下は、xcacls.vbs /? コマンドを実行することにより出力される Xcacls.vbs コマンドの構文とその説明です。
使用法 :XCACLS filename [/E] [/G user:perm;spec] [...] [/R user [...]] [/F] [/S] [/T] [/P user:perm;spec [...]] [/D user:perm;spec] [...] [/O user] [/I ENABLE/COPY/REMOVE] [/N] [/L filename] [/Q] [/DEBUG] filename [必須] 単独で指定した場合、ACL が表示されます (filename にはファイル名、ディレクトリ名、または ワイルドカード文字を指定することができ、 パス全体を含めることができます。パスを指定しない場合、 現在のディレクトリが想定されます)。 注 : - filename にスペース、または &、$、# などの特殊文字を含める場合は、 名前を引用符で囲みます。 - filename がディレクトリ名の場合、/A を指定しない限り、 そのディレクトリにあるファイルおよびサブディレクトリの 一部は変更されません。 /F [ディレクトリまたはワイルドカードを使用] : このオプションにより 入力されたディレクトリにあるすべてのファイルが変更されますが、/T も指定されない限り、 サブディレクトリはスキャンされません。 filename がディレクトリ名の場合に /F を指定しないと、 ファイルの変更は行われません。 /S [ディレクトリまたはワイルドカードを使用] : このオプションにより 入力されたディレクトリにあるすべてのサブフォルダが変更されますが、 /T も指定されない限り、サブディレクトリはスキャンされません。 filename がディレクトリ名の場合に /S を指定しないと、 サブディレクトリの変更は行われません。 /T [ディレクトリに対してのみ使用] : 各サブディレクトリを スキャンして、同様に変更します。 このスイッチを使用すると、filename がディレクトリ名かワイルドカード文字の場合のみ、 ディレクトリがスキャンされます。 /E : ACL を置き換えずに、ACL を編集します。 /G user:GUI : Windows GUI の (詳細でない) 標準のアクセス許可と 同様のセキュリティ アクセス許可を与えます。 /G user:Perm;Spec : 指定されたユーザーにアクセス許可を与えます (/G はユーザーの既存のアクセス許可に追加されます)。 User : User にスペースを含める場合は、名前を引用符で囲みます。 User に #machine# を指定すると、#machine# がドメイン コントローラでない場合は、 実際のコンピュータ名に置き換えられます。 ドメイン コントローラの場合は、 実際のドメイン名に置き換えられます。 3.0 の新機能 : User には実際の SID を表す 文字列を指定できますが、SID# で始める必要があります。 例 : SID#S-1-5-21-2127521184-160... (例に含まれる SID 文字列の一部は省略されています) (任意のユーザーが SID# を持っている場合、グローバルにすべての 一致ユーザーは、名前ではなく SID に一致する必要があります。 そのため、Domain\User に一致するすべてのアカウントに 変更を適用する場合は、 ユーザーの 1 人として SID# を 指定しないでください) GUI : 標準のアクセス許可を表し、以下の値を使用できます。 アクセス許可 : F フル コントロール M 変更 X 読み取りと実行 L フォルダの内容の一覧表示 R 読み取り W 書き込み 注 : a ; を指定すると、 Perm;Spec パラメータの組み合わせと解釈されます。 Perm : "ファイルのみ" に適用されることを表します。以下の値を使用できます。 アクセス許可 : F フル コントロール M 変更 X 読み取りと実行 R 読み取り W 書き込み 詳細設定 : D 所有権の取得 C アクセス許可の変更 B アクセス許可の読み取り A 削除 9 属性の書き込み 8 属性の読み取り 7 サブフォルダとファイルの削除 6 フォルダのスキャンとファイルの実行 5 拡張属性の書き込み 4 拡張属性の読み取り 3 フォルダの作成/データの追加 2 ファイルの作成/データの書き込み 1 フォルダの一覧/データの読み取り Spec は "フォルダとサブディレクトリのみ" に適用されることを表し、 Perm と同じ値を使用できます。 /R user : 指定されたユーザーのアクセス許可を無効にします (ユーザーに対する任意の [許可] または [拒否] ACL を削除します)。 /P user : GUI 標準のアクセス許可と同様のセキュリティ アクセス許可を置き換えます。 /P user:perm;spec : 指定されたユーザーのアクセス許可を置き換えます。 アクセス許可の指定については、/G オプションを参照してください (ユーザーに設定されたアクセス許可セットがない場合、/P は /G と同様に動作します)。 /D user : GUI 標準のアクセス許可と同様のセキュリティ アクセス許可を拒否します。 /D user:perm;spec : 指定されたユーザーのアクセス許可を拒否します。 アクセス許可の指定については、/G オプションを参照してください (/D はユーザーの既存のアクセス許可に追加されます)。 /O user : 所有権をこのユーザーまたはグループに変更します。 /I : 継承フラグを切り替えます。スイッチを指定しない場合、デフォルトでは、 継承される ACL は変更されません。スイッチには以下の値を指定できます。 ENABLE - この値は、継承フラグが有効になっていない場合に、 継承フラグを有効にします。 COPY - この値は、継承フラグを無効にし、 継承される ACL を 有効な ACL にコピーします。 REMOVE - この値は、継承フラグを無効にし、 継承される ACL のコピーも行いません。 これは ENABLE の反対です。 スイッチを指定しない場合、/I は無視され、 継承される ACL は変更されません。 /L filename : ログ用のファイル名を指定します。ファイルが現在のディレクトリにない場合は、 パス名を指定できます。 既にあるファイルに追加されるか、存在していない場合は作成されます。 ファイルが存在している場合はテキスト ファイルである必要があります。テキスト ファイル以外の場合、エラーが発生します。 ファイル名を指定しない場合、デフォルトの XCACLS という名前が 使用されます。 /Q : Quiet モードを有効にします。デフォルトでは、無効になっています。 Quiet モードを有効にすると、画面には何も表示されません。 /DEBUG : デバッグ モードを有効にします。デフォルトでは、無効になっています。 デバッグ モードを有効にすると、追加情報が表示または記録されます。 追加情報では、Sub/Function Enter および Exit が 他の重要な情報と一緒に表示されます。 /SERVER servername : スクリプトを実行する対象のリモート サーバー名を入力します。 /USER username : リモート接続で偽装するユーザー名を入力します  (PASS スイッチが必要です)。ローカル接続の場合は無視されます。 /PASS password : USER スイッチで使用するパスワードを入力します  (USER スイッチが必要です)。ワイルドカード文字は複数のファイルをコマンドで指定する場合に使用できます。次のように使用します。 * 0 個以上の文字の任意の文字列 ? 任意の 1 文字複数のユーザーをコマンドで指定することができます。アクセス許可は組み合わせて指定できます。


先頭に戻る


Xcacls.vbs を使用して、ファイルまたはフォルダのアクセス許可を表示することもできます。たとえば、C:\Test という名前のフォルダがある場合、コマンド プロンプトで次のように入力して Enter キーを押し、フォルダのアクセス許可を表示します。
xcacls.vbs c:\test
通常、以下のような結果が得られます。
C:\>XCACLS.VBS c:\testMicrosoft (R) Windows Script Host Version 5.6Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.Starting XCACLS.VBS (Version: 3.4) Script at 6/11/2003 10:55:21 AMStartup directory:"C:\test"Arguments Used:        Filename = "c:\test"**************************************************************************Directory: C:\testPermissions:Type     Username                Permissions           InheritanceAllowed  BUILTIN\Administrators  Full Control          This Folder, SubfoldeAllowed  NT AUTHORITY\SYSTEM     Full Control          This Folder, SubfoldeAllowed  Domain1\User1           Full Control          This Folder OnlyAllowed  \CREATOR OWNER          Special (Unknown)     Subfolders and FilesAllowed  BUILTIN\Users           Read and Execute      This Folder, SubfoldeAllowed  BUILTIN\Users           Create Folders / Appe This Folder and SubfoAllowed  BUILTIN\Users           Create Files / Write  This Folder and SubfoNo Auditing setOwner: Domain1\User1


: この xcacls.vbs c:\test の出力例は、グラフィカル ユーザー インターフェイス (GUI) で表示されるテキストと一致しています。コマンド ウィンドウでは正常に表示されない単語もあります。

スクリプトのバージョン、スタートアップ ディレクトリ、および使用した引数も出力されます。

ワイルドカード文字を使用して、ディレクトリ内で一致したファイルを表示することもできます。たとえば次のように入力すると、C:\Test フォルダにある拡張子が ".log" のファイルがすべて表示されます。
xcacls.vbs c:\test\*.log
先頭に戻る


以下の Xcacls.vbs コマンドは Xcacls.vbs の使用例です。

xcacls.vbs c:\test\ /g domain\testuser1:f /f /t /e
このコマンドにより既存のアクセス許可が編集されます。Domain\TestUser1 に C:\Test 内のすべてのファイルに対するフル コントロール アクセス許可を与え、C:\Test のサブフォルダをスキャンして、見つかった任意のファイルを変更します。このコマンドではディレクトリのアクセス許可は変更されません。
xcacls.vbs c:\test\ /g domain\testuser1:f /s /l "c:\xcacls.log"
このコマンドは既存のアクセス許可を置き換えます。Domain\TestUser1 に C:\Test 内のすべてのサブフォルダに対するフル コントロール アクセス許可を与え、C:\Xcacls.log に記録します。このコマンドではファイルは変更されず、ディレクトリはスキャンされません。
xcacls.vbs c:\test\readme.txt /o "machinea\group1"
このコマンドは Readme.txt の所有者をグループ MachineA\Group1 に変更します。
xcacls.vbs c:\test\badcode.exe /r "machinea\group1" /r "domain\testuser1"
このコマンドは、MachineA\Group1 および Domain\TestUser1 の C:\Test\Badcode.exe に対するアクセス許可を無効にします。
xcacls.vbs c:\test\subdir1 /i enable /q
このコマンドはフォルダ C:\Test\Subdir1 の継承を有効にします。画面の出力は行われません。
xcacls.vbs \\servera\sharez\testpage.htm /p "domain\group2":14
このコマンドは、Windows Management Instrumentation (WMI) を使用して \\ServerA\ShareZ にリモート接続します。次にその共有へのローカル パスを取得し、そのパスで、Testpage.htm のアクセス許可を変更します。Domain\Group2 の既存のアクセス許可は変更しませんが、アクセス許可 1 (データの読み取り) および 4 (拡張属性の読み取り) を追加します。/e スイッチが使用されていないため、ファイルの他のアクセス許可は削除されます。
xcacls.vbs d:\default.htm /g "domain\group2":f /server servera /user servera\admin /pass password /e
このコマンドは、WMI を使用して、ServerA に ServerA\Admin としてリモート接続し、Default.htm に対するフル コントロール アクセス許可を Domain\Group2 に与えます。Domain\Group2 の既存のアクセス許可は削除され、ファイルの他のアクセス許可は残ります。
先頭に戻る
関連情報
Xcacls.exe の使用方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
318754 [HOWTO] Xcacls.exe を使用して NTFS アクセス許可を変更する方法
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 825751 (最終更新日 2004-07-15) を基に作成したものです。
プロパティ

文書番号:825751 - 最終更新日: 11/04/2004 06:40:00 - リビジョン: 2.1

Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Web Edition, Microsoft Windows XP Professional, Microsoft Windows XP Home Edition, Microsoft Windows 2000 Datacenter Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Server, Microsoft Windows 2000 Professional

  • kbhowtomaster KB825751
フィードバック