- 1. コンソール版の使用方法
- 2. コマンドライン文法
- 2.1. コマンドラインオプション
- 2.1.1. /showfiles
- 2.1.2. /showdir
- 2.1.3. /hideinherited
- 2.1.4. /hideinheritedace
- 2.1.5. /strictinheritcheck
- 2.1.6. /showtop
- 2.1.7. /outfilename
- 2.1.8. /outfilenameutf8
- 2.1.9. /progress
- 2.1.10. /targethost
- 2.1.11. /rule
- 2.1.12. /ignoreownerace
- 2.1.13. /groupformat
- 2.2. 変 数
- 2.2.1. 変数の使用例
- 3. コマンド実行例
- 3.1.1. T:¥workフォルダ以下2階層をチェックする
- 3.1.2. T:¥workフォルダ以下3階層をチェックする
- 3.1.3. T:¥workフォルダ以下4階層と T:¥public以下2階層とC:¥temp以下2階層をチェックする
- 3.1.4. フォルダだけでなくファイルも表示する、ただし、親フォルダから継承したACLだけのファイルは出力しない
- 3.1.5. 上記において、最上位フォルダ(T:\work)は親フォルダから継承しただけであっても無条件に出力する
- 3.1.6. 親フォルダから継承していないACE(アクセス制御エントリ)のみを出力する
- 3.1.7. 上記において、最上位フォルダ(T:\work)は親フォルダから継承しただけであっても無条件に出力する
- 3.1.8. 標準出力の代わりに出力ファイル名を指定する
- 3.1.9. 進捗状況をファイル出力する
- 4. 出力の読み方
- 4.1.1. 1列目 : フォルダ/ファイルのパス
- 4.1.2. 2列目 : 種別
- 4.1.3. 3列目 : NoACLを構成するACE(エントリ)の連番
- 4.1.4. 4列目 : 許可/拒否
- 4.1.5. 5列目 : ユーザー/グループ
- 4.1.6. 6列目 : アクセス権
- 4.1.7. 7列目 : フラグ(適用先)
- 4.1.8. 8列目 : 継承タイプ
- 4.1.9. 9列目 : その他
- 4.1. 【参考】No=0のエントリの意義
コンソール版の使用方法
コンソール版は、以下のようなWindowsのコマンドプロンプト上で動作します。
まずWindowsのコマンドプロンプトを起動します。Windowsのコマンドプロンプトを起動する方法はいくつかあります。
- スタートメニューから起動:
- スタートメニューをクリックします。
- 「検索する」ボックスに「cmd」と入力します。
- 検索結果で「コマンド プロンプト」または「cmd.exe」を見つけ、クリックします。
- キーボードショートカット:
- 「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:¥okd | F | 1 | 許可 | SYSTEM | F | (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)を追加する」という扱いにすることを想定しています。