|
Windowsのファイルアクセス権限 |
|
Windowsのファイルアクセス権限は以下のルールを持つ。
- アクセス権には、以下の5種類がある。
- フォルダー/ファイルの内容に関する権限
- 属性に関する権限
- 拡張属性に関する権限
- アクセス許可に関する権限
- 所有権の取得権限
- 所有権の取得をのぞく上記権限にはそれぞれ、読み取りと書き込みの権限がある。ファイル内容に関する権限のみ、さらに実行と作成と削除の権限がある。
- 許可権限と拒否権限があり、拒否権限が優先される。
- 指定のない限り、親フォルダーの設定を継承する。
- 継承したアクセス権の上に、対象ファイル/フォルダーのアクセス権を追加することができる。
これを読んだだけではちっとも分からないだろうと思われる。一つずつ解説する。
なお、Windowsのファイルのアクセス権は、以下の手順で確認することができる。
- ファイルを右クリックし、コンテキストメニューの[プロパティ]を選択。
- ファイルのプロパティダイアログが開いたら、[セキュリティ]タブを開き、[詳細設定]ボタン押下。
- ファイルのセキュリティの詳細設定画面が開いたら、[アクセス許可]タブが選択されていることを確認し、確認したいユーザーの設定をダブルクリックする。
- ファイルのアクセス許可エントリ画面が開く。
|
|
フォルダー/ファイルの内容に関する権限 |
|
これが一番わかりやすいだろう。ユーザーまたはグループごとに、以下の5つの許可を積み上げで設定する。
- フォルダーのスキャン/ファイルの実行
- フォルダーの一覧/データの読み取り
- ファイルの作成/データの書き込み
- フォルダーの作成/データの追加
- フォルダー/ファイルの削除
権限設定を行う場合、これだけ知っておけばたいていの要件は満たすと思われる。
C#の列挙体では、それぞれ以下のようになる。
- FileSystemRights.Traverse / FileSystemRights.ExecuteFile
- FileSystemRights.ListDirectory / FileSystemRights.ReadData
- FileSystemRights.CreateFiles / FileSystemRights.WriteData
- FileSystemRights.CreateDirectories / FileSystemRights.AppendData
- FileSystemRights.DeleteSubdirectoriesAndFiles / FileSystemRights.Delete
|
|
属性/拡張属性に関する権限 |
|
ファイルの属性は、読み取り専用、隠しファイルなどがあり、ファイルのプロパティで一部を確認することができる。
属性に関する権限は、読み取りと書き込みの2つである。
一方ファイルの拡張属性は、プログラムで定義するらしい。何も手を加えなければ、これに関する権限は無視してよいだろう。
拡張属性に関する権限は、やはり読み取りと書き込みの2つである。
これらの権限も、やはり積み上げで設定する。
C#の列挙体では、以下のようになる。
- FileSystemRights.ReadAttributes
- FileSystemRights.WriteAttributes
- FileSystemRights.ReadExtendedAttributes
- FileSystemRights.WriteExtendedAttributes
|
|
アクセス許可に関する権限 |
|
ユーザー/グループごとのファイルアクセス権の設定を読み取ったり変更したりする権限である。ファイルのプロパティの[セキュリティ]タブを開けるか、またそこから変更に入れるかどうかの設定になる。
アクセス許可に関する権限は、読み取りと書き込みの2つである。
この権限も、やはり積み上げで設定する。
このアクセス許可の設定はやや面倒で、通常のファイルのアクセス許可に加え、監査規則の参照、変更権限もこれに含まれる。
監査規則とは、特定のユーザーまたはグループが特定の操作を行ったときにログを出力したりする設定ができる機能である。通常使用しないため、詳しくは説明しない。
またここに設定した権限を無視して、ファイル所有者は自由にアクセス許可(および監査規則)の変更を行うことができる。ややこしい。
C#の列挙体では、以下のようになる。
- FileSystemRights.ReadPermissions
- FileSystemRights.ChangePermissions
|
|
所有権に関する権限 |
|
所有権を設定できる権限である。ファイルの所有権が設定されたユーザーは、前述の通り自由にアクセス許可を書き換えることができる。
所有権に関する権限は、所有権の取得のみである。
C#の列挙体では、以下のようになる。
- FileSystemRights.TakeOwnership
|
|
権限の設定 |
|
ユーザー/グループごとのファイルアクセス権限の設定は、上記権限の必要なものを積み上げていく形になる。
アクセス権限 | 読み取り | 書き込み | 実行 | 新規 | 削除 |
ファイル内容(データ) | □ | □ | □ | □ | □ |
属性 | □ | □ | | | |
拡張属性 | □ | □ | | | |
アクセス許可 | □ | □ | | | |
所有権 | | □ | | | |
これらすべてにまとめて許可を与えるのが、フルコントロールである。
フルコントロールは、C#の列挙体では以下のようになる。
- FileSystemRights.FullControl
アクセス権限 | 読み取り | 書き込み | 実行 | 新規 | 削除 |
ファイル内容(データ) | ■ | ■ | ■ | ■ | ■ |
属性 | ■ | ■ | | | |
拡張属性 | ■ | ■ | | | |
アクセス許可 | ■ | ■ | | | |
所有権 | | ■ | | | |
|