| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 5 : その他の機能 > aaclv(5)HP-UX 11i Version 2: September 2004 |
|
名称aclv ― JFS アクセス制御リスト (ACL) の使い方 説明アクセス制御リスト (ACL) は、任意のアクセス制御を行うための主要な機構であり (以下の「定義」を参照)、従来の HP-UX による機構よりもきめ細かくユーザーやグループによるファイルアクセスを制御できます。 従来から HP-UX では、特権のないユーザーやプロセス (ファイルの所有者など) が、「必要最小限の情報の開示」原則に従って、他のユーザーによるファイルやその他オブジェクトへのアクセスを、ユーザー識別子やグループ識別子に基づいて許可または拒否することができます ( passwd(4) および group(4) を参照)。 このレベルのアクセス制御は、ファイルのパーミッションビットを設定または操作して、所有者、グループ、およびその他ユーザーによるアクセスを許可または制限することにより実現されています ( chmod(2) を参照)。 ACL では、パーミッションビットよりもさらにきめ細かい設定が可能です。 ファイルの所有者やスーパーユーザーは ACL を使って、ファイルの所有者や所有グループ以外のユーザーまたはグループを列挙したリストに対して、アクセスを許可または拒否することができます。 ACL は、UNIX オペレーティングシステムのファイルに対する任意のアクセスコントロール (DAC) 機構のスーパーセットとしてサポートされています。 プロセス間通信 (IPC) などのその他オブジェクトをサポートするものではありません。 このマニュアルページは、JFS ファイルシステム上で実装される ACL についてのみ説明しています。 HFS ファイルシステムにおける ACL については、 acl(5) を参照してください。 定義データへのアクセス制御はコンピュータセキュリティの重要事項であるため、ここでは最初に 『Department of Defense Trusted Computer System Evaluation Criteria』 に基づく以下の定義を説明してから、 アクセス制御の概念と、アクセス制御と HP-UX セキュリティ機能の関連について詳しく説明していきます。
アクセス制御リストエントリーアクセス制御リスト (ACL) は 1 行エントリーの集合であり、パーミッションを指定する必要があるファイルに関連付けられます。 各エントリーには、1 つのユーザー ID またはグループ ID に対する、読取り、書込み、および実行/検索をはじめとする一連のアクセスパーミッションを指定します。 アクセス制御リストと従来のファイルパーミッションとの関係を理解するために、以下に示すファイルとそのパーミッションについて考えてみることにします。 -rwxr-xr-- james admin datafile
ACL ではユーザー ID とグループ ID は、 /etc/passwd に指定されている名前または番号で表現できます。 ACL 表記JFS ACL 管理用のコマンドは、以下の記号表現を認識します。
プリフィックスが d: または default: となっている ACL エントリーは、ディレクトリ用の ACL にのみ指定できます。 このエントリーの内容はそのディレクトリへのアクセス権の決定には使用されず、ディレクトリ内に作成されるファイルやサブディレクトリに適用されます (以下の「ACL 継承」を参照)。 uid フィールドおよび gid フィールドにはユーザーまたはグループの数値 ID、 あるいは /etc/passwd または /etc/group に指定されているこれらの ID に対応する文字列を指定します。 perm フィールドには記号形式 ( r、 w、 x、 および - の組み合わせ)、または数値形式でアクセスパーミッションを指定します。 数値形式は 0〜7 の 8 進数値で、読取りパーミッションを 4、書込みパーミッションを 2、実行パーミッションを 1 として、その総和で表します。 ベース ACL エントリー任意のファイルが作成される際には、アクセス制御リストの 4 つのベースエントリーがファイル用のアクセス パーミッションビットからマッピングされて、ファイルの所有者とグループ、および従来型のパーミッションビットの内容が正しく設定されます。 これを「最小 ACL」と呼びます。 ベース ACL エントリーは chmod(2) および acl(2) システムコールで変更できます。
ACL が最小の状態、つまりオプションの ACL エントリーがない場合は (以下を参照)、 group と class のパーミッションは完全に同一になります。 オプションの ACL エントリーアクセス制御リストのオプションのエントリーには、追加のアクセス制御情報を指定します。 acl(2) システムコールを使ってオプションのエントリーを設定すると、ファイルアクセスをさらに詳細に許可または拒否することができます。 オプションの ACL エントリーは最大 13 個まで指定できます。 例えばあるファイルに対して、以下に示すオプションのアクセス制御リストエントリーを追加できます。
クラスエントリーACL 内に複数の user エントリーまたは複数の group エントリーがある場合は、 class エントリーに、追加の user エントリーおよび group エントリーで与えられる最大のパーミッションを指定します。あるパーミッションに関して、それが class エントリーで許可されていなければ、他の ACL エントリーでもそのパーミッションを許可できません (ただし最初の user (所有者) エントリーと other エントリーは除く)。 そのため特定のユーザーまたはグループに対するパーミッションが拒否されることがあります。 このように class エントリーは、ファイルパーミッションの上限として機能します。 ACL 内に複数の user エントリーまたは group エントリーがある場合は、追加の user および group エントリーの集合は groupclass エントリーとして参照されます。 これは、これらの追加エントリーによって与えられる実効パーミッションが、 class エントリーによって制限されるためです。 ACL 内に追加のエントリーがある場合は、 class エントリーの値が ls -l でレポートされる所有グループのパーミッションと異なっていてもかまいません。 これは有益な点であり、つまり chmod(1) コマンドを使って、追加の ACL エントリーが設定されているファイルのパーミッションを適宜変更できることを意味します。 ACL におけるユニーク性各エントリーは、それぞれの ACL 内でユニークです。 各種のベースエントリーは 1 つずつしか存在できず、また各ユーザー ID またはグループ ID に対しては、それぞれ 1 つのエントリーしか指定できません。 同様に、各種のデフォルトのベースエントリーも 1 つずつしか存在できず、また各ユーザー ID またはグループ ID に対しては、それぞれ 1 つのデフォルトエントリーしか指定できません。 ACL 継承ディレクトリ用の ACL にデフォルトエントリーが含まれている場合、これらのエントリーはディレクトリ自体に対するアクセス権の決定には使用されません。 その代わりに、そのディレクトリ内にファイルが作成される都度、ディレクトリのデフォルト ACL エントリーが、新しいファイルに対する非デフォルトの ACL エントリーとして追加されます。 例えばディレクトリ /a が、 getacl(1) によって以下のようにレポートされる ACL を持っているとします。 # file: /a この場合、ディレクトリ /a 内に作成される新しいファイルの ACL は、作成者の umask (022 など) と、 /a のデフォルト ACL エントリーの組み合わせを使って、以下のように初期化されます。 # file: /a/file 新しいサブディレクトリの作成時には、親ディレクトリのデフォルト ACL エントリーが新しいサブディレクトリの ACL に 2 回追加されます。 1 回目はサブディレクトリの非デフォルトの ACL エントリーとして、2 回目はサブディレクトリのデフォルト ACL エントリーとしてです。 このようにしてデフォルト ACL エントリーは、ディレクトリのツリーが作成される都度、順番に継承されていきます。 前出の例でファイルではなくディレクトリを作成した場合は、その ACL は以下のようになります。 # file: /a/dir アクセスチェックのアルゴリズムアクセス側プロセスの実効ユーザー ID (EGID) と実効グループ ID (EGID) に与えるパーミッションをそれぞれ決定するには、以下のチェックが次に示す順番どおりに実行されます。
上位にあるチェックでアクセス権が決定された場合は、それ以降のチェックは行われません。 サポートされた ACL オペレーションACL の設定、取り出し、またはカウントには、 acl(2) システムコールを使用します。 ACL の設定または変更には、 setacl(1) コマンドを、ACL の取得には getacl(1) コマンドを使用します。 特定のユーザー ID またはグループ ID に与えられるパーミッションは、 getaccess(1) コマンドと getaccess(2) システムコールによって決定できます。 特定の ACL プロパティを持つファイルは、 find(1) の -aclv オプションを使って検索できます。 stat(2)、chmod(2)、chown(2) と ACL の対話
ヘッダヘッダ <sys/acl.h><sys/aclv.h> ヘッダファイルには、ACL ごとにエントリー数を管理するための以下の定数が定義されています。
以下のメンバーを含む ACL エントリー構造体 struct acl も定義されています。 int a_type; /* type of entry */ <sys/aclv.h> ヘッダには、 a_type フィールド用の有効な値のセット、および acl(2) システムコールの cmd 引き数用の有効な値も定義されています。 ヘッダ <sys/getaccess.h><sys/getaccess.h> ヘッダには、 getaccess(2) で使用する定数が定義されています。 uid のための特別なパラメータ値:
ngroups のための特別なパラメータ値:
警告ACL では、スーパーユーザーのアクセス権は制限できません。 サポートされている大部分の (すべてではない) ユーティリティは、ACL を正しく処理できます。 ただし、ファイルアーカイブ ユーティリティについては fbackup(1M) および frecover(1M) のみがアクセス制御リストを適切に処理できます。 オプションの ACL エントリーを含んだファイルの ACL を扱えないプログラム (アーカイブプログラムの ar(1)、 cpio(1)、 ftio(1)、 tar(1)、 dump(1M) など) を使用する場合は、それぞれの参照ページに記載されている ACL 情報を確認して、データを失うことがないように注意してください。 制約
ファイル
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||