本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 5 : その他の機能 > a

acl(5)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

acl ― アクセス制御リストの使い方

説明

アクセス制御リスト (「定義」参照) は、任意のアクセスコントロール のキー強制機構で、従来の HP-UX の機構よりもよりきめ細かくユーザーとグループ によるファイルのアクセス指定が可能です。

従来から HP-UX では ファイルの所有者などのような 特権のないユーザーやプロセスが ファイルや他のオブジェクトへの他のユーザー のアクセスを許可したり拒否したりできます。 これはユーザーおよびグループ識別子で決まる 「知らなければ使えない」ということに基づいた方法です ( passwd(4) および group(4) を参照)。 このレベルの制御は、 ファイルのパーミッションビットをセットし、操作して、 所有者、グループ、およびその他の者によるアクセスを 承諾したり制限したりすることで実現されます ( chmod(2) を参照)。

ACL はパーミッションビットよりもずっと多くの選択肢を提供します。 ACL によって、ファイルの所有者やスーパーユーザーは、 ユーザー、グループまたはその組合せを列挙したリスト に対してアクセスの許可拒否が可能になります。

ACL は ファイルに対する UNIX オペレーティングシステムの任意のアクセスコントロール (DAC) 機構のスーパーセットとしてサポートされているものであり、 プロセス間通信 (IPC) などのその他のオブジェクトに対するものではありません。

定義

データへのアクセス制御はコンピュータセキュリティの 重要事項であるので、 『Department of Defense Trusted Computer System Evaluation Criteria』 に基づいた以降の定義を提示してから、 アクセス制御と HP-UX 機密保護機能の関連について説明します。

アクセス 

「主体と客体 (オブジェクト) との間のある種の相互作用で 一方から他方への情報の流れを起こすもの」 主体には「人物、プロセス、物の間に情報の流れを起こすか システム状態を変えるようなデバイス」があります。 客体にはファイル (通常のファイル、ディレクトリ、スペシャルファイル、 FIFO など) とプロセス間通信 (IPC) 機能 (共有メモリ、メッセージ待ち行列、セマフォ、 ソケット) があります。

アクセス制御リスト (ACL) 

アクセス制御リストは、 (ユーザー.グループ, モード) というエントリーの集合で、 すべての可能なユーザー ID/グループ ID の組合せ を指定するファイルに対応しています。

アクセス制御リスト (ACL) エントリー
  

ACL の中のエントリーであり、 ひとつのユーザーおよびグループ ID の組合せについてのアクセス権を指 定します。

変更パーミッション 

DAC の情報 (パーミッションビットまたは ACL エントリー) を変更する権利です。 変更パーミッションはオブジェクト (ファイル) の所有者 と特権ユーザーに対して承諾されています。

任意のアクセスコントロール (DAC)
  

「主体および主体が属するグループの識別子に基づいた 客体へのアクセスの制限手段。 あるアクセスパーミッションをもった主体はそのパーミッション を (おそらく間接的に) 他のどの主体にも渡すことができるという 意味で、この制御は任意性を持つ」

モード 

各 ACL エントリー中の 読取り、書込み、実行/検索パーミッション を表す 3 ビットです。 このビットは、 ファイルシステムの各ファイルに対応する 16 のモードビット にさらにつけ加えて存在できます ( glossary(9) を参照)。

特権 

アクセス制限条項を無視したり変更したりすることができる能力で、 保護の方針のために課せられたものであり、アクセス制御機構の中 で実現されています。 HP-UX では、スーパーユーザーとあるグループのメンバー ( privgrp(4) を参照) のみが特権ユーザーです。

制限的と許可的 

各 ACL エントリーは、状況に応じて制限的とみなされたり、許可的 とみなされたりします。 制限的エントリーは、 このエントリーがなければ、より特定的でない基準やオプションの ACL エントリー によって承諾されるようなユーザーやグループアクセスを拒否します。 許可的エントリーは、 このエントリーがなければ、より特定的でない基準やオプションの ACL エントリー によって拒否されるようなユーザーやグループアクセスを許可します。

アクセス制御リストエントリー

アクセス制御リスト (ACL) はパーミッションを指定するファイルに 対応する (ユーザー.グループ, モード) というエントリーの集合です。 各エントリーは 1 つのユーザーおよびグループ ID の組合せについて、 読取り、書込み、実行/検索パーミッションからなる アクセスパーミッション を指定します。

アクセス制御リストと従来のファイルパーミッション との関係を理解するために、 以降のファイルとそのパーミッションを考えてみてください。

-rwxr-xr--    james     admin     datafile

  • ファイルの所有者はユーザー james です。

  • ファイルのグループは admin です。

  • ファイルの名前は datafile です。

  • ファイルの所有者パーミッションは rwx です。

  • ファイルのグループパーミッションは r-x です。

  • ファイルの他人に対するパーミッションは r-- です。

ACL では、ユーザー ID とグループ ID は /etc/passwd にある名前か番号で表現できます。 以降の特別な記号が使えます。

%  

不特定のユーザーやグループを表現する記号

@  

現在のファイルの所有者かグループを表現する記号

ベース ACL エントリー

ファイルが生成されたとき、3 つのベースとなるアクセス制御リスト エントリーが そのファイルのアクセスパーミッション ビット からマッピングされて ファイルの所有者およびグループと その従来型のパーミッションビットとを照合します。 ベース ACL エントリーは chmod(2) および setacl(2) システムコールで変更できます。

(uid.%,mode) ファイルの所有者のためのベースACLエントリー
(%.gid,mode) ファイルのグループのためのベースACLエントリー
(%.%,mode) 他のユーザのためのベースエントリー

(ここに記述した以外に短い形式の表記 で表現される例があります。以下の「ACL の表記」を参照してください。)

オプションの ACL エントリー

オプションのアクセス制御リストエントリーには 付加的な制御情報が指定されています。 ユーザーは setacl(2) システムコールでこれをセットし、ファイルアクセス をさらに許可したり拒否したりすることができます。 13 個までのユーザー/グループの組合せを追加指定できます。

例えば、以降の オプションのアクセス制御リストエントリーをファイルに対して指定できます。

(mary.admin, rwx)
  

グループadmin のユーザーmary に対して 読取り、書込み、実行パーミッションを承諾する。

(george.%, ---)  

不特定のグループのユーザーgeorge に対してすべてのアクセスを拒否 する。

ACL の表記

ACL を管理するためにサポートされたライブラリコールとコマンド は 3 つの異なる記号表現を認識します。

演算子形式 

ACL 全体の入力と既存の ACL を変更するための形式で、 chmod(1) で使われるのと類似した構文によります。

短い形式 

可読性が高く、おもに出力のためのもの。 chacl(1)lsacl(1) の出力を解釈できるように、 この形式を入力として受け付けます。

長い形式 

明確に表示するのに適した複数行にわたる書式で、出力のみにサポートされて います。

前述の例ファイルの場合は、 ベース ACL エントリーはこの 3 つの表記で次のように表現できます。

演算子形式 

james.% = rwx, %.admin = rx, %.% = r

短い形式 

(james.%,rwx) (%.admin,r-x) (%.%,r--)

長い形式 

rwx     james.%
r-x     %.admin
r--     %.%

基本的な ACL の使用法に加えて、いくつかのライブラリコール とコマンドが 演算子形式と短い形式のバリエーションを理解し、使用すること ができます。 以下の「ACL のパターン」を参照してください。

ACL におけるユニーク性

エントリーは各 ACL でユニークです。 各ファイルについて、どの ug の値の組についても (u.g, mode) というエントリーは 1 つのみ、 1 つの u の値には (u.%, mode) というエントリーは 1 つのみ、1 つの g の値には (%.g, mode) というエントリーは 1 つのみ、各ファイルには (%.%, mode) エントリーは 1 つのみしか存在できません。例えば、 ACL は 1 つの (23.14, mode) というエントリーと 1 つの (23.%, mode) というエントリー を持つことはできますが、2 つの (23.14, mode) や 2 つの (23.%, mode) を持つことはできません。

アクセスチェックのアルゴリズム

ACL のエントリーは指定の厳密さのレベルで 4 つに分類されます。 アクセスのチェックで、 ACL は次の順番で実効ユーザーおよびグループと比較されます。

(u.g, rwx) 

特定のユーザー、特定のグループ

(u.%, rwx) 

特定のユーザー、不特定のグループ

(%.g, rwx) 

不特定のユーザー、特定のグループ

(%.%, rwx) 

不特定のユーザー、不特定のグループ

プロセスの実効ユーザー ID と実効グループ ID (または何らかの補助グループ ID) の組合せについての 1 つのエントリーが適合すると、それ以降の (つまり、より特定的でない) エントリーはチェックされません。 適合するもののうちでは特定的でないエントリーよりもより特定的なエントリーの 方が優先されます。

プロセスが 1 つまたは複数のグループ ID を持っている場合 (つまり、 補助グループリストが空でない場合)、 1 つまたは複数の (u.g, mode) または (%.g, mode) エントリーが適合するかも しれません。このような場合は、(同じレベルの特定度、 u.g または %.g の) すべての適合するエントリーの アクセスモードが互いに OR になります。 その結果として得られるモードビットが許可すれば、アクセスが承諾されます。 エントリーはユニークなので、各エントリー型のエントリーの並ぶ順番は重要では ありません。

従来の UNIX のパーミッションビットはベース ACL エントリーにマップされているの で、アクセスチェックの中に含まれています。

読取りと書込みの両方を行うようにファイルをオープンするときのように、 1 つのリクエストが 1 つまたは複数のタイプのアクセスでできている場合、 リクエストされたすべてのタイプのアクセスについてプロセス が許可を受けていなければそのアクセスは承諾されません。 プロセスがグループリストに 2 つのグループを持っていて、 その一方が読取りアクセスの許可のみを持ち、他方が書込みアクセスの許 可のみを持っている場合でもそのアクセスが承諾されることに注意してください。 つまり、リクエストされたアクセスがどの 1 つのエントリーについても承諾され ていなくても、プロセスがいくつかのグループに属しているために エントリーの組合せによってそのアクセスが承諾されることがあります。

ACL の演算子形式 (入力のみ)

user . group operator mode [ operator mode ]... , ...

複数のエントリーは chmod(1) にあるようにカンマで区切られます。 各エントリーの内容は、 ユーザー識別子およびグループ識別子、 その後に続く chmod(1) が受け付けるモードシンタックスで記述された 1 つまたは複数の演算子と モードキャラクタによって構成されます。

ACL 全体は 1 つの引き数でなければならないので、 その中に空白や特殊文字がある場合は シェルに渡すときに引用符で囲まなければなりません。 空白は名前の中でなければ無視されます。 null ACL は正当なものであり、状況によって「アクセスなし」または「変化なし」 を意味します。

各ユーザー ID とグループ ID は以下のもので表現できます。

name  

適正なユーザー名かグループ名

number  

適正な数字 ID 値

%  

「不特定なユーザーまたはグループ」を適合する。

@  

「現在のファイルの所有者またはグループ」を適合する。 ファイルのu.% および %.g というベース ACL エントリー を参照するのに有用です。

演算子は各エントリーについて常に必要です。 演算子は以下のものがあります。

=  

エントリーの全ビットに与えられたモードの値を設定する。

+  

エントリーの中の指定されたモードビットを設定する。

-  

エントリーの中の指定されたモードビットをクリアする。

モードは 07 の 8 進数値で表現されます。 もしくは r, w, および x の任意の組合せを任意の順番で与えることができます (以下の 例 を参照)。 null モードは演算子 が = であればアクセスを拒否し、 演算子が + または - であれば「変化なし」を表します。

複数のエントリーや、エントリー中の複数の演算子モード部分 は指定された順番に適用されます。競合があってもエラーには ならず、最後に指定されたエントリー、または演算子が 有効になります。 エントリーは何らかの特別な順番で並んでいなくても構いません。

chmod(1) は、 ファイルの所有者、グループ、他人、全ユーザー を記号的に参照するのに、それぞれ u, g, o, a のみが使えることに注意してください。 ACL は任意のユーザーおよびグループ識別子 について働くので、@ が簡便さのために用意されています。

正確な構文は次のとおりです。

acl       ::=  [entry[,entry]...]
entry     ::=  id . id op mode [op mode]...
id        ::=  name | number | % | @
op        ::=  = | + | -
mode      ::=  0..7 | [char[char]...]
char      ::=  r | w | x

ACL の短い形式 (入力および出力)

(user . group, mode) ...

短い形式は演算子形式と比べていくつかの面で異なっています。

  • エントリーはカンマで区切られるのではなくかっこ で囲まれます。

  • 各エントリーはすべてのモードビットを含んだ形でモードを指定します。 モードの値を + および - 演算子で変更することはできません。 しかし、カンマの機能は 演算子形式における = 演算子と同様です。

  • 簡潔さのため、モードフィールド の出力中の設定しないパーミッションビットはハイフンで表され、 入力でもこの表現が許されます。これは ls(1) が用いる出力形式と同様です。

複数のエントリーは結合されます。 演算子形式との整合性をとるため、 ユーザー ID とグループ ID を区切るのに ドット (.) が用いられます。

出力では、空白は名前の中 (もし存在すれば) 以外では印字されませ ん。適合する名前がわからない時は ID 番号が印字されます。 「不特定のユーザーやグループ」については、 どちらの ID でも % を印字することができます。 モードは <r|-><w|-><x|-> として 表現されます。つまりモードは常に 3 文字で表現され、設定しない モードビットはハイフンで埋められます。 ACL がシステムから読み込まれたとき、エントリーは特定度で順序付けされ、次に ID 部分の数値で順序付けされます。

入力では、 ACL 全体が 1 つの引き数でなければならないので、 その中に空白や特殊文字がある場合は シェルに渡すときに引用符で囲まなければなりません。 空白は名前の中でなければ無視されます。 null ACL は正当なものであり、状況によって「アクセスなし」または「変化なし」 を意味します。

ユーザー ID とグループ ID は、演算子形式の場合と 同様に表現されます。

モードは 07 の 8 進数値で表現されます。 もしくは r, w, x, および - (無視される) の任意の組合せを任意の順番で与えることができます (以下の「 例 」を参照)。 null モードは アクセスを拒否します。

冗長な指定はエラーにはならず、 どのユーザー ID/グループ ID の組合せでも最後のものが有効に なります。 エントリーは何らかの特別な順番で並んでいなくてもかまいません。

正確な構文は次のとおりです。

acl       ::=  [entry[entry]...]
entry     ::=  (id.id,mode)
id        ::=  name | number | % | @
mode      ::=  0..7 | [char[char]...]
char      ::=  r | w | x | -

ACL の長い形式 (出力のみ)

mode user . group

各エントリーは出力の 1 行を占めます。 モードは、縦方向の検索を容易にするために (設定しないモードビットに) ハイフンを使って固定幅のフィールド で行の最初に表示されます。 各ユーザー ID とグループ ID は、名前が知られていればそれを表示し、 知られていなければ番号を表示し、 「不特定のユーザーやグループ」については、 % を表示します。 エントリーはもっとも特定的なものからもっとも特定的でないものへと順序付け られ、次に ID 部分の数値で順序付けられます。

表示されるすべての ACL が最低でも 3 つのエントリーであるベース ACL エントリー (つまりuid.%, %.gid, %.%) をもっていることに注意してください。

正確な構文は次のとおりです。

acl       ::=  entry[<newline>entry]...
entry     ::=  mode<space>id.id
mode      ::=  <r|-><w|-><x|->
id        ::=  name | number | %

ACL のパターン

いくつかのライブラリコールとコマンドは パターンに適合するすべてのエントリーに対する処理を可能にするため、 正確には ACL でない ACL パターンを認識し、使用することができます。 ACL 構文は以降のように拡張されます。

ワイルドカードユーザーとグループ ID
  

* (ワイルドカード) というユーザー名またはグループ名は、 % (不特定のユーザーまたはグループ) を含めた どのエントリーのユーザー ID やグループ ID にも適合します。

オンオフまたは無視されるモードビット
  

演算子形式の入力では、演算子 =, +, - は次のように適用されます。

=  

エントリーのモードの値がこのモードと正確に一致する。

+  

エントリーのモードの値でこのビットがオンになる。

-  

エントリーのモードの値でこのビットがオフになる。

+ および - 演算子のみが用いられたとき、コマンド は指定していないモードビットの値は無視します。

短い形式のパターンは演算子形式の = 演算子と同様にモードを扱います。

ワイルドカードモード値 

演算子形式や短い形式の入力中の * (ワイルドカード) というモード (たとえば、"ajs.%=*" または "(ajs.%,*)" ) は、演算子形式のエントリーの中に別のモード値がな ければ、すべてのモード値と適合します。 また、同じ効果を得るために、エントリーのモード部分をすべて省略することも できます。

エントリーは結合されない 

ユーザー ID とグループ ID の値に適合するエントリーは結合されません。 指定された各エントリーはパターンを受け付けるコマンドによって 別個に適用されます。

サポートされた ACL オペレーション

setacl(2) および getacl(2) システムコールによって、 あるファイルの ACL 全体を acl_entry 構造体の配列として設定したり取り出したりする ことができます。 ファイルへのアクセス権を調べるには、 access(2) および getaccess(2) を参照してください。

ACL を管理するために、いろいろなライブラリコールが 用意されています。

acltostr(3C) 

acl_entry 配列 を表示可能な文字列に変換します。

strtoacl(3C) 

ACL 文字列を解析して acl_entry 配列に変換します。

strtoaclpatt(3C) 

ACL パターン文字列を解析して acl_entry_patt 配列に変換します。

setaclentry(3C) 

fsetaclentry  

1 つのファイルの ACL 中の 1 つの ACL エントリーを追加、変更、削除します。

cpacl(3C) 

fcpacl  

1 つのファイルから別のファイルへ、 ACL とファイルの様々なモードビット ( chmod(2) を参照) をコピーし、所有権を 必要ならば (以下を参照) 転送し、リモートファイル を正しく扱います。

chownacl(3C) 

ACL に表現されるファイルの所有者やグループを変更します。 つまり、所有権を転送します (以下を参照)。

以降のコマンドが ACL とパーミッションを管理するのに使用可能です。

chacl(1) 

1 つまたは複数のファイルの ACL の各エントリーまたはすべてのオプションのエントリーを追加、変更、削除したり、 ファイルへのすべてのアクセスを削除したり、 ACL をパーミッションビットに組み込んだりします。

lsacl(1) 

ファイルの ACL をリストします。

chmod(1) 

パーミッションビットおよびその他のファイルの様々なモードビット を変更します。

ls(1) 

長い形式では、パーミッションビット とその他のファイル属性をリストします。

find(1) 

ファイルをその ACL も含めた属性に応じて検索します。

getaccess(1) 

ファイルへのアクセス権をリストします。

stat(2), chmod(2), chown(2) による ACL のインタラクション

stat  

st_mode フィールドはファイルへの呼出し側のアクセス権を要約します。 これは、 呼出し側に適応できる 1 つまたは複数のオプションのエントリーをファイルがもっている場合にのみ ファイルのパーミッションビットと異なります。 st_basemode フィールドはファイルの実際のパーミッションビットを提供します。 st_acl フィールドはオプションの ACL エントリーがファイルの ACL の中に存在することを示します。

st_mode フィールドはユーザー依存の要約で、 ACL のことを知らないで stat(2) および chmod(2) を使うプログラムが、より期待した結果を出すように、 また、 stat(2) が NFS を通したリモートファイルについて正当な情報を提供するようにします。 st_basemode および st_acl フィールドはローカルファイル にのみ有用です。

chmod  

IEEE 標準 POSIX 1003.1-1988 に準拠するために、 chmod(2) はファイルの ACL の中のオプションのエントリーをすべて削除します。 残念ながら、 chmod(2) はパーミッションビットだけでなくファイルの様々なモードビットの設定に も使われるので、ファイルの ACL を保護するために特別な労力を要することがあります。

chown  

新しいファイルの所有者やグループがオプションの (u.%, mode) または (%.g, mode) エントリーを ファイルの ACL の中にすでに持っていない場合、 古い所有者やグループのファイルアクセス パーミッションビット とベース ACL エントリーが受け継がれます。

(id1,mode1) -> (id2,mode1) 

これは従来型の動作です。 しかし、 新しいファイルの所有者やグループがオプションの (u.%, mode) または (%.g, mode) エントリーを ファイルの ACL の中にすでに持っている場合、 ACL は変化しません。

(id1, mode1) -> (id1, mode1)
(id2, mode2) -> (id2, mode2)

ACL に関する現存する情報は保持されます。 しかし、古いオプションの ACL エントリーは新しいベース ACL エントリー またはその逆になるので、 ファイルのアクセス パーミッションビットは変化します。

chown(2) によって ACL の所有権を転送することは、 ファイルが異なったユーザーやグループ に転送されたり、 所有者とは異なるユーザーやグループによって ( cpacl(3C) または chownacl(3C) を用いて) コピーされ、 その後 ACL の内容の変更なしに元の所有者またはグループ に返されることを許します。 この特別な複雑さは次の理由により必要とされます。

  • ACL は (ファイルの所有者およびグループ ID に結びつけられた) パーミッションビットにとって 後方互換性を持ったスーパーセットであり、それに置き換わるものではありませ ん。

  • これによって、 ユーザーやプログラムが パーミッションビットと ACL エントリーの組合せを取り扱うよりも 簡単に ACL を扱うことができます。 また、アクセス検査アルゴリズムも簡潔で対称性を持ったものになります。 パーミッションビットは ACL エントリーを「侵食」したり「隠蔽」したりはしません。

演算子形式

以下は、 %.% エントリーを"other"ユーザーに対して そのファイルについて読取りのみを制限します。

chacl '%.% = r' myfile 

以下は、任意のグループのユーザー"bill"に対して、 bill.% エントリーよりも特定的な制限的エントリー (例えば bill.adm エントリーが書込みを拒否している場合) がなければ そのファイルに対して書込みを許可します。

chacl 'bill.% +w' myfile 

以降の ACL の指定には 2 つのエントリーがあります。 最初の 1 つはユーザーが 12、グループが 4 のものに対して 書込み機能を削除し、読取り機能 を追加しています。2 番目のエントリーは不特定のグループ の不特定のユーザーに対してアクセスを拒否しています。

chacl '12.4-w+r, %.% =' myfile 

以降のエントリーの組は、 u.% エントリーをファイルの所有者に対して 読取りと実行の両方を許可して、書込みおよび 実行機能を"other"ユーザー ("%.%"エントリー) に対して追加します。 モードキャラクタが実例のためにわざと繰り返されていることに注意してください。

chacl '@.% = 5, %.% + xwx' myfile

短い形式

典型的な ACL の印字例を挙げます。 これは、ユーザー jpc がグループ adm に所属する場合にそのファイルの読取りと実行を 許可し、ユーザー ajs がグループ trux に所属する場合にアクセスを拒否し、ユーザー jpc が任意の ( adm 以外の) グループに所属する場合にファイルの読取りのみを許可します。 グループ bin に属するそれ以外のユーザーはそのファイルの読取りと実行が可能で、 それ以外のユーザーはファイルの読取りだけができます。

(jpc.adm,r-x)(ajs.trux,---)(jpc.%,r--)(%.bin,r-x)(%.%,r--) 

以下は"other"ユーザーにファイルの読取りだけを許可します。

chacl '(%.%,r)' myfile 

以下は、任意のグループに属するユーザー bill に対して書込みのみのアクセス許可を設定します。

chacl '(bill.%,-w-)' myfile 

以下は、グループ 4 に属するユーザー 12 のためのエントリーを 読取りと書込みを許可するように設定します。

chacl '(12.4,wr)' myfile 

以下は、ファイルの所有者 に読取りと実行の両方を許可するためのベース ACL エントリー を設定し、"other"ユーザー ("%.%"エントリー) に書込みと実行機能を設定します。

chacl '(@.%, 5) (%.%, xwx)' myfile 

長い形式

先の例と同じ ACL を長い形式でプリントしたものを挙げます。

r-x jpc.adm
--- ajs.trux
r-- jpc.%
r-x %.bin
r-- %.%

ACL のパターン

以降のコマンドは、 何らかのユーザー/グループの組合せに対して読取りアクセスを許可し 書込みアクセスを拒否するようなエントリーを含む ACL をもつファイルの場所を探します。

find / -acl '*.*+r-w' -print 

以下は、グループ bin の任意のユーザーについてのエントリーと、任意のグループ のユーザー tammy についてのエントリーに、そのエントリーのモードの値に関わらず適合します。 適合するオプションの ACL エントリーは削除され、 適合するベース ACL エントリーのモードの値はゼロに設定されます。

chacl -d '%.bin, tammy.*=*' myfile 

以下はすべてのエントリーに適合し、オプションのエントリーを削除して ベース ACL エントリーのモードの値をゼロにセットします。

chacl -d '(*.*,*)' myfile 

ヘッダ

ヘッダ <sys/acl.h>

<sys/acl.h> ヘッダファイルは ACL あたりのエントリーの数をつかさどる 以降の定数を定義します。

NACLENTRIES  

ベースエントリーを含む ACL のエントリー数の最大値

NBASEENTRIES  

ベースエントリーの数

NOPTENTRIES  

オプションのエントリーの数

ACL エントリー構造体 struct acl_entry もまた定義され、以下のメンバーを含みます。

aclid_t    uid;     /* user ID */
aclid_t    gid;     /* group ID */
aclmode_t  mode;    /* see <unistd.h> */

<sys/acl.h> ヘッダは aclid_t および aclmode_t の型も定義します

不特定なユーザー ID とグループ ID の値は次のように定義されています。

ACL_NSUSER  

不特定なユーザー ID

ACL_NSGROUP  

不特定なグループ ID

特別な nentries の値 ACL_DELOPTsetacl(2) がオプションのエントリーを削除するときに用います。

ヘッダ <sys/getaccess.h>

<sys/getaccess.h> ヘッダは getaccess(2) が用いる定数を定義します。

uid のための特別なパラメータ値:

UID_EUID  

実効ユーザー ID を利用

UID_RUID  

実ユーザー ID を利用

UID_SUID  

セーブされたユーザー ID を利用

ngroups のための特別なパラメータ値:

NGROUPS_EGID  

プロセスの実効 gid

NGROUPS_RGID  

プロセスの実 gid

NGROUPS_SGID  

プロセスのセーブされた gid

NGROUPS_SUPP  

プロセスの補助グループのみ

NGROUPS_EGID_SUPP
  

プロセスの実効 gid + 補助グループ

NGROUPS_RGID_SUPP
  

プロセスの実 gid + 補助グループ

NGROUPS_SGID_SUPP
  

プロセスのセーブされた gid + 補助グループ

ヘッダ <acllib.h>

<acllib.h> ヘッダファイルは ACL がサポートするライブラリコールが使ういくつかの定数を定義しています。

acltostr() のための ACL の記号形式:

FORM_SHORT 
FORM_LONG 

さまざまなコールのマジックナンバー:

   ACL_FILEOWNER   ファイルの所有者ID
   ACL_FILEGROUP   ファイルのグループID
   ACL_ANYUSER     ワイルドカードユーザーID
   ACL_ANYGROUP    ワイルドカードグループID
   MODE_DEL        1つのACLエントリーの削除

ACL エントリーの有効なモードビットのためのマスク:

  MODEMASK       (R_OK | W_OK | X_OK) 

<acllib.h> ヘッダは ACL パターンエントリー構造体 struct acl_entry_patt も定義しています。これは次の メンバーを含んでいます。

       aclid_t       uid;       /* user ID */
       aclid_t       gid;       /* group ID */
       aclmode_t     onmode;    /* mode bits that must be on */
       aclmode_t     offmode;   /* mode bits that must be off */

警告

ACL は通常のファイルやディレクトリに対して使うためのものです。 オプションの ACL エントリーは、 ターミナル スペシャルファイルや LP スケジューラ コントロールファイルなどの、 あるシステムユーティリティが操作するファイルへの使用は奨められません。 これらのユーティリティは chmod(2) の呼出しの結果オプションのエントリーを意図していた制限とともに削除して しまい、予期しないアクセス権限の増加が起きるかもしれません。

ほとんどのサポートされたユーティリティは ACL を正しく取り扱いますが、すべて ではありません。ただし、 fbackup(1M)frecover(1M) ファイルアーカイブ ユーティリティだけはアクセス制御リスト を正しく扱います。 オプションの ACL エントリーを持ったファイルの ACL を扱えない ( アーカイブプログラム ar(1), cpio(1), ftio(1), tar(1), dump(1M) のような) プログラムを使うときは、 データが失われないように それぞれの参照ページに含まれた ACL 情報に注意してください。

ユーザー名が /etc/passwd ファイルにまたはグループ名が /etc/group ファイルに % または @ として、あるいはパターンに * として定義されている場合、 ACL 構文は、それらの記号が別の意味を持っているので その名前をそれ自身として参照することはできません。 しかし、そのようなユーザーまたはグループ でも ID 番号を用いて参照することはできます。 ユーザー名やグループ名は 以下の文字を含むことはできません。

.  

ユーザー名の中で使わないでください。

+ 

グループ名の中で使わないでください。

- 

グループ名の中で使わないでください。

= 

演算子形式の入力中のグループ名に使わないでください。

,  

短い形式または演算子形式のパターンに使わないでください。

)  

短い形式のパターンに使わないでください。

@(ファイルの所有者またはグループ) や * (ワイルドカード) という記号 を用いた ACL のパターンを、 一方が特定的な値をもち、 他方が @ または * を用いてファイルは等しいがモードの値が異なるという 2 つのエントリーを与えることで、 特定のファイルには適合できず、その所有権 に依存するように指定できます。例えば、

find / -acl '(ajs.%,r)(@.%,rw)' -print 

ajs が所有するファイルには適合できません。

制約

NFS 

NFS はリモートファイルの ACL をサポートしていません。 各マニュアルのエントリーはそのような環境下において さまざまなシステムコール、ライブラリコール、およびコマンド の振舞いを指定しています。 オプションのエントリーを持ったファイルをネットワークを通して転送するときや、 リモートファイルを操作するときには、オプションのエントリーが何の警告もなし に削除されることがありますので注意してください。

著者

ここに記述されたアクセス制御リストの設計は HP で開発されました。

ファイル

<sys/acl.h> 

setacl(2)getacl(2) をサポートするヘッダファイル

<sys/getaccess.h>
  

getaccess(2) をサポートするヘッダファイル

<acllib.h> 

ACL ライブラリコールをサポートするヘッダファイル

/etc/passwd  

ユーザー名およびユーザー ID とグループ ID の値を定義するファイル

/etc/group  

グループ名を定義するファイル

参照

chacl(1), chmod(1), cp(1), find(1), getaccess(1), ln(1), ls(1), lsacl(1), mv(1), rm(1), fbackup(1M), frecover(1M), fsck(1M), fsdb(1M) access(2), chmod(2), chown(2), creat(2), getaccess(2), getacl(2), mknod(2), open(2), setacl(2), stat(2), acltostr(3C), chownacl(3C), cpacl(3C), setaclentry(3C), strtoacl(3C), group(4), passwd(4), privgrp(4), aclv(5)

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.