ACL検証 LinuxのACLとWindowsのACLはどう違うか 1. アクセス権の差 1.1 Windowsのアクセス権のおさらい  DOSからの引き継ぎ。FAT/VFATで実装。NTFSにもあることはある。 Using Sambaの8章 のFile Permissions and Attributes on MS-DOS and Unix に詳しい。 1.1.1 ファイルに対するアクセス権 1) 読み取り専用  ファイルに書けなくする。しかし、消せる。Explorerだと警告が出るだけ。DOS窓でcmdで消そうとすると断られるだけ。 2) 隠しファイル  ディレクトリ表示を行なうときに見せない。Explorerでは設定次第でみることができるのでほとんど意味なし。cmdでは見えない。消せない。しかし、ファイル名を直接指定するとアクセスできる。 3) アーカイブ  バックアップを利用するときに使う。バックアップが取られるとリセット、その後更新がかかるとセット。Microsoft製の(実際はVeritas)バックアップツールなどで利用。 4) システム  システムファイルの場合にセット。Explorerでは、ツール→フォルダオプション→表示で、「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックボックスを外さない限り表示されない。 1.1.2 ディレクトリに対するアクセス権  DOSでの各属性は保存できない。http://www.samba.gr.jp/project/kb/J0/1/05.htmlに説明あり。制限事項。 1.2 標準的なUNIX系のOSのアクセス権のおさらい rwxがugo。setuid/setgidもある。これは、プロセスの動作に関係。ファイルアクセスには直接関係ない。stickyビットは意味がある。 ディレクトリに対しては意味が変わる。 1.2.1 ファイルの場合  r 読み出し可 w 書き込み可 x 実行可 1.2.2 ディレクトリの場合 r 読み出し可 w 書き込み(変更を含む)可 x そのディレクトリ内に移動可 t (スティッキービット)同一ディレクトリ内の自分以外のファイルの削除や変更が不可能に。 1.3 NTFSのアクセス権のおさらい 1.3.1 制御できるできる権利  ACLを採用。かなり複雑。個別の設定に対して許可と拒否を独立して設定できる。 ・フルコントロール ・変更 ・読み取りと実行 ・読み取り ・書き込み ・特殊なアクセス許可 が基本。そのほかに、細かく設定するときには ・フルコントロール ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・サブフォルダとファイルの削除 ・削除 ・アクセス許可の読み取り ・アクセス許可の変更 ・所有権の取得 が定義できる。実際には、通常のアクセス権は ・フルコントロール = 以下の定義が全部設定されたもの ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・削除 ・アクセス許可の読み取り ・アクセス許可の変更 ・所有権の取得 ・変更 = 以下の定義が全部設定されたもの(フルコントロール - 所有権の取得,アクセス許可の変更) ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・サブフォルダとファイルの削除 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・削除 ・アクセス許可の読み取り ・読み取りと実行 = 以下の定義が全部設定されたもの(変更 - 変更,書き込み関連) ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り ・読み取り = 以下の定義が全部設定されたもの(読み取りと実行 - フォルダのスキャン/ファイルの実行) ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り ・書き込み = 以下の定義が全部設定されたもの ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り 1.3.2 許可と拒否  それぞれ明示的に許可と拒否を指定できる。 拒否が優先。許可も拒否もないと、暗黙の拒否。 2. 違いの基本 2.1 fatレベルの差  rohsはUNIX系にはない。既存のrwxで対応。Sambaがマッピング。  xを使う。そのため、UNIX上のxが意味がなくなる。 Sambaでは以下を割り当てる。 2.1.1 ファイルの場合 2.1.1.1 fatの r  UNIX の w に割り当て。DOSのrが立つとUNIXのwを落す。 2.1.1.2 fatの h 既定値では割り当て無し。 smb.conf の map hidden = yes を有効にすると、その他のxビットに割り当て られる。 2.1.1.3 fatの a UNIXの ユーザの xに割り当て。 2.1.1.4 fatの s 既定値では割り当て無し。 smb.conf の map system = yes を有効にすると、グループのxビットに割り当て られる。 2.1.2 ディレクトリの場合  設定できない。制限事項。 2.2 aclで個別に設定した場合(ファイル編)  Windowsの方がアクセス権の設定が細かい。 ファイルの削除禁止の考え方が全く異なる。 ファイルそのものへの削除禁止(Windows) ファイルがあるディレクトリの書き込み禁止(UNIX) 違いは完全には吸収できない。  以下ではeveryoneに対して設定した場合。 2.2.1 フォルダのスキャン/ファイルの実行  セットすると、 ・属性の読み取り ・アクセス許可の読み取り が同時に設定される。 →otherに x が設定される。 2.2.2 フォルダの一覧/データの読み取り  セットすると、標準的なアクセス権、'読み取り'がセットされる。詳細設定 では、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が同時に設定される。 →other に r が設定される。 2.2.3 属性の読み取り  セットすると、標準的なアクセス権、'読み取り'がセットされる。詳細設定 では、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が同時に設定される。 →other に r が設定される。 2.2.4 拡張属性の読み取り  セットすると、標準的なアクセス権、'読み取り'がセットされる。詳細設定 では、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が同時に設定される。 →other に r が設定される。 2.2.5 ファイルの作成/データの書き込み  セットすると、特殊なアクセス権となる。詳細設定では、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が同時に設定される。 →other に w が設定される。 2.2.6 フォルダの作成/データの追加  セットすると、特殊なアクセス権となる。詳細設定では、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が同時に設定される。 →other に w が設定される。 2.2.7 属性の書き込み  セットすると、特殊なアクセス権となる。詳細設定では、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が同時に設定される。 →other に w が設定される。 2.2.8 拡張属性の書き込み  セットすると、特殊なアクセス権となる。詳細設定では、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が同時に設定される。 →other に w が設定される。 2.2.9 サブフォルダとファイルの削除  セットしても、何も設定されない。 → other には何も設定されない。 2.2.10 削除  セットしても、何も設定されない。 → other には何も設定されない。 2.2.11 アクセス許可の読み取り  セットしても、何も設定されない。 → other には何も設定されない。 2.2.12 アクセス許可の変更  セットしても、何も設定されない。 → other には何も設定されない。 2.2.13 所有権の取得  セットしても、何も設定されない。 → other には何も設定されない。 2.3 アクセス許可で一括して設定した場合(ファイル編) 2.3.1 フルコントロール  セットすると、変更、読み取りと実行、読み取り、書き込みが 同時に設定される。詳細な設定ではすべての権限が設定される。 2.3.2 変更  セットしてもフルコントロールと同じになる。 2.3.3 読み取りと実行  セットすると、同時に「読み取り」が設定される。詳細な設定 では、 ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り が同時に設定される。 →otherに rとxが設定される。 2.3.4 読み取り  セットすると、同時に「読み取りと実行」が設定される。詳細な設定 では、 ・フォルダのスキャン/ファイルの実行 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り が同時に設定される。 →otherに rとxが設定される。 2.3.5 書き込み  セットすると、詳細な設定では 2.4 aclで個別に設定した場合(ディレクトリ編)  Windowsの方がアクセス権の設定が細かい。 ファイルの削除禁止の考え方が全く異なる。 ファイルそのものへの削除禁止(Windows) ファイルがあるディレクトリの書き込み禁止(UNIX) 違いは完全には吸収できない。  以下ではeveryoneに対して設定した場合。 2.4.1 フォルダのスキャン/ファイルの実行  セットすると、 ・フォルダのスキャン/ファイルの実行 ・属性の読み取り ・アクセス許可の読み取り が設定される。 →other に x が設定される。 2.4.2 フォルダの一覧/データの読み取り  セットすると、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が設定される。アクセス許可が 読み取り になる。 →other に r が設定される。 2.4.3 属性の読み取り  セットすると、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が設定される。アクセス許可が 読み取り になる。 →other に r が設定される。 2.4.4 拡張属性の読み取り  セットすると、 ・フォルダの一覧/データの読み取り ・属性の読み取り ・拡張属性の読み取り ・アクセス許可の読み取り が設定される。アクセス許可が 読み取り になる。 →other に r が設定される。 2.4.5 ファイルの作成/データの書き込み  セットすると、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が設定される。アクセス許可が 書き込み(詳細では 特別) になる。 →other に w が設定される。 2.4.6 フォルダの作成/データの追加  セットすると、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が設定される。アクセス許可が 書き込み(詳細では 特別) になる。 →other に w が設定される。 2.4.7 属性の書き込み  セットすると、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が設定される。アクセス許可が 書き込み(詳細では 特別) になる。 →other に w が設定される。 2.4.8 拡張属性の書き込み  セットすると、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が設定される。アクセス許可が 書き込み(詳細では 特別) になる。 →other に w が設定される。 2.4.9 サブフォルダとファイルの削除  セットすると、 ・ファイルの作成/データの書き込み ・フォルダの作成/データの追加 ・属性の書き込み ・拡張属性の書き込み ・アクセス許可の読み取り が設定される。アクセス許可が 書き込み(詳細では 特別) になる。 →other に w が設定される。 2.4.10 サブフォルダとファイルの削除  セットしても、どの属性も設定されない。 →other には何も設定されない。 2.4.11 削除  セットしても、どの属性も設定されない。 →other には何も設定されない。 2.4.12 アクセス許可の読み取り  セットしても、どの属性も設定されない。 →other には何も設定されない。 2.4.13 アクセス許可の変更  セットしても、どの属性も設定されない。 →other には何も設定されない。 2.4.14 所有権の取得  セットしても、どの属性も設定されない。 →other には何も設定されない。