目次

コンソール版の使用方法

コンソール版は、以下のようなWindowsのコマンドプロンプト上で動作します。

まずWindowsのコマンドプロンプトを起動します。Windowsのコマンドプロンプトを起動する方法はいくつかあります。

  1. スタートメニューから起動:
    • スタートメニューをクリックします。
    • 「検索する」ボックスに「cmd」と入力します。
    • 検索結果で「コマンド プロンプト」または「cmd.exe」を見つけ、クリックします。
  2. キーボードショートカット:
    • 「Windowsキー + R」を押して、「実行」ダイアログボックスを開きます。
    • 「cmd」と入力して、「Enter」キーを押します。これにより、コマンド プロンプトが開きます。

続いてACLDumpConsole.exeが保存されたフォルダにコマンドプロンプト上で移動(cdコマンド)します。例えば C:\ACLDumpというフォルダにACLDumpConsole.exeが保存されている場合、以下の入力した後リターンキーを入力します。

cd C:\ACLDump

以上で、ACLDumpConsole.exe(コンソール版ACLDump)を利用できる準備が整いました。後述のコマンドライン文法を参考に、以下のようにACLDumpConsole.exeを実行します。

AclDumpConsole.exe $(コマンドラインオプションを指定)

コマンドライン文法

ACLDumpConsole [/r <階層数>] <対象フォルダ> 
   [/showfiles] 
   [/hideinherited] 
   [/hideinheritedace] 
   [/strictinheritcheck] 
   [/showtop] 
   [/ignoreownerace] 
   [/showdir] 
   [/outfilename <出力ファイル名>] [/outfilenameutf8 <出力ファイル名(UTF8)>] 
   [/progress <進捗ファイル名>] 
   [/targethost <ホスト名>] 
   [/rule <パーミッション名定義ファイル>] 
   [/groupformat <グループ名/ユーザー名フォーマット]

コマンドラインオプション

/showfiles

ファイルも出力(処理)対象にする。(デフォルトはフォルダのみ出力する)

/showdir

全てのフォルダを出力する。(無条件に少なとも1行は出力される)

/hideinherited

親フォルダから継承したままのACLのファイル/フォルダは出力しない。

/hideinheritedace

親フォルダから継承していないACEだけを出力する。

/strictinheritcheck

親フォルダから継承したとマークされているACEのみで構成されているACLであっても、親フォルダのACLと各エントリを比較して、完全一致しない場合に当該ACLを全部出力する。

/showtop も自動的にオンになります。

/showtop

スキャン対象のトップフォルダ(最上位フォルダ)について無条件にACLを出力します。

/hideinherited や /hideinheritedace が指定されても出力されます。

/outfilename <出力ファイル名>

結果をファイル(SJIS)に書き出します。

/outfilenameutf8 <出力ファイル名>

結果をファイル(UTF8)に書き出します。

/progress <進捗ファイル名>

進捗状況をファイルに書き出します。

/targethost <ホスト名>

ユーザー名/グループ名のデコード時に指定されたホストに問い合わせて行います。

/rule <パーミッション定義フィールド>

通常使用しません。

F=フルコントロール、C=変更 の記号(「F」「C」など)を定義できます。

/ignoreownerace

「このフォルダ/このファイルのみ」のフルコントロール許可のACEを無視(出力省略)します。

/groupformat <グループ名/ユーザー名フォーマット>

出力結果のグループ名/ユーザー名の文字列フォーマットを変数で設定できます。

既定値は $(domain)$(group) です。

変 数

変 数意 味
$(name)グループ名もしくはユーザー名
$(domain)ドメイン名もしくはコンピュータ名
$(displayname)表示名(ActiveDirectoryやユーザー管理に設定されています)。未設定の場合は空白が出力されます。表示名はユーザーしか取得できない。
$(name_or_displayname)表示名が空白(または未設定)の場合、代わりに $(group) を出力する。

変数の使用例

/groupformat $(domain)\$(name)

TEPPI\tanaka
TEPPI\suzuki

/groupformat "$(domain)\$(name) ($(displaynanme))"

​TEPPI\tanaka (田中太郎)
TEPPI\suzuki ()

/groupformat $(domain)\$(name_or_displayname)

TEPPI\田中太郎
​TEPPI\suzuk

コマンド実行例

T:¥workフォルダ以下2階層をチェックする

  階層数を省略した場合、2階層までスキャンします。

AclDumpConsole T:¥work

T:¥workフォルダ以下3階層をチェックする

AclDumpConsole /r 3 T:¥work

T:¥workフォルダ以下4階層と T:¥public以下2階層とC:¥temp以下2階層をチェックする

  スキャン対象フォルダ毎に階層数を指定します

AclDumpConsole /r 4 T:¥work /r 2 T:¥public /r 2 C:¥temp

フォルダだけでなくファイルも表示する、ただし、親フォルダから継承したACLだけのファイルは出力しない

AclDumpConsole /r 4 T:¥work /showfiles /hideinherited

上記において、最上位フォルダ(T:\work)は親フォルダから継承しただけであっても無条件に出力する

AclDumpConsole /r 4 T:¥work /showfiles /hideinherited /showtop

親フォルダから継承していないACE(アクセス制御エントリ)のみを出力する

AclDumpConsole /r 4 T:¥work /r 2 T:¥public /hideinheritedace

上記において、最上位フォルダ(T:\work)は親フォルダから継承しただけであっても無条件に出力する

AclDumpConsole /r 4 T:¥work /hideinheritedace /showtop

標準出力の代わりに出力ファイル名を指定する

AclDumpConsole /r 4 T:¥work /outfilename C:¥temp¥test.txt

進捗状況をファイル出力する

  フォルダ/ファイルのスキャン1,000件ごとに進捗状況をファイルに書き出します。

AclDumpConsole /r 99 T:¥ /progress progress.txt

このように進捗状況ファイルのファイル名を指定すると、そのファイルに 1,000件スキャンごとの進捗状況が報告されます。
(巨大ファイルサーバの処理において、どの程度処理が進んだかを確認することができます。)

出力の読み方

下記の順でタブ区切りテキストとして、各行に出力されます。

(出力例)

t:¥okd F 1 許可 SYSTEM F (OI)(CI) -


1列目2列目3列目4列目5列目6列目7列目8列目
t:¥okdF1許可SYSTEMF(OI)(CI)-

1列目 : フォルダ/ファイルのパス

ファイルもしくはフォルダのフルパスです。

2列目 : 種別

F : フォルダ
T : ファイル

3列目 : NoACLを構成するACE(エントリ)の連番

同一ファイルの中では、1から順に振られます。
なお、親フォルダからACLを継承せず置換しているときは、特別に0番のエントリが出力されます。
【参考】No=0のエントリの意義

4列目 : 許可/拒否

許可のエントリと、拒否のエントリの別を表示します。

5列目 : ユーザー/グループ

ユーザー/グループを示すSIDをデコードして、ユーザー名/グループ名として表示します。
デコードできない場合はSIDのまま表示されます。

6列目 : アクセス権

アクセスマスクを表現します。
dumprule.txtに定義された代表的なアクセスマスクについては、下記のように表示されます。

F : フルコントロール
C : 変更
R : 読取
"" : なし

これら以外は「特殊なアクセスマスク」として扱われ、下記名称のカンマ区切り列挙となります。

ACLDumpの表示Windowsエクスプローラの表示
execフォルダーのスキャン/ファイルの実行
readフォルダーの一覧/データの読み取り
read-attr属性の読み取り
read-xa拡張属性の読み取り
writeファイルの作成/データの書き込み
appendフォルダーの作成/データの追加
write-attr属性の書き込み
write-xa拡張属性の書き込み
del-childサブフォルダーとファイルの削除
delete削除
read-aclアクセス許可の読み取り
write-aclアクセス許可の変更
take-own所有権の取得

7列目 : フラグ(適用先)

出 力説 明
このフォルダのみ
(OI)(CI)このフォルダ、サブフォルダおよびファイル
(CI)このフォルダとサブフォルダ
(OI)このフォルダとファイル
(OI)(CI)(IO)サブフォルダとファイルのみ
(CI)(IO)サブフォルダのみ
(OI)(IO)ファイルのみ

(OI) = このフォルダ以下のファイルにも適用する(Object Inherit)
(CI) = このフォルダ以下のフォルダにも適用する(Container Inherit)
(IO) = 継承先のみに適用する(Inherit Only)
(NP) = サブフォルダ以下のファイル・フォルダまでは適用しない(Non-Propagate)

8列目 : 継承タイプ

出 力説 明
 ""親フォルダから継承したままのACLのエントリ(ACE)
 +親フォルダから継承したACLに追加されたエントリ(ACE)
 -親フォルダから継承せずに置換したACLのエントリ(ACE)
 .親フォルダから継承せずに置換したACLの0番目に出力されるダミーACEです
?実行ユーザーの権限不足などでアクセス権の読み取りに失敗したときに出力されるダミーのACE
X「/strictinheritcheck」オプションを指定して継承ACLのチェックを厳格に行う場合、親フォルダから継承しているはずなのに親フォルダと異なるACEを持つ、すなわち継承関係に矛盾が発見されたACLのACE
*「/showdir」オプションを指定したとき、同時に「/hideinherited」「/hideinheritedace」を指定していても親フォルダから継承したACLを持つフォルダについて強制的にフォルダ名が出力されるダミーACE

※ 親フォルダから継承せずにACLを置換している場合、特別に0番目のエントリが出力されます。

t:¥okd F 0 ―― ― - - .
t:¥okd F 1 許可 SYSTEM F (OI)(CI) -
t:¥okd F 2 許可 TEPPI¥okd C (OI)(CI) -

9列目 : その他

出力結果に「?」が表示される場合があります。これは、ACLDumpの実行ユーザーが、該当フォルダ(ファイル)に対して、アクセス権の読み取り権限を持たないことが原因です。「管理者で実行」するなど、アクセス権の読み取り権限を持つユーザーで実行するか、該当ユーザーにアクセス権の読み取り権限を付与することによって、正常な出力が可能になります。

c:\share\teppi\work\common\社内連絡 F 0 不明 ? ? - ?

【参考】No=0のエントリの意義

親フォルダからACLを継承せず、置換しているファイル / フォルダを目立たせるために、あえて出力しています。将来的に、ACLDumpまたはシリーズ製品でACL書き換え機能を実装するときに、「ダミーエントリがあったら、ACLをクリアする(継承を切る)。+-のエントリがあったらエントリ(ACE)を追加する」という扱いにすることを想定しています。

ご質問・ご相談などありましたら
お気軽にお問い合わせください