NTFSアクセス権は、Windowsのファイルやフォルダーを「誰が、何をできるか」で制御する仕組みです。名前だけを見て「管理者なら全部開ける」「拒否が常に最優先」と覚えると誤設定につながります。実際はユーザーとグループのSID、DACL内のACE、明示・継承、アクセス方法を合わせて判定します。まず現在の権限を読み取り、実効アクセスを確認し、変更は小さなテストフォルダーで検証します。
NTFSアクセス権を構成する5つの要素
SID:名前ではなく識別子で管理する
Windowsはユーザー名やグループ名の表示だけでなく、SIDという一意の識別子で主体を扱います。同じ文字列のアカウントを作り直してもSIDは別物です。退職者のアカウント削除後などに、アクセス許可一覧が「不明なアカウント」とSIDだけで表示されるのはこのためです。表示名が読めないからと即座に削除せず、対象システム、バックアップ、サービスアカウントとの関係を管理者が確認します。
セキュリティ記述子とDACL
ファイルやフォルダーにはセキュリティ記述子があり、所有者やDACLなどを保持します。DACLはアクセス制御エントリ、つまりACEの並びです。各ACEは特定のSIDに対して許可または拒否する権利と、その権利を子へ継承する方法を示します。DACLがあることと、誰にも許可がないことは同じではありません。空のDACLは誰にも許可しない状態で、NULL DACLとは意味が異なります。GUIで通常管理する範囲では、この違いを手作業で作ろうとしないでください。
基本アクセス許可と詳細アクセス許可
GUIでは「読み取りと実行」「フォルダーの内容の一覧表示」「読み取り」「書き込み」「変更」「フル コントロール」などの基本権限が表示されます。これらは複数の詳細権限をまとめたものです。「変更」は一般的な共同作業に必要な読み書きと削除を含みますが、アクセス許可や所有権を自由に変える権利まで含むフルコントロールとは異なります。必要最小限の役割に付与し、利用者個人より管理されたグループを使うと棚卸ししやすくなります。
所有者
所有者であることは、その時点で内容を必ず読めるという意味ではありません。一方、所有者はアクセス許可の変更に関係する特別な位置にあります。管理者もUACやDACLの影響を受け、常に無条件でファイルを開けるわけではありません。所有権の取得は監査やアプリ動作へ影響し、元の所有者へ正確に戻す必要が生じます。通常の閲覧障害を解く最初の手段としてtakeownを実行しないでください。
継承と明示
親フォルダーのACEは、継承設定に応じて子フォルダーやファイルへ渡ります。子に直接設定したACEは明示、親から届いたものは継承です。継承を無効にすると、既存ACEをコピーして明示にするか削除するかという判断が必要になり、将来の親側変更も届かなくなります。例外フォルダーを増やすほど管理が複雑になるため、基本は階層の上位でグループ単位に設計し、例外は理由と期限を記録します。
「許可」と「拒否」を単純化しない
ユーザーは複数グループの権限を受けます。あるグループで読み取り許可、別グループで変更許可なら、通常は組み合わさって利用できる範囲が決まります。拒否ACEは特定の権利を遮断するため強い影響がありますが、明示・継承、ACEの標準順序、要求する権利、SIDの組み合わせを無視して「拒否は何より常に先」とだけ説明するのは不十分です。icaclsはACEの標準順序を、明示拒否、明示許可、継承拒否、継承許可として説明しています。
実務では拒否を多用せず、許可するグループを明確にする設計が理解しやすいです。特定グループだけ除外する必要がある場合も、他のグループ所属による影響を「高度なセキュリティ設定」の「有効なアクセス」で確認します。表示された基本権限だけで推測せず、実際の対象ユーザーを指定して評価します。サービス、バックアップ、ウイルス対策など別の主体が必要な権限も忘れないでください。
GUIで現在の権限を確認する
対象を右クリックし「プロパティ」→「セキュリティ」を開くと、選択したユーザーまたはグループの基本アクセス許可を確認できます。「詳細設定」では所有者、各ACE、適用先、継承元を確認できます。「有効なアクセス」では対象ユーザーやグループを選び、判定結果を確認します。表示項目や名称はWindowsの版や組織設定で少し異なるため、存在しないボタンを探して設定を変えず、現在画面のスクリーンショットを機密情報を伏せて管理者へ共有します。
確認時は、問題のフォルダーだけでなく親フォルダーも見ます。アクセスにはフォルダーをたどる権利、一覧表示、対象ファイルの権利が関係します。ファイルだけのACEを直しても、親を通過できなければ目的の操作ができない場合があります。逆に上位へ広い権限を付けると、すべての子へ意図せず届く可能性があります。
コマンドで読み取り確認する
icaclsはDACLを表示・変更できる標準コマンドです。引数を付けず対象だけ指定すれば、まず現在のACLを表示できます。次の例は読み取り確認で、対象パスは実在する承認済みフォルダーに置き換えます。
icacls "C:\Data\Project"
出力のIは継承、OIやCIはオブジェクトまたはコンテナーへ継承する指定、Fはフルコントロール、Mは変更、RXは読み取りと実行などを表します。ただし略号だけで有効権限を断定せず、対象SIDのグループ所属と親ACLも確認します。結果を保存するときはユーザー名やパスが含まれるため、承認された場所で管理します。/T、/reset、/grant、/denyなどの変更引数は、対象を誤ると多数ファイルへ及ぶため初期診断では使いません。
PowerShellのGet-Aclでも所有者とアクセス規則を読み取れます。Format-Listは表示形式を整えるだけでACLを変更しません。
Get-Acl -LiteralPath 'C:\Data\Project' | Format-List Owner,AccessToString
LiteralPathを使うと角括弧などをワイルドカードとして解釈しません。アクセス拒否でコマンド自体が失敗する場合、そのエラーも有用な結果です。管理者として再実行して見えたからといって、一般利用者の問題が解決したとはいえません。通常権限と昇格時の結果を分けて記録します。
共有フォルダーは2層で判定される
\\SERVER\Shareのようなネットワーク共有では、共有アクセス許可とNTFSアクセス許可の両方が関与します。ネットワーク経由の実効範囲は、片方だけを広げてももう片方の制限を越えません。一方、サーバーへローカルサインインして同じパスへアクセスする場合は共有アクセス許可を経由しません。「サーバー上では開けるが共有経由では開けない」なら、この違いを確認します。
共有側をEveryoneフルコントロールにすればよい、と無条件に案内することはできません。組織の設計が共有側を広くしNTFSで絞る方式なのか、両方で制御する方式なのかを確認します。さらにオフラインファイル、SMB認証、ネットワーク到達性、ファイルの使用中ロックは、NTFSアクセス権とは別の問題です。エラー文とアクセス方法をそろえて切り分けます。
安全に権限を変更する手順
本番変更前に、対象の正規パス、所有者、親と子のACL、継承状態、影響する利用者・サービス、変更理由、承認者、復旧方法を記録します。可能なら同じ継承構造のテストフォルダーを作り、テスト用グループで読み取り、作成、更新、削除、名前変更を確認します。「書ける」だけでなく「削除できてはいけない」など禁止条件も試します。
変更は個人アカウントではなく役割グループへ、必要最小限の権利を、必要な階層に設定します。一度に継承停止、所有者変更、複数ACE削除を行うと原因と復旧点が分からなくなります。1変更ごとに有効アクセスと実操作を再確認し、期待外なら直前の状態へ戻します。重要データではバックアップがあるだけでなく、ACLを含めて復元できることを担当者が確認します。
よくある誤解
読み取り専用属性はNTFSのDACLとは別です。暗号化ファイル、クラウド同期、アプリの排他ロック、ランサムウェア防止機能も、似た「アクセス拒否」を表示することがあります。また、権限変更が成功しても、既に開いているアプリや認証トークンが古いグループ所属を保持する場合があります。サインアウトが必要かは管理者に確認し、むやみに再起動や資格情報削除を行いません。
正しいゴールは「エラーを消す」ことではなく、必要な人とサービスだけが必要な操作をでき、不要な操作はできず、その状態を監査・復旧できることです。現在値の読み取りと有効アクセスの確認を先に置けば、広すぎるフルコントロールや危険な拒否設定を避けられます。

コメント