Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法

結論:Windowsのファイルやフォルダのアクセス権は、コマンドプロンプトで icacls "C:\Data" を実行すると確認できます。変更前には /save でACLを退避し、付与は /grant、既存の明示的な許可を置き換える場合だけ /grant:r を使います。フォルダ配下へ継承させるときは (OI)(CI) を明示してください。/deny、/reset /t、/inheritancelevel:r は影響が大きく、システムフォルダや本番共有で試す操作ではありません。まずテスト用フォルダで結果を確認し、必要最小限の権限に限定します。 最新の画面名や提供条件は更新で変わるため、以下の順番で確認してください。

目次

最初に確認するポイント

症状・条件主な原因最初の確認
icaclsの結果に(I)(OI)(CI)(F)などが並び、意味が分からない権限本体と継承フラグが同じ行に表示されています。(I)は親から継承、(OI)は子ファイル、(CI)は子フォルダへの継承指定、Fはフルコントロールとして分けて読みます。
権限を付けたのにサブフォルダやファイルへ反映されない対象フォルダだけに権限を付け、子要素向けの(OI)(CI)または既存項目への再帰処理を指定していない可能性があります。親フォルダのACEに(OI)(CI)があるか、既存の子要素が継承を有効にしているかを確認します。
管理者として実行しても「アクセスが拒否されました」と表示される昇格だけでは対象のDACL、所有権、組織ポリシー、ファイル使用中などの制約を必ずしも回避できません。対象パス、現在の所有者、明示的な拒否ACE、親からの継承、ファイルを使用中のプロセスを確認します。
設定後にアプリやサービスが起動しなくなった/reset、/remove、継承解除、または再帰指定により、必要なサービスアカウントのACEまで変更した可能性があります。変更を止め、事前に保存したACLと変更対象一覧を確認します。システム領域なら自己判断で追加変更せず、復旧手順へ切り替えます。

安全な対処手順

1. 対象と実行環境を確認する

Windows 11 22H2以降では、コマンドプロンプトを起動してもWindows Terminal内に表示されるのが標準です。これはコマンドが廃止されたという意味ではありません。読み取りだけなら通常権限で始め、変更時に必要な場合だけ[管理者として実行]を使います。パスとアカウント名を確定し、空白を含むパスは必ず引用符で囲みます。

  1. スタートで「cmd」を検索するか、Windows Terminalで[コマンド プロンプト]プロファイルを開きます。
  2. 対象はテスト用フォルダで先に確認します。
  3. 個人ユーザーよりも、管理されたセキュリティグループへ権限を付ける方が運用しやすい場合があります。
whoami
icacls "C:\Data"

注意:管理者として実行しても、所有権やDACLを自動的に無視できるわけではありません。

2. 現在のACLを読み解く

icaclsの結果では、Fがフルコントロール、Mが変更、RXが読み取りと実行、Rが読み取り、Wが書き込み、Dが削除です。(I)は親から継承されたACE、(OI)は子ファイル、(CI)は子フォルダへ継承する指定です。明示的な拒否、明示的な許可、継承された拒否、継承された許可の順に評価されるため、単に許可を追加しても拒否ACEがあれば期待どおりにならないことがあります。

  1. 権限記号と継承記号を別々に読みます。
  2. ユーザー名だけでなくSIDでも指定できます。数値SIDは先頭にアスタリスクを付けます。
  3. 共有フォルダではNTFS権限に加えて共有権限も確認します。
icacls "C:\Data"
icacls "C:\Data" /verify

注意:Fを安易に付けると、削除や権限変更まで許可します。通常はR、RX、Mのどれで足りるかを先に検討してください。

3. 変更前にACLを保存する

再帰変更を行う前に、対象配下のDACLをファイルへ保存します。保存先は対象フォルダの外に置き、変更日時、対象パス、実行者も記録してください。/c を付けると一部でエラーが出ても処理を続けるため、終了後にエラー行を必ず確認します。

  1. バックアップ先フォルダを事前に作成します。
  2. 保存ファイルを対象ツリーの外に置きます。
  3. 本番変更前に復元コマンドをテスト用コピーで確認します。
icacls "C:\Data\*" /save "C:\AclBackup\Data-acl.txt" /t /c
icacls "C:\Data" /restore "C:\AclBackup\Data-acl.txt" /c

注意:/save が保存するのはDACLです。データ本体のバックアップや、すべてのセキュリティ情報を置き換えるものではありません。

4. 必要最小限の許可を付与または置換する

新しい明示的な許可を追加する場合は /grant、同じSIDの既存の明示的な許可を置き換える場合だけ /grant:r を使います。フォルダ自体と配下のファイル・サブフォルダに継承させる例では (OI)(CI) を付けます。実行後は、対象ユーザーで読み取り・作成・更新・削除のどこまで可能かを実地確認してください。

  1. 閲覧だけならRXまたはRを検討します。
  2. ファイルの作成・変更・削除が必要ならMを検討します。
  3. Fは所有権やACL変更まで含むため、管理者用途以外では慎重にします。
  4. /grant:r は明示的な許可を置き換えますが、明示的な拒否や継承ACEまで消す操作ではありません。
icacls "C:\Data" /grant "CONTOSO\User1":(OI)(CI)M
icacls "C:\Data" /grant:r "CONTOSO\User1":(OI)(CI)RX
icacls "C:\Data"

注意:コマンドはコマンドプロンプト用です。PowerShellでは括弧の解釈が異なるため、そのまま貼らず、cmd.exeで実行してください。

5. 削除と継承設定は意味を確認してから行う

許可ACEだけを外すなら /remove:g、拒否ACEだけを外すなら /remove:d を使えます。継承は /inheritancelevel:e で有効、d で無効化しつつ継承ACEを明示ACEとしてコピー、r で継承を無効化して継承ACEを削除します。r はリセットではありません。結果が大きく変わるため、対象フォルダ単位で確認しながら進めます。

  1. 削除前に、そのSIDがサービスや共有アクセスに使われていないか確認します。
  2. 継承を無効にする必要が本当にあるかを見直します。
  3. 再帰指定 /t は対象件数を把握した後だけ使います。
icacls "C:\Data" /remove:g "CONTOSO\User1"
icacls "C:\Data" /inheritancelevel:e
icacls "C:\Data" /inheritancelevel:d

注意:/inheritancelevel:r、/reset /t、/deny はアクセス不能を生みやすい操作です。C:\Windows、C:\Program Files、ユーザープロファイルのルート、本番共有へ例示どおり実行しないでください。

よくある質問

icaclsは管理者として実行しないと使えませんか?

表示だけなら、現在のユーザーがACLを読み取れる範囲で通常権限でも使えます。変更には対象の権限を変更できる権利が必要です。管理者として実行すると可能になる場合はありますが、所有権、明示的な拒否、組織ポリシーなどにより拒否されることもあります。

/grantと/grant:rの違いは何ですか?

/grant は指定SIDの明示的な許可へ権限を追加し、/grant:r はそのSIDに対する既存の明示的な許可を指定内容で置き換えます。どちらも明示的な拒否や親から継承されたACEを自動的に消す操作ではありません。変更後は必ずicaclsで結果を読み直してください。

/inheritancelevel:rは権限を初期状態へ戻すコマンドですか?

いいえ。r は継承を無効にし、継承されたACEだけを削除します。結果として必要なアクセス権まで消える可能性があります。継承を有効に戻すなら e、継承ACEを明示ACEとして残して無効化するなら d です。

公式情報

画面や仕様が異なる場合は、利用中の製品・契約・管理ポリシーを確認したうえで公式情報を参照してください。

まとめ

原因を一つずつ切り分け、変更前の状態と結果を記録しながら進めることが重要です。操作後は同じ症状が再発しないか確認し、組織管理の端末ではポリシー変更を管理者へ確認してください。

既存記事から引き継いだ画面例

画面はWindowsやアプリの更新で変わることがあります。名称が異なる場合は、前述の現行手順を優先してください。

Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 1
旧画面の例です。現行UIは本文の手順を優先してください。
Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 2
旧画面の例です。現行UIは本文の手順を優先してください。
Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 3
旧画面の例です。現行UIは本文の手順を優先してください。
Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 4
旧画面の例です。現行UIは本文の手順を優先してください。
Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 5
旧画面の例です。現行UIは本文の手順を優先してください。
Windowsのコマンドプロンプトでアクセス権限を表示・管理する方法 手順画面 6
旧画面の例です。現行UIは本文の手順を優先してください。

関連コンテンツ

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次