NT におけるNTFSアクセス権について 更新日: 02/03/08 ■ アクセス権の種類 ハードディスクのフォーマットにより、NTFS (Windows NT ファイル システム)と、 FAT(ファイル アロケーション テーブル)のアクセス権がある。 ■ NT のアクセス権表示(NTFS) 例: SYSTEM フル コントロール (All) (All) 上のようにアクセス権が表示されます。 ここで、第一カッコは[ディレクトリに対するアクセス権] 第二カッコは[そのディレクトリ内のファイルに対するアクセス権] を表します。第二カッコの意味は、そのアクセス権を設定したディレクトリにファイ ルを作成した場合のデフォルトのアクセス権を設定します。 (なし) (All) といったアクセス権の場合、ディレクトリ内はみれませんが、ファイ ルを直で指定すれば、ファイルを開き編集することができます。 ■ フォルダに対する NTFS 標準権限 アクセス権なし 個人ユーザー、グループ ユーザーのアクセス権を拒否します。ユーザーは、 ディレクトリやファイル名を表示することはできますが、アクセスはできませ ん。注意 この権限を Everyone グループに適用しないよう注意してください 。適用すると、より制限の少ない権限が付与されていても、すべてのユーザー のアクセスが拒否されます。この点は、NTFS セキュリティを実装する際に管理 者が行う一般的なエラーです。この文書の シナリオ 2 を参照してください。 一覧 ユーザーはファイル名を表示することはできますが、参照したり、実行したり することはできません。 読み取り ユーザーはファイルを読み取り、実行することはできますが、ファイルの変更 はできません。 追加 ユーザーはファイルをフォルダに追加することはできますが、参照したり、実 行したりすることはできません。 追加と読み取り ユーザーはファイルをフォルダに追加、参照、実行できます。 変更 ユーザーは読み取り、実行、書き込み、ファイルやフォルダの削除がで きます。ただし、ディレクトリや、そこに存在するファイルの権限を変更する ことはできません。フォルダへのアクセス権を変更することができるユーザー は、自身が作成したフォルダ内にある別のフォルダを削除することはできます が、変更の権限を付与されたフォルダの削除はできません。 Full Control ユーザーは、 [フル コントロール] が付与されているディレクトリ内のファ イルやフォルダの読み取り、実行、書き込み、削除ができます。その中に存在 するディレクトリやファイルに対する権限も変更できます。この権限を持つユ ーザーは、ファイルやフォルダの所有権も持ちます。所有権に関しては、この シリーズの第 2 部で取り上げます。 ■ ファイルに対する NTFS 標準権限 アクセス権なし 個人ユーザー、グループ ユーザーのアクセス権を拒否します。ユーザーは、 ファイル名を表示することはできますが、アクセスはできません。 読み取り ユーザーはファイルを読み取り、実行することはできますが、ファイルの変更 はできません。 変更 ユーザーは読み取り、実行、書き込み、ファイルやフォルダの削除ができます 。ただし、所有権がないファイルに対する権限を変更することはできません。 フル コントロール ユーザーは、ファイルの読み取り、実行、書き込み、削除ができます。ファイ ルに対する権限の変更もでき、ファイルの所有権を持ちます。 ■ ShowACLs NT のリソースキット内にある実行ファイルです。showacls によってフォルダのアク セス権を調べることができます。 [HELP] Usage: showacls /s /u:domain\user filespec /s include sub-directories /u specify domain\user ACE header values: 0x1 - Object Inherit ACE 0x2 - Container Inherit ACE 0x4 - No Propagate Inherit ACE 0x8 - Inherit Only ACE Access mask values: A Generic All l List Directory R Generic Read d Read Data W Generic Write S Synchronize X Generic Execute r File Read w File Write a File Append fx File Execute D Delete rE Read EA rW Write EA ■ CACLs NT に標準で付いてくる実行ファイルです。アクセス権を変更することができます。 多分、Change ACLs の略です。 CI - コンテナ継承。(Container Inherit) ACE はディレクトリに継承されます。 OI - オブジェクト継承。(Object Inherit) ACE はファイルに継承されます。 IO - 継承のみ。(Inherit Only) ACE は現在のファイル/ディレクトリに適用されません。 ■ ACL と ACE ACL : Access Control List (アクセス制御リスト) ACE : Access Control Entries (アクセス制御エントリ) ACL というアクセス権が書いてあるリストの中の 1行が ACE といったイメージ。 ■ ACE HEADER ◇ HELP より 0x1 - Object Inherit ACE The ACE is inherited by noncontainer objects, such as files created within the container object to which the ACE is assigned. ACE がコンテナではないオブジェクトによって継承された。ACEが割り当てら れたコンテナオブジェクト内に作成されたファイルのような 0x2 - Container Inherit ACE The ACE is inherited by container objects, such as directories. ACE がディレクトリのようなコンテナオブジェクトによって継承された。 0x4 - No Propagate Inherit ACE The OBJECT_INHERIT_ACE and CONTAINER_INHERIT_ACE bits are not propagated to an inherited ACE. 0x8 - Inherit Only ACE The ACE does not apply to the container object, but to objects contained by it. ACE がコンテナオブジェクトに適用できないが、オブジェクトにはできる。 ◇ 自分の経験上わかったこと。 0x02 フォルダのアクセス権には一般に、Container Inherit ACE が付く。 0x09 デフォルトファイルに対するアクセス権は一般に、Object Inherit ACE、 Inherit Only ACE が付く。 0x00 上位のフォルダからアクセス権を引き継いだフォルダ、ファイルのアクセス権 と思われる、フォルダの場合 0x00 と共に 0x0a が付く。また、ドライブから アクセス権を引き継いだフォルダの場合 0x00 と共に 0x0b が付くらしい。 もしも、フォルダに対してアクセス権の変更をした場合(しなくても[OK]ボタン を押した場合)は 0x00 0x0a または 0x0b が消えて、0x02 になる。 0x0a 0x00 を参照。 0x0b 0x00 を参照。 0x10 ファイルでたまに見かけるが、どのようにしたらできるのかわからない。 多分、Win2000 が絡んでくるのでは?と思われる。 0x13 Win2000 での上位のフォルダからアクセス権を引き継いだ場合に発生する。 0x03 Win2000 で 0x13 の状態を変更または[OK]ボタンを押すと発生する。 ◇ 適用先 (Win2000 で確認) 0x00 このフォルダのみ 0x03 このフォルダ、サブフォルダおよびファイル 0x02 このフォルダとサブフォルダ 0x01 このフォルダとファイル 0x0b サブフォルダとファイルのみ 0x0a サブフォルダのみ 0x09 ファイルのみ ■ WinNT での設定 (チェックボックス) ・ サブディレクトリのアクセス権を置き換える 強制的にサブディレクトリのアクセス権を現在のディレクトリの設定に変えて しまう。 ・ 概存のファイルのアクセス権を置き換える このチェックボックスはデフォルト設置でチェックが入っています。その為、 [OK] ボタンを普通に押すとファイルにデフォルトのファイルアクセス権が反 映されます。 ■ Win2000 での設定 (チェックボックス) ・ 継承可能なアクセス許可を親からこのオブジェクトに継承できるようにする このチェックボックスはデフォルト設置でチェックが入っています。その為、 親のディレクトリから引き継いだアクセス権は変更できないようになっていま す。もしも変更したい場合はこのチェックを外します。(アクセス権の追加は 普通にできます。) ・ すべての子オブジェクトのアクセス許可を元に戻し、継承可能なアクセス許可を継承 できるようにする。 NT での[サブディレクトリのアクセス権を置き換える]と同じで、強制的にサブディレク トリのアクセス権を現在のディレクトリの設定に変えて、継承可能なアクセス 許可を親からこのオブジェクトに継承できるようにしてしまう。 ・ その他 アクセス許可の編集の適用先によって、ACEヘッダを変更できる。 ■ ディレクトリアクセス権の Access mask NT表示 CACLs ShowACLs(0x) ShowACLs(Access mask values) ------- ------ ------------- ----------------------------- R READ_CONTROL 0x00120089 dSrrE SYNCHRONIZE FILE_GENERIC_READ FILE_READ_DATA FILE_READ_EA FILE_READ_ATTRIBUTES W READ_CONTROL 0x00120116 SwawE SYNCHRONIZE FILE_GENERIC_WRITE FILE_WRITE_DATA FILE_APPEND_DATA FILE_WRITE_EA FILE_WRITE_ATTRIBUTES X READ_CONTROL 0x001200a0 Sfx SYNCHRONIZE FILE_GENERIC_EXECUTE FILE_EXECUTE FILE_READ_ATTRIBUTES D DELETE 0x00010000 D P WRITE_DAC 0x00040000 O WRITE_OWNER 0x00080000 なし N 0x001f01ff DdSrwarEwEfx (Account Name の後ろにDENIED が付く。) All F 0x001f01ff DdSrwarEwEfx ※ ShowACLs では 0x 表示を足して変更などのアクセス権を表す。Access mask values では表せないものが存在する。 ※ CACLs のアクセス権表示 N なし R 読み取り C 変更 (書き込み) F フル コントロール ■ ファイルアクセス権の Access mask NT表示 ShowACLs(0x) ShowACLs(Access mask values) ------- ------------- ----------------------------- R 0x80000000 R W 0x40000000 W X 0x20000000 X D 0x00010000 D P 0x00040000 O 0x00080000 なし 0x10000000 A (Account Name の後ろにDENIED が付く) ■ 管理共有について 管理共有とは、共有名にドル記号($)が含まれているものです。これらはインストー ルされたOS の一部となっているため、変更したり削除したりしない方がいいです。 ADMIN$ コンピュータのリモート管理中に使われる。このパスは、常にシステムルート (C:ドライブ)になっています。Administrators, Backup Operators, Server Operators だけがこの共有にアクセスできます。 [ドライブ文字]$ 指定されたドライブルートディレクトリとして使われます。Administrators, Backup Operators,Server Operators だけがこの共有にアクセスできます。 IPC$ コンピュータのリモート管理中、および共有リソースを表示する際に使われま す。ネットワーク通信に必須です。 NETLOGON ドメインログオンスクリプトが保管されており、WinNT Server が稼動するサー バのNetLogon サービスによって使われる。 PRINT$ 共有プリンタをサポートするために使われます。 REPL$ サーバが複製エクスポートサーバとして使われるときに作成される。 ■ メンバサーバのアクセス権 メンバサーバの共有ファイル時のアクセス権の設定では、ドメインローカルグループは 使用できない。使用しても無効である。そのサーバ自身のローカルグループを作成する 必要がある。 ユーザマネージャに関して(defaultインストール) ・ Win2k (PDC:WinNT) ローカル設定:コンピュータの管理 ドメイン設定:usrmgr.exe ・ WinNT (PDC:WinNT) ローカルログインとドメインログインでユーザマネージャの表示が変わる。 ※ WinNT(サーバではない)では、WinNTSeverCD の \CLIENTS\SRVTOOLS からインストー ルする。スタートのプログラムには表示されませんので、ファイル名から usrmgr を実行するか、C:\I386\SRVPKG6\ の中を探して下さい。