Windowsのシステムを運用する上で、ファイルやフォルダーのアクセス権管理はセキュリティの根幹を成す重要な要素です。
通常はプロパティ画面のセキュリティタブからGUIで設定を行いますが、大量のファイルを一括で処理したり、自動化スクリプトに組み込んだりする場合にはコマンドラインでの操作が欠かせません。
そこで活用されるのが、Windowsに標準搭載されている「icacls」コマンドです。
本記事では、2026年現在の最新のWindows環境においても標準的に利用されているicaclsコマンドの基本的な使い方から、応用的な権限変更の手順までを詳しく解説します。
コマンドプロンプトを使いこなすことで、複雑なアクセス権制御を素早く、かつ正確に実行できるようになりましょう。
icaclsコマンドとは?
icacls(Integrated Control Access Control Lists)は、WindowsのファイルシステムであるNTFS上のアクセス制御リスト(ACL)を表示および変更するためのコマンドラインツールです。
かつて利用されていた「cacls」コマンドの後継として導入され、現在ではWindows 10やWindows 11、Windows Serverなどの主要なOSで標準的に利用されています。
このコマンドを使用することで、ユーザーやグループごとに「読み取り」「書き込み」「フルコントロール」といった詳細な権限を割り当てることが可能です。
GUI操作に比べて、サブフォルダーを含めた一括処理や、特定の条件に合致するファイルのみの変更を効率的に行える点が大きなメリットです。
また、設定したアクセス権をファイルに保存し、別の環境やトラブル復旧時に一括で復元できるバックアップ機能も備えています。
アクセス権を確認する方法
まずは、対象のファイルやフォルダーに現在どのようなアクセス権が設定されているかを確認する方法を学びましょう。
アクセス権を確認するには、引数にファイル名やフォルダーパスを指定して実行します。
rem 指定したフォルダーのアクセス権を表示する
icacls "C:\Work\SampleFolder"
C:\Work\SampleFolder BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
1 個のファイルが正常に処理されました。0 個のファイルで処理に失敗しました。
実行結果には、ユーザー名またはグループ名と、その横にカッコで囲まれた権限コードが表示されます。
出力結果の「(I)」は権限が上位フォルダーから継承されていることを示しており、その後のアルファベットが具体的な権限の内容を表しています。
主な権限コードとその内容は以下の通りです。
| 権限コード | 意味 | 詳細 |
|---|---|---|
| F | フルコントロール | すべての操作が可能 |
| M | 修正 | 読み取り、書き込み、削除が可能 |
| RX | 読み取りと実行 | 内容の表示とプログラムの実行が可能 |
| R | 読み取り | 内容の表示のみが可能 |
| W | 書き込み | データの作成と追加が可能 |
また、継承に関するフラグとして、以下のコードも頻繁に表示されます。
| 継承コード | 意味 |
|---|---|
| (OI) | オブジェクト継承:このフォルダー内のファイルに継承される |
| (CI) | コンテナー継承:このフォルダー内のサブフォルダーに継承される |
| (IO) | 継承のみ:このオブジェクト自体には適用されない |
| (I) | 継承済み:親コンテナーから引き継いだ権限 |
これらのコードを理解することで、どのユーザーに対してどのような制限がかかっているのかを一目で判断できるようになります。
アクセス権を変更する基本操作
アクセス権を変更する際には、主に /grant(付与)、/remove(削除)、/deny(拒否)のオプションを使用します。
操作を誤るとシステムやアプリケーションが正常に動作しなくなる可能性があるため、慎重に実行してください。
権限を付与する(/grant)
特定のユーザーに新しく権限を与える場合は、/grant オプションを使用します。
書式は ユーザー名:権限 の形式で指定します。
rem TestUserに対して、Sample.txtへの「変更(M)」権限を付与する
icacls "C:\Work\Sample.txt" /grant TestUser:M
既存の権限を置き換えるのではなく、新しく追加したい場合は : の前に (許可の種類) を指定することもできますが、通常は上記の形式で十分です。
もしサブフォルダー内の全ファイルに対しても一括で権限を与えたい場合は、/T オプションを併用します。
rem Dataフォルダー以下のすべてのファイル・サブフォルダーに権限を適用する
icacls "C:\Work\Data" /grant TestUser:M /T
権限を削除する(/remove)
特定のユーザーに対するアクセス権の設定そのものをリストから削除したい場合は、/remove オプションを使用します。
これにより、指定したユーザーに関連付けられたACE(アクセス制御エントリ)が削除されます。
rem TestUserのアクセス権設定を削除する
icacls "C:\Work\Sample.txt" /remove TestUser
このコマンドを実行すると、TestUserに個別に割り当てられていた権限が消滅します。
ただし、上位フォルダーからの継承によって得ている権限は、このコマンドだけでは削除できない点に注意してください。
権限を拒否する(/deny)
Windowsのアクセス権には「拒否は許可に優先する」という強力なルールがあります。
/deny オプションを使用すると、特定のユーザーの操作を明示的に禁止できます。
rem TestUserによる書き込みを明示的に拒否する
icacls "C:\Work\Secret.docx" /deny TestUser:W
拒否設定は他のどの許可設定よりも優先されるため、グループで許可されていても個人で拒否されていれば、その操作はブロックされます。
管理上の混乱を避けるため、拒否設定は必要最小限に留めるのがベストプラクティスです。
高度な管理:継承の制御と初期化
Windowsのアクセス権管理を複雑にしている要因の一つが「継承」の仕組みです。
icaclsコマンドでは、この継承設定も細かく制御することが可能です。
継承を無効化する(/inheritance)
親フォルダーからの権限を引き継ぎたくない場合は、/inheritance オプションを使用します。
例えば、親フォルダーの権限をコピーした状態で継承を切り離すには :d を指定します。
rem 継承を無効にし、現在の権限を保持(コピー)する
icacls "C:\Work\Private" /inheritance:d
逆に、継承を完全に破棄してアクセス権を空にするには :r を指定します。
rem 継承を無効にし、すべての継承された権限を削除する
icacls "C:\Work\Private" /inheritance:r
継承を再度有効にしたい場合は、/inheritance:e を実行します。
アクセス権をリセットする(/reset)
手動で設定した個別の権限をすべて破棄し、親フォルダーからの継承設定のみに戻したい場合は /reset オプションが便利です。
rem フォルダーのアクセス権を継承ベースの状態に戻す
icacls "C:\Work\SampleFolder" /reset /T
このコマンドは、トラブルシューティングの際によく使われます。
アクセス権が複雑になりすぎて正解が分からなくなった場合、一度リセットして継承を正しく構成し直すのが最も確実な解決策となります。
アクセス権のバックアップと復元
サーバーのリプレースや大量のファイル移動を行う際、アクセス権を保持したまま移行するのは手間がかかる作業です。
icaclsには、現在のACLをテキストファイルとして保存し、後で一括適用する機能があります。
設定を保存する(/save)
特定のディレクトリ配下のすべてのアクセス権をファイルに書き出します。
rem アクセス権情報をAclBackup.txtに保存する
icacls "C:\Work\Data" /save AclBackup.txt /T
保存されるファイルは独自の形式で記述されており、パス情報も含まれています。
設定を復元する(/restore)
保存したファイルを使って、アクセス権を元の状態に戻します。
rem 保存したファイルからアクセス権を復元する
icacls "C:\Work" /restore AclBackup.txt
復元時の対象パスは、保存した際の親ディレクトリを指定する必要がある点に注意してください。
この機能を活用すれば、万が一設定を誤って権限を壊してしまった場合でも、即座に元の状態へ復旧させることができます。
icaclsを使用する際の注意点とトラブルシューティング
icaclsコマンドは非常に強力ですが、実行環境や構文には注意が必要です。
1. 管理者権限で実行する
アクセス権の変更には、対象オブジェクトの所有権を持っているか、管理者権限が必要です。
コマンドプロンプトを「管理者として実行」してからコマンドを入力してください。
2. スペースを含むパスの扱い
ファイル名やフォルダー名にスペースが含まれる場合は、必ずダブルクォーテーションで囲んでください。
囲み忘れると、コマンドがパスを正しく認識できず、エラーが発生します。
3. ワイルドカードの使用
* や ? といったワイルドカードを使用して、特定の拡張子を持つファイルだけを対象にすることも可能です。
rem すべての.logファイルに対して読み取り権限を付与する
icacls "C:\Logs\*.log" /grant Users:R
4. エラーコードの確認
コマンド実行後に「0 個のファイルで処理に失敗しました」と表示されることを確認しましょう。
もし失敗した数がある場合は、対象のファイルがシステムによってロックされているか、権限不足でアクセスできない可能性があります。
まとめ
icaclsコマンドは、Windows環境におけるファイル管理の効率を劇的に向上させる強力なツールです。
GUIでは時間がかかる大量のデータに対する権限設定や、継承の複雑な制御も、適切なコマンド一行で完結させることができます。
まずは icacls で現在の設定を確認する習慣をつけ、必要に応じて /grant や /reset を使い分けられるようになりましょう。
特に重要なシステムフォルダーや共有フォルダーの操作前には、/save によるバックアップを忘れないことが、安全な運用への第一歩です。
本記事で紹介したテクニックを駆使して、安全で効率的なWindowsのアクセス権管理を実現してください。
