これまで3回に渡り(「WindowsのACL(Access Control List)を解説する【準備編】」、「WindowsのACL(Access Control List)を解説する【定義編】」、「icacls.exeコマンドの設定項目とWindows内部のACL設定との関係」)、Windows ACLについて解説してきたが、今回は最後にエクスプローラーのプロパティにある「アクセス許可エントリ」(「セキリティタブ」→「詳細ボタン」)で表示される「アクセス許可」などと、ACLの関係を解説する。
エクスプローラーのアクセス権設定
エクスプローラーでファイルやディレクトリを選択して右クリックメニューからプロパティダイアログを開き、セキュリティタブにある「詳細設定」ボタンを使うことで、セキュリティの詳細設定ダイアログが開く。
ここで、ACLによるアクセス制御の対象となるプリンシパルを選び、下の「表示」あるいは「編集」ボタンを押すと、「アクセス許可エントリ」ダイアログボックスが開く。これが、ファイルの特定のプリンシパルのACLに含まれるACEを表す。ここには、「基本のアクセス許可」と「高度なアクセス許可」の2つがあるが、説明の都合からまずは後者の「高度なアクセス許可」から解説する。
このダイアログは、対象がファイルかディレクトリかで形式が違う。
対象がディレクトリの場合、ダイアログボックス上部に「適用先」のドロップダウンリストがあり、アクセス許可の下部に「これらのアクセス許可を、……適用する」というチェックボックスがある。ディレクトリが「親」としてファイルやサブディレクトリにアクセス権を継承させる役割があるからだ。
継承は、ACE(Access Control Entry)のヘッダ部分で制御される。ここにはACEフラグと呼ばれる5つのビットがある。
このうち、1つはACEが親から継承したものであることを示すビットで、残りの4ビットは、継承の振る舞いを指定するために「親」となるディレクトリに設定されるビットだ。ファイルシステムの中では、ディレクトリのみが親となって、子となるファイルやサブディレクトリにACLを継承させる。なので、継承の指定はディレクトリだけですることができる。
4つのビットは、「オブジェクトに継承させるか」「コンテナーに継承させるか」「子には継承させるが、孫以下には継承させない」「継承させるだけで子には適用しない」という動作を表す。icacls.exeでは、これをアルファベットで表記している。
エクスプローラーでは、このビットのうち、「NO_PROPAGATE_INHERIT_ACE」(NP)ビット以外の3つの組み合わせを適用先で指定する。
この3ビットの論理上の組み合わせは8通りになるが「INHERIT_ONLY_ACE」ビット単体では無意味なので、実際には7通りだ。それを文章で表現したものが、アクセス許可エントリのドロップダウンリストである。
そして、「NO_PROPAGATE_INHERIT_ACE」(NP)ビットに対応するのが、アクセス許可の下にある「これらのアクス許可を、このコンテナーの中にあるオブジェクトやコンテナーにのみ適用する」というチェックボックス。このNPビットは、ファイルやサブディレクトリに継承されたのち、それらで継承ビットがオフにするという動作になっている。
この連載の記事
-
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る -
第446回
PC
Windows 11のフォトアプリがUWPからWin32アプリになったことで今更わかるUWPの問題点 -
第445回
PC
次期Windows 11ではAndroidのファイルをエクスプローラーからアクセス可能になる -
第444回
PC
外部ファイルをExcelに読み込む際の作業を効率化するPower Queryの活用 -
第443回
PC
Windows Terminalで採用されたCascadia Codeフォントを使うとプログラムを書くとき断然見やすい -
第442回
PC
Copilot+ PCで実現されるローカル推論で「対クラウド企業」を指向するMicrosoft -
第441回
PC
WSL以前から40年以上続く、Windows(Microsoft)とUNIXとの関わり -
第440回
PC
そもそも「Copilot+ PC」とは何なのか? -
第439回
PC
今更more.comを使うのか!? Windowsでのページングを考える - この連載の一覧へ