このページの本文へ

前へ 1 2 次へ

Windows Info 第326回

WindowsのACL(Access Control List) エクスプローラーが扱うACL

2022年05月08日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

高度なアクセス許可とACL

 高度なアクセス許可として表示されるチェックボックスのうち「フル コントロール」以外は、2回目(「WindowsのACL(Access Control List)を解説する【定義編】」)で解説したACEのアクセスマスクのビットと基本的には対応している。

 しかし、ファイル・ディレクトリのアクセスでは、どの場合にも「同期」ビットが必須で、これがオンになっていないと他のビットの状態にかかわらず、ファイル・ディレクトリに対するアクセスがすべて拒否される。つまり、どの項目をオンにしても、必ず同期ビットがオンになる。エクスプローラーのアクセス権設定は、ACEのアクセスマスクのパターンを表しているといってもいいだろう。

 このためにエクスプローラーからの操作では、すべてのアクセス許可をオフにして、さらに継承を無効にしない限り、操作でファイルのアクセスがおかしくなることはほとんどない。これに対してicacls.exeコマンドでは、同期ビットを個別にオン/オフ可能であるため、特定のアクセスマスクビットを操作するアクセス権設定(「/grant」オプション)の操作では、何を設定してもアクセスができないという状態になりやすい。この際に同期ビットがオフになっているからというのに気がつかないと、俗に言う「ハマる」状態になる。

基本のアクセス許可

 基本のアクセス許可は、アクセス許可エントリでも設定できるが、簡易にプロパティのセキュリティタブでも設定が可能だ。ここには「フルコントール」「変更」「読みとりと実行」「読み取り」「書き込み」「特殊なアクセス許可」の6つがある。これらの項目と高度なアクセス許可の関係は、以下の表のようになる。

 つまり、基本のアクセス許可は、高度なアクセス許可を組み合わせたパターンを指定しているわけだ。特殊なアクセス許可は、高度なアクセス許可のうち、上の表にないもの(同期アクセス権を除く)が1つでも指定された場合にオンになる。また、高度なアクセス許可と同じく、すべての許可では同期アクセス権が有効になっている。

 使い方にもよるが、多くの場合でアクセス制御は、簡易なやり方でされることが多く、基本的にデフォルト値のままである。しかし、使い方や環境などによっては細かな制御が必要になることもある。もう1つ、16bit版のWindowsでは、ベースがMS-DOSであって、ファイルシステムにはACLは導入されていなかった。現在も残るAttribコマンドで設定できるような、読み出し専用や隠しファイル、システムファイル程度の制御しかできなかった。

 Attribコマンドの設定は、ファイルの属性(アトリビュート)の設定だったが、MS-DOSではユーザー管理もしておらず、アクセス権という概念がそもそもなかった。このため、現在ではアクセス権として設定される「読み出し専用」(書き込み禁止)を属性の1つとして扱っていた。

 そこでアクセス権の設定には、非常に簡易な「基本のアクセス設定」が用意され、特に細かいアクセス制御を必要としないユーザー向けのユーザーインターフェースになったわけだ。

icacls.exeの使いこなし

 エクスプローラーでは、簡易なACLの設定しかできないが、細かく設定したい、自分で調べたいという場合には、icacls.exeコマンドを使うことになる。設定可能なアクセス権などについては、前回解説したが(「icacls.exeコマンドの設定項目とWindows内部のACL設定との関係」)、具体的な使い方としては、以下の表にある4つを覚えればよい。

 ACLにおいて、ファイルやディレクトリの「所有者」はいつでもACLを書き換えることができるので、表のコマンドの実行には管理者権限は必要ないが、「/save」オプションで出力したファイルの中身を見るためには管理者権限が必要になる。このため、あらかじめ管理者権限でコンソールを起動しておいたほうがいいだろう。

 4回にわたり、WindowsのACLを見てきた。ACLは、細かい制御が可能な反面、icacls.exeなどで設定するには、慣れとノウハウが必要だ。記事中に書いたようにファイルシステムでは、同期アクセス権が必須であるのに関わらず、そこまで細かく記述した文書は少ない。

 エクスプローラーのアクセス権設定を使えば、簡単にできるものの、実際に何がなされているのかがわかりにくい。かといって、icacls.exeについても、その意味を理解するのはちょっと苦労する。ACL(やACE)自体が見えていないことが、理解を難しくしている原因だろうと考え、エクスプローラー、icacls.exe、ACLを解説することにした。

 ある意味、ACLは、Windowsの中でもわかりにくいものの1つだ。ACLが利用可能なLinuxにおいて、多く場合でACLを導入せず、従来型のファイルパーミッションで利用しているのもそれが理由だと考えられる。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン