[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

icacls【コマンド】

pointこの用語のポイント

pointWindowsで使えるコマンドだよ

pointファイルやフォルダのアクセス権を操作できるよ

スポンサーリンク

簡単に書くよ

icacls【コマンド】とは

ファイルやフォルダのアクセス権を変更したりバックアップするときに使うコマンド
です。

image piyo

詳しく書くよ

Windows系で使えます。

書き方は……ギブアップ(-A-)

なんか書き方とかいっぱいあって心が折れたのでヘルプをコピペしておきますφ(--;

※2014/01/21追記:自分の言葉で説明を追加しました。「仕方ないな~、見てやるよ」という方は、下の方に移動してください。

※2014/04/29追記:「あ~、ごちゃごちゃした説明はいらんから、ざっくりした使い方をズバっと一覧で見せろよ!」というせっかちな方は、もっと下の方に移動してください。

---------------

ICACLS <名前> /save <ACL ファイル> [/T] [/C] [/L] [/Q]
名前が一致するすべてのファイルとフォルダーの DACL を <ACL ファイル> に
格納して、後で /restore で指定できるようにします。SACL、所有者、整合性
ラベルは保存されません。

ICACLS <ディレクトリ> [/substitute <旧 SID> <新 SID> [...]] /restore:<ACL ファ
イル> [/C] [/L] [/Q]
格納されている DACL を <ディレクトリ> 内のファイルに適用します。

ICACLS <名前> /setowner <ユーザー> [/T] [/C] [/L] [/Q]
すべての一致する名前の所有者を変更します。このオプションは所有権の変更を
強制しません。所有権の変更を行うには、takeown.exe ユーティリティを使用し
ます。

ICACLS <名前> /findsid <SID> [/T] [/C] [/L] [/Q]
<SID> が明示されている ACL を含むすべての一致する名前を検索します。

ICACLS <名前> /verify [/T] [/C] [/L] [/Q]
ACL が正規の形式ではないか長さが ACE 数と一致しないすべてのファイルを
検索します。

ICACLS <名前> /reset [/T] [/C] [/L] [/Q]
すべての一致するファイルについて、ACL を継承された既定の ACL と置換します。

ICACLS <名前> [/grant[:r] <SID>:perm[...]]
[/deny <SID>:perm [...]]
[/remove[:g|:d]] <SID>[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]

/grant[:r] <SID>:perm は、指定されたユーザー アクセス権を付与します。
:r を指定すると、以前に付与されたすべての明示的なアクセス許可は新しい
アクセス許可に置き換えられます。
:r を指定しない場合、新しいアクセス許可は以前に付与された明示的な
アクセス許可に追加されます。

/deny <SID>:perm は、指定されたユーザー アクセス権を明示的に否定します。
指定されたアクセス許可の明示的な否定 ACE が追加され、明示的な許可内容
に含まれた同じアクセス許可は削除されます。

/remove[:[g|d]] <SID> は、ACL 内にあるすべての <SID> を削除します。
:g を指定すると、その SID に対して許可されたすべての権限を ACL から
削除します。
:d を指定すると、その SID に対して否定されたすべての権限を ACL から
削除します。

/setintegritylevel [(CI)(OI)] レベルは、すべての一致するファイルに整合性
ACE を追加します。このレベルは次の 1 つとして指定されます。
L[ow]
M[edium]
H[igh]
整合性 ACE の継承オプションは、レベルの前に配置でき、
ディレクトリに対してのみ適用されます。

/inheritance:e|d|r
e - 継承を有効にします。
d - 継承を無効にし、ACE をコピーします。
r - 継承された ACE をすべて削除します。


注意:
<SID> は数値形式またはフレンドリ名形式で指定できます。数値形式の場合は、
SID の始めに * を付けます。

/T は、<名前> で指定されたディレクトリ以下のすべての一致するファイルと
ディレクトリに対してこの処理が実行されることを指定します。

/C は、どのようなファイル エラーが発生してもこの処理が続行されることを
指定します。ただしエラー メッセージは表示されます。

/L は、この処理がターゲットではなくシンボリック リンク自体に対して実行
されることを指定します。

/Q は、icacls が成功のメッセージを抑制することを指定します。

ICACLS は、ACE エントリの正規の順序を維持します:
明示的な否定内容
明示的な許可内容
継承された否定内容
継承された許可内容

perm はアクセス許可マスクであり、次の 2 種類の方法で指定できます:
単純な権限を列挙:
N - アクセス権なし
F - フル アクセス権
M - 変更アクセス権
RX - 読み取りと実行のアクセス権
R - 読み取り専用アクセス権
W - 書き込み専用アクセス権
D - 削除アクセス権
特定の権限をコンマ区切りでかっこ内に列挙:
DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データ読み取り/ディレクトリの一覧表示
WD - データ書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み
継承権限はどちらの形式の前にも配置でき、ディレクトリにのみ適用され
ます:
(OI) - オブジェクト継承
(CI) - コンテナー継承
(IO) - 継承のみ
(NP) - 継承を適用しない
(I) - 親コンテナーから継承した権限

例:

icacls c:\windows\* /save <ACL ファイル> /T
- c:\windows より下にあるすべてのファイルとサブディレクトリの ACL を
<ACL ファイル> に保存します。

icacls c:\windows\ /restore <ACL ファイル>
- <ACL ファイル> 内のファイルのうち c:\windows とそのサブディレクトリ
内に存在するすべてのファイルの ACL を復元します。

icacls <ファイル> /grant Administrator:(D,WDAC)
- Administrator ユーザーに、<ファイル> に対する削除および DAC 書き込み
のアクセス許可を与えます。

icacls <ファイル> /grant *S-1-1-0:(D,WDAC)
- SID S-1-1-0 によって定義されたユーザーに、<ファイル> に対する削除
および DAC 書き込みのアクセス許可を与えます。

---------------

いつの日か……いつの日か気が向いたらきちんと自分なりの言葉で書き直しますm(__)m
取りあえずのところはご容赦ください(-人-;)

※2014/01/21追記:自分の言葉で説明を追加しました。頑張って書きました。

まずオプションから書いておきましょうね。
オプションは以下の通りです。

オプション説明
/T指定したフォルダ配下の条件が一致する、すべてのファイルとフォルダに対して処理を行うよ。要するにサブフォルダも処理対象に含めるよ、ってこと
/C途中でエラーになっても処理を続けるよ。あっ、エラーメッセージは表示してあげるね
/L対象がシンボリックリンクだったら、参照先だけじゃなくてそのシンボリックリンク自体も処理するよ
/Q処理が成功したときは特に報告しないよ

さて、それでは実際の使い方ですが……まず

ICACLS [処理対象フォルダやファイル] /save [保存するファイル名] [オプション]

と書くと、指定したフォルダ・ファイルのアクセス権がファイルに保存されます。
例えば

ICACLS * /save hoge.txt /T

と書くと、現在いるフォルダ配下のすべてのファイルとフォルダのアクセス権が「hoge.txt」に出力されます。
これがヘルプ

ICACLS <名前> /save <ACL ファイル> [/T] [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「現在のアクセス権をファイルに出力する」になります。

次に

ICACLS [処理対象フォルダ] /restore [読み込むファイル名] [オプション]

と書くと、指定したファイルからアクセス権を読み込んで処理対象フォルダに適用します。
さっきの逆バージョンですね。
例えば

ICACLS . /restore hoge.txt /T

と書くと、現在いるフォルダ配下のすべてのファイルとフォルダに対して「hoge.txt」に書かれている内容でアクセス権を設定します。
実行ユーザに管理者権限が無いとできないのでご注意くださいね。
これがヘルプで

ICACLS <ディレクトリ> [/substitute <旧 SID> <新 SID> [...]] /restore:<ACL ファイル> [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「ファイルに記載されているアクセス権をフォルダに適用する」になります。

次に

ICACLS [処理対象フォルダやファイル] /setowner [ユーザ名] [オプション]

と書くと、指定フォルダ&ファイルの所有者が[ユーザ名]で指定したユーザに一括で変更されます。
例えば

ICACLS hoge.txt /setowner makoto

と書くと、「hoge.txt」の所有者が「makoto」になります。
これがヘルプで

ICACLS <名前> /setowner <ユーザー> [/T] [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「所有者を変更する」になります。

次に

ICACLS [処理対象フォルダやファイル] /findsid [探したいSIDとかユーザとか] [オプション]

と書くと、指定フォルダ&ファイルからSIDが一致するファイルを検索してくれます。
まぁSIDじゃなくてユーザ名とかでも大丈夫っぽいですけどね。
例えば

ICACLS * /findsid "makoto"

と書いて実行したら、所有者が「makoto」のファイルが検索されました。
これがヘルプで

ICACLS <名前> /findsid <SID> [/T] [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「SIDを対象にファイルやフォルダを検索する」になります。

次に

ICACLS [処理対象フォルダやファイル] /verify [オプション]

と書くと、アクセス制御リスト(ACL)とやらの形式か長さがおかしいのを探してくれるっぽいのですが、よく分かりません。
試しに

ICACLS * /verify /T

と書いて実行したら、いろんなファイルが見つかりました。
これがヘルプで

ICACLS <名前> /verify [/T] [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「ACLがなんかおかしいのを見つける」になります、多分。

次に

ICACLS [処理対象フォルダやファイル] /reset [オプション]

と書くと、アクセス権の変更を無かったことにしてくれます。
親フォルダのアクセス権限を継承した形に戻るのだそうです。
例えば

ICACLS * /reset /T

と書いて実行すれば権限がリセットされますよ。
これがヘルプで

ICACLS <名前> /reset [/T] [/C] [/L] [/Q]

と書かれている部分です。
処理の内容としては「アクセス権限をリセットする」になります。

次に

ICACLS [処理対象フォルダやファイル] /grant [SIDとかユーザとか]:[付与する権限] [オプション]
ICACLS [処理対象フォルダやファイル] /grant:r [SIDとかユーザとか]:[付与する権限] [オプション]

と書くと、アクセス権を個別に付与することができます。
これは、ちょっと表現を変えると

ICACLS [このフォルダやファイルを対象に] /grant(付与する) [誰に]:[どの権限を] [オプション]

コマンドです。
例えば

ICACLS hoge.txt /grant makoto:(RD,WD)

と書いて実行すると「hoge.txt」に対して、「makoto」さんのRD(データ読み取り/ディレクトリの一覧表示)とWD(データ書き込み/ファイルの追加)が追加されます。
「RD」とか「WD」の説明は、ヘルプの「perm はアクセス許可マスクであり、次の 2 種類の方法で指定できます:」の部分以降をご覧ください。

ちなみに「:r」を指定して「/grant:r」とすると権限の置換、未指定で「/grant」だと権限の追加になります。

これがヘルプで

ICACLS <名前> [/grant[:r] <SID>:perm[...]]

と書かれている部分です。

次に

ICACLS [処理対象フォルダやファイル] /deny [SIDとかユーザとか]:[付与する権限] [オプション]

と書くと、アクセス権の否定を個別に付与することができます。
要は禁止できるってことですね。
これは、ちょっと表現を変えると

ICACLS [このフォルダやファイルを対象に] /deny(拒否する) [誰に]:[どの権限を] [オプション]

なコマンドです。
例えば

ICACLS hoge.txt /deny makoto:(RD,WD)

と書いて実行すると「hoge.txt」に対して、「makoto」さんのRD(データ読み取り/ディレクトリの一覧表示)と(データ書き込み/ファイルの追加)が拒否されます。
もし事前に「/grant」オプションで追加していたとしても、許可がなくなります。

これがヘルプで

[/deny <SID>:perm [...]]

と書かれている部分です。
ヘルプの

ICACLS <名前> [/grant[:r] <SID>:perm[...]]
[/deny <SID>:perm [...]]
[/remove[:g|:d]] <SID>[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]


の部分はいくつかのコマンドがまとめて書かれていますよ。分かりにくいですね。ぶーぶー。

そろそろ終わりも見えてきました。
次に

ICACLS [処理対象フォルダやファイル] /remove [SIDとかユーザとか] [オプション]
ICACLS [処理対象フォルダやファイル] /remove:g [SIDとかユーザとか] [オプション]
ICACLS [処理対象フォルダやファイル] /remove:d [SIDとかユーザとか] [オプション]

と書くと、アクセス権のところからユーザを削除できます。
ファイルのプロパティの「セキュリティ」タブに「グループ名またはユーザ名(G)」なエリアがあると思いますが、そこからサヨナラしちゃいます。

例えば

ICACLS hoge.txt /remove makoto

と書いて実行すると「hoge.txt」から「makoto」さんのアクセス権限の設定が無くなっちゃいます。

ちなみに「:g」を指定して「/remove:g」とすると「やっていーよ」権限の削除、「:d」を指定して「/remove:d」とすると「やっちゃ駄目だよ」の指定が削除されるようです。

これがヘルプで

[/remove[:g|:d]] <SID>[...]]

と書かれている部分です。

次に

ICACLS [処理対象フォルダやファイル] /setintegritylevel [レベル]

と書くと、整合性レベルとやらを設定できます。
整合性レベルについては、いろいろややこしいのでここでは触れません。
「整合性レベルって何?」な人は、頑張って自力で調べてください。

整合性レベルの指定は「L」「M」「H」のいずれかで指定します。

例えば

ICACLS hoge.txt /setintegritylevel H

と書いて実行すると「hoge.txt」の整合性レベルが「High」の状態になります。

これがヘルプで

[/setintegritylevel Level:policy[...]]

と書かれている部分です。

いや~、くそ長かったですね。
ここまで読んでくれた方は本当にお疲れ様でした。

あっ、そうそう。
オプション無しで

ICACLS [処理対象フォルダやファイル]

と指定すると、現在のアクセス権限設定状況が見られます。
例えば

ICACLS hoge.txt

と指定すると「hoge.txt」の設定状況が表示されますよ。

ふぃ~、長かった。
最後にまとめておきますね。

■現在のアクセス権をファイルに出力する
ICACLS [処理対象フォルダやファイル] /save [保存するファイル名] [オプション]

■ファイルに記載されているアクセス権をフォルダに適用する
ICACLS [処理対象フォルダ] /restore [読み込むファイル名] [オプション]

■所有者を変更する
ICACLS [処理対象フォルダやファイル] /setowner [ユーザ名] [オプション]

■SIDを対象にファイルやフォルダを検索する
ICACLS [処理対象フォルダやファイル] /findsid [探したいSIDとかユーザとか] [オプション]

■ACLがなんかおかしいのを見つける
ICACLS [処理対象フォルダやファイル] /verify [オプション]

■アクセス権限をリセットする
ICACLS [処理対象フォルダやファイル] /reset [オプション]

■アクセス権を個別に付与する
ICACLS [処理対象フォルダやファイル] /grant [SIDとかユーザとか]:[付与する権限] [オプション]
ICACLS [処理対象フォルダやファイル] /grant:r [SIDとかユーザとか]:[付与する権限] [オプション]

■アクセス権の否定を個別に付与する
ICACLS [処理対象フォルダやファイル] /deny [SIDとかユーザとか]:[付与する権限] [オプション]

■アクセス権のところからユーザを削除する
ICACLS [処理対象フォルダやファイル] /remove [SIDとかユーザとか] [オプション]
ICACLS [処理対象フォルダやファイル] /remove:g [SIDとかユーザとか] [オプション]
ICACLS [処理対象フォルダやファイル] /remove:d [SIDとかユーザとか] [オプション]

■整合性レベルとやらを設定する
ICACLS [処理対象フォルダやファイル] /setintegritylevel [レベル]


が「icacls」コマンドの使い方です。
長々とお疲れ様でした!
「icacls」さん、地味にいろんなことをする奴でしたね。

image piyo2

一言でまとめるよ

まぁ「icacls」ってコマンドが出てきたら「アクセス権を変更するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク