Provided by: manpages-ja_0.5.0.0.20080615-1_all bug

ACLプ
     全てのオブジェクトは、そのオブジェクトに対する任意のアクセスを決定する
     ACL に関連付けられていると考えることがでい襦 この ACL はアクセス AC
     と呼ばれる。 これに加えて、ディレクトリに関連付けられた ACL がある。 この
     ACL はディレクトリ内で作成されたオブジェクトの 最初のアクセス ACL
     を決定する。 この ACL はデフォルト ACL と呼ばれる。

ACLリ
     ACL は ACL エントリの集合で構成される。 ACL
     エントリは、それが関連付けられたオブジェクトの アクセス許可 (permission)
     を指定する。 アクセス許可は、個々のユーザまたはユーザのグループに対する
     読み出し・書すみ・検索/実行の許可の組み合わせである。

     ACL エントリには、エントリタグ型・ オプションとしてのエントリタグ修飾子
     (qualifier)・許可の集合が含まれる。 ここでは、修飾子という単語を ACL
     エントリのエントリタグ修飾子を表すのに使う。

     修飾子は、ACL_USER または ACL_GROUP というタグ型のエントリに対して、
     それぞれユーザまたはグループの識別子を表す。 ACL_USER と ACL_GROUP
     以外のタグ型のエントリは、 定義された修飾子を持たない。

     以下のエントリタグ型が定義されている:

           ACL_USER_OBJ    ACL_USER_OBJ エントリはファイル所-
                           者に対するアクセス権を表す。

           ACL_USER        ACL_USER
                           エントリはエントリの修飾子で識別されるユーザに対するアクセス権を表す。

           ACL_GROUP_OBJ   ACL_GROUP_OBJ
                           エントリはファイルグループに対するアクセス権を表す。

           ACL_GROUP       ACL_GROUP エントリはエントリの修飾子で識別される
                           グループに対するアクセス権を表す。

           ACL_MASK        ACL_MASK エントリは ACL_USER, ACL_GROUP_OBJ,
                           ACL_GROUP 型のエントリで
                           許可される最大のアクセス権を表す。

           ACL_OTHER       ACL_OTHER エントリは ACL
                           における他のどのエントリともマッチしない
                           プロセスのアクセス権を表す。

     アクセスチェックが実行される場合、実効 (effective) ユーザ ID に対して
     ACL_USER_OBJ と ACL_USER エントリがテストされる。 実効グループ ID
     は、全ての補助 (supplementary) グループ ID と同様に、 ACL_GROUP_OBJ と
     ACL_GROUP エントリに対してテストされる。

 ACL
     邑な ACL には ACL_USER_OBJ, ACL_GROUP_OBJ, ACL_OTHER タグ型のうち 何れか
     1 つだけのエントリが含まれる。 ACL_USER と ACL_GROUP タグ型のエントリは、
     0 回以上 ACL に出現することがでい襦 ACL_USER または ACL_GROUP
     タグ型のエントリを含む ACL は、 ACL_MASK タグ型のエントリを 1
     つだけ含まなければならない。 ACL_USER または ACL_GROUP タグ型のエントリが
     ACL に含まれない場合、 ACL_MASK エントリはオプションである。

     全てのユーザ ID 修飾子は、ACL_USER タグ型の全てのエントリにおいて
     一意でなければならない。 また全てのグループ ID 修飾子は、ACL_GROUP
     タグ型の全てのエントリにおいて 一意でなければならない。

     acl_get_file() 関数は、ディレクトリにデフォルト ACL
     が関連付けられていない場合、 ディレクトリのデフォルト ACL として、 ACL
     エントリが 1 つも含まれない ACL を返す。 acl_set_file() 関数も、ACL
     エントリが 1 つも含まない ACL を、 ディレクトリに対する邑なデフォルト
     ACL として受け付ける。 このような ACL はディレクトリに デフォルト ACL
     を関連付けないことを表す。 これは acl_delete_def_file()
     関数を使うのと等価である。

ACL応
     ACL で定義される許可は、ファイル許可ビットで指定される許可の 上位集合
     (superset) である。 ファイル所夕圓紡个靴督蟲舛気譴覽可は、 ACL_USER_OBJ
     エントリの許可に対応する。 ACL に ACL_MASK
     エントリがない場合、ファイルグループに対して定義される許可は、
     ACL_GROUP_OBJ エントリの許可に対応する。 ACL に ACL_MASK
     エントリがある場合、ファイルグループに対して定義される許可は、 ACL_MASK
     エントリの許可に対応する。 他のクラスに対して定義される許可は、
     ACL_OTHER_OBJ エントリの許可に対応する。

     ファイル許可ビットを変更すると、関連付けられた ACL エントリが変更される。
     ACL エントリの許可を変更すると、ファイル許可ビットが変更される。

 ACL
     ファイルオブジェクトのアクセス ACL は、 creat(), mkdir(), mknod(),
     mkfifo(), open() 関数のいずれかでオブジェクトが作られたと-
     に初期化される。 デフォルト ACL がディレクトリと関連付けられている場合、
     ファイルオブジェクトを作成する関数の mode 引た瑤肇妊レクトリのデフォルト
     ACL を使って、 新しいオブジェクトの ACL が決定される:

     1.   新しいオブジェクトは、それが含まれるディレクトリのデフォルト ACL を
          アクセス ACL として継承する。

     2.   ファイル許可ビットに対応するアクセス ACL エントリが修正され、 mode
          引た瑤濃慊蠅気譴討い覆さ可ビットを含まないようにされる。

     ディレクトリにデフォルト ACL が関連付けられていない場合、
     ファイルオブジェクトを作成する関数の mode 引た瑤肇侫.ぅ觝鄒マスク
     (umask(2) を参照) を使って、新しいオブジェクトの ACL が決定される:

     1.   新しいオブジェクトには、タグ型 ACL_USER_OBJ, ACL_GROUP_OBJ,
          ACL_OTHER の エントリを含むアクセス ACL が割り当てられる。
          これらのエントリの許可は、ファイル作成マスクで指定された許可に設定される。

     2.   ファイル許可ビットに対応するアクセス ACL エントリが修正され、 mode
          引た瑤濃慊蠅気譴討い覆さ可ビットを含まないようにされる。

ム
     プロセスは、ACL で保護されたファイルオブジェクトに対して、 読み出し・書-
     込み・実行/検索を要求することがでい襦 アクセスチェックアルゴリズムは
     オブジェクトへのアクセスを許可するか否かを決定する。

     1.   If プロセスの実効ユーザ ID がファイルオブジェクト所夕圓離罅璽 ID
          と一致する。 then

              if                 要求された許可が                 ACL_USER_OBJ
              エントリに含まれるならば、アクセスは許可される。

              else アクセスは拒否される。

     2.   else if プロセスの実効ユーザ ID が ACL_USER
          型の何れかのエントリの修飾子と一致する。 then

              if    一致した    ACL_USER    エントリと   ACL_MASK   エントリに
              要求された許可が含まれるならば、アクセスは許可される。

              else アクセスは拒否される。

     3.   else if プロセスの実効グループ ID または何れかの補助グループ ID が、
          ファイルグループまたは ACL_GROUP
          型の何れかのエントリの修飾子と一致する。 then

              if ACL が ACL_MASK エントリを含む。 then

                  if  ACL_MASK  エントリおよび一致する  ACL_GROUP_OBJ   または
                  ACL_GROUP                                         エントリの
                  何れかに、要求された許可が含まれるならば、アクセスは許可される。

                  else アクセスは拒否される。

              else        (ACL_MASK        エントリを含まない        ACL_GROUP
              エントリは存在しない点に注意すること)

                  if                                             ACL_GROUP_OBJ
                  エントリが要求された許可を含むならば、アクセスは許可される。

                  else アクセスは拒否される。

     4.   else if ACL_OTHER
          エントリが要求された許可を含むならば、アクセスは許可される。

     5.   else アクセスは拒否される。

ACL式
     ACL を表現するために長いテゥ好鳩措阿斑擦ぅ謄スト形式が定義されている。
     両方の形式において、ACL エントリはコロン区切られた 3 つのフィールド、 ACL
     エントリタグ型・ACL エントリ修飾子・任意のアクセス許可で表現される。 1
     番目のフィールドは以下のエントリタグ型ァ璽錙璽匹硫燭譴を含む:

           user    user ACL エントリは、ファイル所夕 (エントリタグ型
                   ACL_USER_OBJ) と 指定されたユーザ (エントリタグ型 ACL_USER)
                   に対して 許可されるアクセスを指定する。

           group   group ACL エントリは、ファイルグループ (エントリタグ型
                   ACL_GROUP_OBJ) と 指定されたグループ (エントリタグ型
                   ACL_GROUP) に対して 許可されるアクセスを指定する。

           mask    mask ACL エントリは、ファイル所夕圓紡个垢 user エントリと
                   other エントリを除く、 全ての ACL (エントリタグ型 ACL_MASK)
                   に対して許可されるアクセスのうち 最大のものを指定する。

           other   other ACL エントリは、どの user ACL エントリにも group ACL
                   エントリにもマッチしない (エントリタグ型 ACL_OTHER) の
                   プロセスに対して許可されるアクセスを指定する。

     2 番目のフィールドは、 エントリタグ型 ACL_USER または ACL_GROUP
     のエントリの場合、 ACL
     エントリに関連付けられているユーザまたはグループ識別子を含む。
     その他のエントリの場合、このフィールドは空になる。
     ユーザ識別子はユーザ名でも 10 進数のユーザ ID 番号でもよい。
     グループ識別子はグループ名でも 10 進数のグループ ID 番号でもよい。

     3 番目のフィールドは任意のアクセス許可を保持する。 書-
     出し・読み込み・検索/実行の許可は、 r, w, x
     という文字でこの順番で表される。 ACL
     エントリにこれらの許可がない場合、各文字は - 文字で置ご垢┐蕕譴襦 テ-
     スト形式から内部表現に変換する場合、
     保持していない許可は指定する必要がない。

     各 ACL エントリの始めと終わり、そして フィールド区切り文字 (コロン文字)
     の直前と直後には、 空白を入れることがでい襦

  式
     長いテゥ好鳩措阿任蓮1 行に 1 つの ACL エントリを保持する。
     さらにナンバー宜 (#)
     でコメントを開始することが可能で、行の終りまでがコメントになる。 ACL_MASK
     エントリに含まれない許可が ACL_USER, ACL_GROUP_OBJ, ACL_GROUP ACL
     エントリに含まれる場合、 そのエントリの後にはナンバー宜罎畔源列
     "effective:" と そのエントリで定義される実効アクセス許可が続く。
     以下は長いテゥ好鳩措阿領磴任△:

           user::rw-
           user:lisa:rw-         #effective:r--
           group::r--
           group:toolies:rw-     #effective:r--
           mask::r--

           other::r--
  式
     短いテゥ好鳩措阿蓮▲灰鵐泙廼萓擇蕕譴 ACL エントリの並びであり、
     入力として使われる。 コメントはサポートされていない。 エントリタグ型-
     ーワードは省略されない完全な形式でも 1 文字の省略形でも指定でい襦 user
     の省略形は u, group の省略形は g, mask の省略形は m, other の省略形は o
     である。 許可には、 r, w, x という文字のうち 1
     つ以上を、任意の順番で含めることがでい襦 以下は短いテ-
     スト形式の例である:

           u::rw-,u:lisa:rw-,g::r--,g:toolies:rw-,m::r--,o::r--
           g:toolies:rw,u:lisa:rw,u::wr,g::r,o::r,m::r

拠
     IEEE 1003.1e draft 17 は、 タグ型 ACL_MASK
     のエントリを含むアクセス制御リストを定義しており、
     画一的ではないファイル許可ビット間の対応付けを定義している。
     標準化作業グループは、IEEE 1003.1 ("POSIX.1") と互換世里覆
     アプリケーションが ACL を持つシステム上でも機能することを保証するために、
     比較的複雑なインタフェースを定義した。 IEEE 1003.1e draft 17
     には、このインタフェースを選択する理論的根拠が セクション B.23
     に書かれている。

更
     ACL をサポートするシステムでは、ファイルユーティリティ ls(1), cp(1),
     mv(1) は自身の動作を以下のように変更する:

     +o   デフォルト ACL を持つファイル、または必要とされる 3 つ以上の ACL
         エントリを 保持するアクセス ACL を持つファイルに対して、 ls(1)
         ユーティリティを長い形式 ls -l で実行すると、 プラス宜 (+)
         が許可文字列の後に表示される。

     +o   -p フラグが指定された場合、 cp(1) ユーティリティは ACL も保存する。
         保存でい覆ぞ豺腓老拗陲出される。

     +o   mv(1) ユーティリティは常に ACL を保存する。 保存で-
         ない場合は警告が出される。

     chmod(1) ユーティリティと chmod(2) システムコールのアクセス ACL
     に対する影響については、 _CL _
     で説明されている。

拠
     IEEE 1003.1e draft 17 ("POSIX.1e") は、 IEEE 1003.1
     標準に対するいくつかのセゥ絅螢謄3板イ砲弔い撞述している。 1003.1e
     での作業は放棄されたが、多くの UNIX 系システムは POSIX.1e draft 17
     またはそれ以前のドラフトの一部を実装している。

     Linux アクセス制御リストは、 POSIX.1e
     のアクセス制御リストで定義されている全ての関数セットと
     いくつかの拡張を実装している。 この実装は POSIX.1e draft 17
     に完全に準拠する。 拡張にはその旨が気気譴討い襦
     アクセス制御リストの操作関数は、 ACL ライブラリ (libacl, -lacl)
     で定義されている。 POSIX 互換のインタフェースは <sys/acl.h>
     ヘッダで宣言されている。 これらの関数に対する Linux 固佑粒板イ蓮
     <acl/libacl.h> ヘッダで宣言されている。

目
     chmod(1), creat(2), getfacl(1), ls(1), mkdir(2), mkfifo(2), mknod(2),
     open(2), setfacl(1), stat(2), umask(1)

   POSIX 1003.1e DRAFT 17
     http://www.guug.de/~winni/posix.1e/download.html

   POSIX 1003.1e類
     ACL理
          acl_dup(3), acl_free(3), acl_init(3)

     ACL作
          acl_copy_entry(3), acl_create_entry(3), acl_delete_entry(3),
          acl_get_entry(3), acl_valid(3)

          acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3),
          acl_delete_perm(3), acl_get_permset(3), acl_set_permset(3)

          acl_get_qualifier(3), acl_get_tag_type(3), acl_set_qualifier(3),
          acl_set_tag_type(3)

     ACL作
          acl_delete_def_file(3), acl_get_fd(3), acl_get_file(3),
          acl_set_fd(3), acl_set_file(3)

     ACL換
          acl_copy_entry(3), acl_copy_ext(3), acl_from_text(3),
          acl_to_text(3), acl_size(3)

   POSIX 1003.1e類
     最初の関数のグループは POSIX ライクなアクセス制御リストを持つ
     大部分のシステムでサポートされている。 一方、2
     番目の関数のグループをサポートしているシステムは少ない。
     移植を予定するアプリケーションでは、2 番目のグループを避けた方が良い。

     acl_delete_def_file(3), acl_dup(3), acl_free(3), acl_from_text(3),
     acl_get_fd(3), acl_get_file(3), acl_init(3), acl_set_fd(3),
     acl_set_file(3), acl_to_text(3), acl_valid(3)

     acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3), acl_copy_entry(3),
     acl_copy_ext(3), acl_copy_int(3), acl_create_entry(3),
     acl_delete_entry(3), acl_delete_perm(3), acl_get_entry(3),
     acl_get_permset(3), acl_get_qualifier(3), acl_get_tag_type(3),
     acl_set_permset(3), acl_set_qualifier(3), acl_set_tag_type(3),
     acl_size(3)

   LINUX張
     これらの移植世里覆こ板イ蓮Linux システムでのみ邑である。

     acl_check(3), acl_cmp(3), acl_entries(3), acl_equiv_mode(3),
     acl_error(3), acl_extended_fd(3), acl_extended_file(3), acl_from_mode(3),
     acl_get_perm(3), acl_to_any_text(3)

者
     Andreas Gruenbacher, <a.gruenbacher@bestbits.at>