# 管理の手引き

# アクセス制御リスト (ACL) の管理

ディレクトリーおよびその中にあるすべてのファイルへのアクセスを制御するために、 UNIX ファイル・システム (UFS) では、モード・ビットを個々のファイルやディレクトリーと関連付けますが、 AFS では、モード・ビットではなく、アクセス制御リスト (ACL) をファイルやディレクトリーと関連付けます。 AFS ACL には、7 つのアクセス権および約 20 のユーザーまたはグループ項目のための空きがあるため、 3 つのアクセス権および 3 つの項目 (所有者、グループ、およびその他) だけしかない UFS に比べて、より調整されたアクセス制御を提供することができます。

## 手順の概要

この章では、指示されたコマンドを使って以下のタスクを実行する手順について説明します。

アクセス制御リストの検証 | fs listacl
ACL の通常アクセス権機能グループの編集 | fs setacl
ACL の禁止アクセス権機能グループの編集 | fs setacl、 -negative フラグを併用
ACL の置換 | fs setacl 、 -clear フラグを併用
ACL のコピー | fs copyacl
古くなった AFS UID の削除 | fs cleanacl

## AFS でのデータの保護

この機能グループでは、AFS および UFS ファイル保護システムの主な違い、ディレクトリー・レベル保護の含意、および 7 つのアクセス権について説明します。

### UFS と AFS のデータ保護の違い

UFS モード・ビット・データ保護システムおよび AFS ACL システムは、次の 2 点で異なります。

- ファイル・レベル (UFS) 保護対ディレクトリー・レベル (AFS) 保護

  UFS は、9 つのモード・ビットのセットを各ファイルの要素に関連付け、3 つ (rwx) を要素の所有者、所有しているグループ、および他のすべてのユーザーにそれぞれ関連付けます。ファイルのディレクトリーにあるモード・ビットの類似セットは、間接的にそのファイルだけに適用されます。

  代わりに、AFS ACL は、ディレクトリー内のすべてのファイルを同じように保護します。他のファイルより機密性が高い特定ファイルは、制限性の高い ACL を持つディレクトリーに保管してください。

  ディレクトリー・レベルでアクセスを定義すると、次のような重大な影響が生じます。

  - ディレクトリーの ACL 上の権限がディレクトリー内のすべてのファイルに適用されます。ファイルを別のディレクトリーに移動するとき、そのファイルに適用されるアクセス権を、新しいディレクトリーの ACL 上のアクセスに効果的に変更します。ディレクトリーの ACL を変更すると、そのディレクトリー内のすべてのファイル上の保護も変更します。
  - サブディレクトリーを作成すると、初期 ACL がその親ディレクトリーも ACL のコピーとして作成されます。その後、サブディレクトリーの ACL を個別に変更することができます。ただし、親ディレクトリーの ACL は、以下の方法で、サブディレクトリーへのアクセスの制御を続けます。親ディレクトリーの ACL は、ユーザーがサブディレクトリーにはアクセスできるように、 l (ルックアップ) アクセス権をユーザー (またはユーザーが属しているグループ) に許可しなければなりません。

    一般的に、上位ディレクトリー (ホーム・ディレクトリーなど) には、かなり自由なアクセス権限を割り当てる必要があります。特に、少なくとも l アクセス権を、上位レベルのディレクトリーの system:anyuser または system:authuser グループに許可すると効果的です。詳しくは、 ACL 上でのグループの使用を参照してください。

- モード・ビットの解釈方法

  モード・ビットは、UFS の唯一のファイル保護システムです。AFS では、UNIX モード・ビットをそのディレクトリー上の ACL のほかに、ファイルにも設定できます、しかし、モード・ビットの解釈のしかたは UNIX ファイル・システムとは異なります。AFS が UNIX モード・ビットを解釈する方法 を参照してください。

- 3 つのアクセス権 (UFS) 対 7 つのアクセス権 (AFS)

  UFS では、アクセス権はモード・ビットの形式で定義されます。すなわち、r (読み取り)、w (書き込み)、および x (実行) です。 AFS では、7 つのアクセス権は以下のように定義され、より精度の高いアクセス制御が可能です。詳しくは、AFS ACL アクセス権 を参照してください。

    a (管理)

    d (削除)

    i (挿入)

    k (ロック)

    l (ルックアップ)

    r (読み取り)

    w (書き込み)

- 3 つの定義済みユーザーとグループ (UFS) 対多数 (AFS) の定義済みユーザーとグループ

  UFS は、1 つのユーザーと 2 つのグループに対するアクセスを、モード・ビットの組を、それぞれ、ファイルまたはディレクトリーを所有するユーザー、単一の定義済みグループ、およびシステム上にアカウントを持つすべてのユーザーに与えることによって制御します。

  それに対して、AFS では、ACL 上に多数の項目 (個々のユーザーまたはグループ) を配置し、項目ごとに別々のアクセス権限のセットを付与できます。配置可能な項目の数は、約 20 個です。この数は、ACL 自体に割り振られているメモリー内で書く項目が占有するスペースによって異なります。

  AFS は、system:anyuser および system:authuser の 2 つのシステム・グループ定義します。これらは、すべてのユーザーおよび認証済みユーザーをそれぞれ表します。詳細は、 ACL 上でのグループの使用 を参照してください。さらに、ユーザーは、個々のユーザーまたはマシンの IP アドレスから構成される、独自のグループを保護データベースに定義することができます。 ACL に対して a アクセス権を持つユーザーは、自分または他のユーザーが定義したグループだけでなく、システム・グループの項目も作成できます。グループの定義についての詳細は、保護データベースの管理 を参照してください。

  ユーザーがファイルまたはディレクトリーへのアクセスを要求すると、ファイル・サーバーは、関連する ACL がユーザーおよびユーザーが属するグループに拡張する許可をすべてまとめます。したがって、グループ項目を ACL に配置すると、 ACL が個々の項目として収容できる数よりも多くのユーザーに対して、アクセスを制御することができます。

### AFS ACL アクセス権

機能的には、7 つの標準 ACL アクセス権は、2 つのグループに分けることができます。 1 つはディレクトリー自体に適用され、もう 1 つはディレクトリーに含まれるファイルに適用されます。

#### 4 つのディレクトリー・アクセス権

このグループの 4 つの権限はディレクトリーそのものに適用される場合に有効です。たとえば、i (挿入) アクセス権は、ファイルへのデータの追加を制御しませんが、新規ファイルまたはサブディレクトリーの作成を制御します。

l (ルックアップ) アクセス権
  このアクセス権は、ディレクトリーおよびそのファイルへのアクセスに関して、門番のような働きをします。ユーザーは、他のアクセスを実行するためには、必ずルックアップ・アクセス権を持っていなければならないからです。特に、ユーザーが、ディレクトリーのサブディレクトリー内にアクセスするには、サブディレクトリー上の ACLが拡張アクセス権を許可したとしても、このルックアップ・アクセス権が必要です。

  このアクセス権によって、ユーザーは以下のコマンドを発行できます。

  - ls コマンド。ディレクトリー内のファイル名およびサブディレクトリー名をリストします。
  - ls -ld コマンド。ディレクトリー要素自体の完全な状況情報を入手します。
  - fs listacl コマンド。ディレクトリーの ACL を調べます。

  このアクセス権では、ユーザーはディレクトリー内のファイルの内容を読み取ったり、ディレクトリー内のファイルに対して ls -l コマンドを発行したり、ファイル名を -path 引き数にして fs listacl コマンドを発行することはできません。これらのオペレーションには、3 つのファイル・サーバー・アクセス権 で説明する r (読み取り) アクセス権が必要です。

  同様に、このアクセス権は、ユーザーが、ディレクトリーのサブディレクトリーに対してls、ls -l、ls -ld、または fs listacl コマンドを発行することを許可しません。これらのオペレーションには、サブディレクトリーそのものの ACL 上での l アクセス権が必要です。

i (挿入) アクセス権
  このアクセス権は、ユーザーが、作成またはコピーすることによって、ディレクトリーに新規ファイルを追加することや、新規サブディレクトリーを作成することを許可します。この権限は、独自の ACL によって保護されているサブディレクトリーには拡張されません。

d (削除) アクセス権
  このアクセス権は、ユーザーがファイルやサブディレクトリーをディレクトリーから削除することや、それらを別のディレクトリー (ユーザーが挿入権を持っているディレクトリー) に移動することを許可します。

a (管理) アクセス権
  このアクセス権によって、ユーザーはディレクトリーの ACL 変更できます。 system:administrators グループのメンバーは、すべてのディレクトリーに対する (すなわち、グループが ACL 上に表示されない場合でも) このアクセス権を暗黙的に持っています。同様に、ディレクトリーの所有者には、そのディレクトリーとその下にあるすべての所有しているディレクトリーの ACL で、この許可が暗黙的に設定されています。

#### 3 つのファイル・サーバー・アクセス権

このグループの 4 つの権限はディレクトリーそのものに適用される場合に有効です。

r (読み取り) アクセス権
  このアクセス権は、ユーザーがディレクトリーにあるファイルの内容を読み取ることや、ls -l コマンドを発行してそのファイルの要素を指定することを許可します。

w (書き込み) アクセス権
  このアクセス権は、ユーザーがディレクトリー内のファイルの内容を変更することや、UNIX モード・ビットを chmod を使用して変更することを許可します。

k (ロック) アクセス権
  このアクセス権は、ユーザーがシステム・コールを発行するするプログラムを実行してディレクトリー内ファイルをロックすることを許可します。

#### 8 つの補助アクセス権

AFS では、意味が定義されていない、上段シフト文字 A、B、C、 D、E、F、 G、Hの 8 つの追加アクセス権を使用できます。

1 つまたは複数のアクセス権への割り当てを意味するアプリケーション・プログラムを作成して、それを ACL 上に配置し、これらのプログラムによってファイル・アクセスを制御することができます。たとえば、印刷プログラムを変更してアクセス権を認識および解釈し、そのプログラムがアクセスするファイルを収容するディレクトリーにそのプログラムを配置できます。fs listacl fs setacl コマンドを使用して、標準の 7 つのアクセス権のように ACL に補助アクセス権を設定し、表示します。

#### アクセス権の組に対する省略表現

7 つのアクセス権は、ACL 項目内で任意の方法で組み合わせることができます。しかし、組み合わせ方によってかなり便利になります。特に共通の 4 つの組み合わせには、対応する省略形があります。 fs setaclコマンドを使用して ACL 項目を定義する場合、権限を表す 1 つまたは複数の個々の文字を指定するか、または下記の省略形形式の 1 つを指定することができます。

all
  7 つの標準アクセス権すべてを表します (rlidwka)。

none
  ACL から項目を削除します。ユーザーやグループにはアクセス権を何も残しません。

read
  r (読み取り) および l (ルックアップ) アクセス権を表します。

write
  a (管理): rlidwk を除くすべてのアクセス権を表します。

### 通常および禁止アクセス権の使用方法

ACL は、ディレクトリーおよびその中のファイルへのアクセスを許可および禁止することができます。アクセスを許可するには、ACL 項目の設定 で説明するように、fs setacl コマンドを使用して、アクセス権のセットをユーザーまたはグループに関連付ける ACL 項目を作成します。fs listacl コマンドを使用して ACL を表示すると (ACL の表示で説明するように) 、以下のヘッダーの下に項目が表示されます。rights という用語はアクセス権を表します。

       Normal rights

アクセスを禁止する方法は 2 つあります。

1. 単にユーザーまたはグループに対する項目を ACL から削除するか、項目から適切なアクセス権を削除する方法をお勧めします。ACL 通常アクセス権を追加、削除、または編集するには の説明に従って、fs setacl コマンドを使用して、既存の項目を削除または編集します。ほとんどの場合、特定の種類または特定のユーザーのアクセスを防ぐには、この方法で十分です。ただし、不必要なアクセス権を、そのようなユーザーが属する任意のグループに許可しないように注意が必要です。
2. アクセス権をもっと明示的に禁止する方法では、-negative フラグを fs setacl コマンドで使用して、ユーザーまたはグループに 禁止アクセス権 を関連付ける項目を作成します。説明については、ACL 禁止アクセス権を追加、削除、または編集するには を参照してください。 fs listacl コマンドを使用して作成した出力には、以下のヘッダーの下に禁止項目がリストされます。

          Negative rights

   どのタイプのアクセスをユーザーに許可するか決定すると、ファイル・サーバーは、まず ACL の `Normal rights` 機能グループのすべての項目を調べて、アクセス権のセットをコンパイルします。それから、ACL の `Negative rights` 機能グループ上にそのユーザー (またはユーザーが属しているグループ)に関連するすべてのアクセス権を抽出します。したがって、禁止アクセス権は、常に通常アクセス権を取り消します。

   禁止アクセス権を使用すると、fs setacl コマンドの通常の意味が逆転し、これは潜在的に混乱を生じる可能性があります。特に、none 省略表記と -negative フラグを一緒に使用すると、二重否定になります。 ACL の `Negative rights` 機能グループから項目を削除することにより、 `Normal rights` 機能グループの項目を介して、ユーザーがもう一度アクセス権を取得できるようになります。all 省略表記と -negative フラグと一緒に使用すると、すべてのアクセス権を明示的に禁止します。

   `Normal rights` 機能グループの項目が、禁止されているアクセス権を system:anyuser グループに対して許可した場合、`Negative rights` 機能グループに項目を作成するのは、無意味であることに注意してください。この場合、ユーザーは、単に unlog コマンドを使用してユーザーの持つトークンを廃棄することにより、アクセスを取得することができます。ユーザーがこれを行うと、ファイル・サーバーは、ユーザーを anonymous ユーザーとして認識します。anonymous ユーザーは、 system:anyuser グループに属していますが、ACL の `Negative rights` 機能グループの項目と一致しません。

### ACL 上でのグループの使用

前述したように、グループ項目を ACL に配置すると、一度に多数のユーザーにアクセスするのを制御することができます。新規ユーザーを、関連する ACL 上に表示されるグループに追加するだけで、そのユーザーに多数のファイルおよびディレクトリーへのアクセスを許可することができます。また、マシンのグループを作成することもできます。その場合は、マシンにログオンする任意のユーザーは、そのグループに許可されたアクセスを取得するようにできます。 ACL の a アクセス権を持つディレクトリー上では、ユーザーは独自のグループを定義したり、ユーザー自身が作成したグループや所有するグループだけでなく、任意のグループに対する ACL 項目を作成することができます。ユーザーまたはマシンのグループの作成についての説明、および異なるタイプのグループを使用する最も効果的な方法についての説明は、保護データベースの管理 を参照してください。

AFS は、以下の 2 つのシステム・グループも定義します。このグループは、大きなユーザー・グループを潜在的に表すため、ACL 上で非常に便利です。これらのグループについての詳細は、 システム・グループ を参照してください。

system:anyuser
  セルのファイル・ツリーにアクセスできるユーザー、ローカル・スーパーユーザー root としてログインし、セル以外の場所からローカル・マシンに接続したユーザー、および外部セルに属する AFS ユーザーが組み込まれます。このグループには、ローカル AFS サーバーに対して有効なトークンを持たないユーザーが組み込まれています。サーバーは、このグループを anonymous として認識します。

  このグループに対してローカル認証アカウントを作成しない限り、このグループに ACL項目を作成することが、外部セルから AFS ユーザーへのアクセスを可能にする唯一の方法であることに注意してください。

system:authuser
  ローカル・セルの認証サービスから取得した有効な AFS トークンを持つすべてのユーザーが組み込まれます。

特に、l (ルックアップ) 権をファイル・システム内にある大部分のディレクトリーの ACL 上の system:anyuser に付与するのに有用です。このアクセス権によって、ディレクトリー内のファイルとサブディレクトリーの名前がないとターゲット・ファイルへのパス内のディレクトリーと交信できないユーザーが、その名前を知ることができます。

少し制限的になりますが、代わりに l権を system:authuser グループに付与する方法があります。それでも制限がある場合、 l アクセス権を特定のユーザーまたはグループに付与できますが、1 つの指定された ACL 上の数が 約 20 を超えることはできません。

system:anyuser グループに特定のアクセス権を許可するもう 1つの理由は、印刷やメール送達などのサービスを提供するプロセスの正しいオペレーションが可能になることです。たとえば、l 権に加えて、印刷プロセスは、ファイルの内容を印刷するには r (読み取り) 権が必要です。また、メール送達プロセスは、新規メールを送達するために i (挿入) 権が必要です。

すべての新規に作成されたボリュームのルート・ディレクトリー上の ACL は、 system:administrators グループにすべてのアクセス権を許可します。この記入項目を削除したい場合は削除できますが、 system:administrators グループのメンバーは、すべてのディレクトリーの ACL で、暗黙的に常に a (管理) アクセス権を所有し、また、デフォルトで l アクセス権も所有しています。 a アクセス権を使用すると、他の必要なアクセス権を、自分自身に明示的に付与することができます。この権限のデフォルト設定の変更については、 system:administrators グループの管理 を参照してください。

## ACL の表示

ファイル、ディレクトリー、またはシンボリック・リンクに関連する ACL を表示するには、 fs listacl コマンドを発行します。シンボリック・リンクの出力は、そのシンボリック・リンクがあるディレクトリーの ACL ではなく、ターゲット・ファイルまたはディレクトリーに適用される ACL を表示します。

AFS/DFS 移行ツールキット・ユーザーへの注意:ユーザーが fs listacl コマンドを発行するマシンが、AFS/DFS 移行ツールキット経由で DCE セルの DFS ファイル・スペースにアクセスできるように構成されている場合は、このコマンドを使用して、DFS ファイルおよびディレクトリー上の ACL を表示できます。通常の ACL ではなく、DFS ディレクトリーの初期コンテナーおよび初期オブジェクト ACL を表示する場合、 fs listacl コマンドの -id または -if フラグを組み込みます。説明については、AFS/DFS Migration Toolkit Administration Guide and Reference を参照してください。 fs コマンド・インタープリターでは、AFS ACL を表示するときに組み込まれていても、-id および -if フラグは無視されます。

### ACL を表示するには

1. fs listacl コマンドを発行します。

          % fs listacl [<dir/file path>+]

   ここで、

   la
     は、listacl の受け入れ可能な別名です (lista は受け入れ可能な最も短い省略形です)。

   dir/file path
     ACL に表示する 1 つまたは複数のファイルやディレクトリーを指定します。ファイルの場合、そのファイルのディレクトリーの ACL が出力されます。この引き数を省略すると、現行作業ディレクトリーが出力されます。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。パス名自体またはパス名の一部として、以下の表記を使用することもできます。

     .
       (1 つのピリオド)。現行作業ディレクトリーを指定します。

     ..
       (2 つのピリオド)。現行作業ディレクトリーの親ディレクトリーを指定します。

     *
       (アスタリスク)。現行作業ディレクトリー内の各ファイルおよびサブディレクトリーを指定します。ファイルに対して表示される ACL は、常にそのディレクトリーに表示される ACL と同一ですが、各サブディレクトリーの ACL は異なることがあります。

以下のエラー・メッセージは、ユーザーには、ACL を表示するために必要なアクセス権がないことを示しています。ディレクトリー名を dir/file path 引き数として指定するには、その ACL 上に l (ルックアップ) アクセス権がなくてはなりません。ファイル名を指定するには、ディレクトリーの ACL 上に r (読み取り) アクセス権がなくてはなりません。

       fs: You don't have the required access permissions on 'dir/file path'

system:administrators グループのメンバー、およびそのディレクトリーの所有者 (ls -ld コマンドによってレポートされている) は、すべてのディレクトリーの ACL 上に a (管理) アクセス権を暗黙的に持ち、 fs setacl コマンドを使用して、自分に必要なアクセス権を付与することができます。説明については、ACL 項目の設定 を参照してください。

dir/file path として指定される各ファイルまたはディレクトリーの出力は、識別するため、以下のヘッダーで始まります。

       Access list for  dir/file path is

`Normal rights` ヘッダーが次の行に表示されます。その後、各行にユーザーまたはグループ名、アクセス権のセットの対が表示されます。権限は、AFS ACL アクセス権で定義された単一文字として、かならず rlidwkaの順序で表示されます。禁止アクセス権が含まれる場合は、 `Negative rights` ヘッダーが次に表示され、その後、禁止アクセス権の対が表示されます。

以下の例は、Example Corporation セルにおける、ユーザー terryのホーム・ディレクトリーの ACL が表示されます。

       % fs la /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
          system:authuser rl
          pat rlw
         terry rlidwka
       Negative permissions:
          terry:other-dept rl
          jones rl

ここでの pat、terry、および jones は、個々のユーザーです。system:authuser は、システム定義グループです。そして terry:other-dept は、terry が所有するグループです。通常アクセス権のリストでは、すべてのアクセス権を terry に許可し、 pat には、r (読み取り)、l (ルックアップ)、 w (書き込み) アクセス権を、そして system:authuser グループのメンバーには、 r および l アクセス権を許可します。

禁止アクセス権リストでは、jones およびterry:other-dept グループのメンバーに対し、 r および l アクセス権を禁止しています。これらの項目は、どのような方法にせよ terry のホーム・ディレクトリーへのアクセスを効果的に防止します。なぜなら、ユーザーは、自分たちに適用される可能性のある ACL の `Normal rights` 機能グループの唯一の項目である system:authuser グループに拡張されている r および l アクセス権を取り消されているからです。

## ACL 項目の設定

ACL 項目を追加、削除、または編集するには、fs setacl コマンドを使用します。デフォルトでは、このコマンドは、ACL の通常アクセス権機能グループの項目を操作します。禁止アクセス権機能グループの項目を操作するには、-negative フラグを組み込みます。

ACL を編集するには、ACL 上に a (管理) アクセス権がなくてはなりません。ディレクトリーの所有者、およびsystem:administrators グループのメンバー ( ls -ld コマンドによってレポートされる) は、暗黙的にこのアクセス権をすべての ACL 上に持っています。 system:administrators グループのデフォルトのメンバーは、暗黙的に l (ルックアップ) アクセス権を持っています。

AFS/DFS 移行ツールキット・ユーザーへの注意:ユーザーが fs setacl コマンドを発行するマシンが、AFS/DFS 移行ツールキット経由で DCE セルの DFS ファイル・スペースにアクセスできるように構成されている場合は、このコマンドを使用して、DFS ファイルおよびディレクトリー上の ACL を設定できます。通常の ACL ではなく、DFS ディレクトリーの初期コンテナーおよび初期オブジェクト ACL を設定する場合、 fs setacl コマンドの -id または -if フラグを組み込みます。説明については、AFS/DFS Migration Toolkit Administration Guide and Reference を参照してください。 fs コマンド・インタープリターでは、AFS ACL の設定時に組み込まれていても、-id および -if フラグは無視されます。

### ACL 通常アクセス権を追加、削除、または編集するには

1. ACL を編集する各ディレクトリーに a (管理) 権があることを確認します。必要に応じて、fs listacl コマンドを発行します。これについては、 ACL の表示 で詳しく説明しています。

          % fs listacl [<dir/file path>]

2. 必要に応じて、fs setacl コマンドを発行して、ACL の通常アクセス権機能グループの項目を編集します。項目を削除するには、アクセス権として、 none 省略表記を指定します。ACL 項目がすでにある場合は、指定した許可が、既存の項目の許可と完全に置き換えられます。

          % fs setacl -dir <directory>+ -acl <access list entries>+

   ここで、

   sa
     は、setacl の受け入れ可能な別名です (seta は受け入れ可能な最も短い省略形です)。

   -dir
     -acl 引き数によって定義された ACL 項目に適用する、1つまたは服すのディレクトリーを指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。

     各ディレクトリーに読み取り / 書き込みパスを指定して、読み取り専用ボリュームを変更しようとするときに障害が発生するのを防ぎます。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて、読み取り / 書き込みパスを指定します (たとえば、 /afs/.example.com)。ファイル・スペースの読み取り / 書き込みパス、および読み取り専用パスの概念についての詳細は、 マウント・ポイント横断の規則 を参照してください。

     パス名自体またはパス名の一部として、以下の表記を使用することもできます。

     .
       (1 つのピリオド)。単独で使用すると、現行作業ディレクトリーを設定します。

     ..
       (2 つのピリオド)。単独で使用すると、現行作業ディレクトリーの親ディレクトリーを設定します。

     *
       (アスタリスク)。現行作業ディレクトリー内の各サブディレクトリーに ACL を設定します。アスタリスクの前に、複数のディレクトリーの可能性を示すため、-dir スイッチを付ける必要があります。fs コマンド・インタープリターにより、ディレクトリーの各ファイルごとに以下のエラー・メッセージが生成されます。

              fs: 'filename': Not a directory

     1 つのディレクトリーまたはファイルのみを指定する場合は、 -dir スイッチと -acl スイッチを省略しても構いません。

   -acl
     1 つまたは複数の ACL 項目を指定します。各項目は、ユーザーまたはグループ名、アクセス権のセットが対になっています。1 つまたは複数のスペースを入れて、対を分離し、各対を 2 つの部分にします。

     アクセス権を定義するには、次のいずれかを指定します。

     - 任意の順序の、標準または補助アクセス権を表す 1 つまたは複数の文字 (rlidwka および ABCDEFGH)。
     - 4 つの省略表記の 1 つ。
       - all (すなわち、rlidwka)
       - none (項目を削除)
       - read (すなわち、rl)
       - write (すなわち、rlidwk)

     アクセス権および省略表現の詳細については、 AFS ACL アクセス権 を参照してください。

     1 つのコマンド行に、ユーザーやグループの項目をいくつもつなげることができます。また、一部の対には個々の文字を使用し、それ以外の対には省略表現を使用することもできますが、 1 つの対の中で文字と省略表現を組み合わせて使用することはできません。

以下の例のいずれも、ユーザー pat に、発行者のホーム・ディレクトリーのnotes サブディレクトリーの ACL 上での r (読み取り) および l (ルックアップ) アクセス権を許可します。この例は、 1 つのディレクトリーだけを指定した場合に、-dir および -aclスイッチを省略する方法を示しています。

       % fs sa ~/notes pat rl

       % fs sa ~/notes pat read

以下の例では、現行作業ディレクトリーに対する ACL を編集しています。この例では、system:anyuser グループの項目を削除し、2 つの項目を追加しています。すべてのアクセス権を新規ユーザーに許可し、1 つの項目は、a (管理) 以外のすべてのアクセス権を terry:colleagues グループのメンバーに付与し、もう 1 つの項目では、r (読み取り) および l (ルックアップ) アクセス権を system:authuser グループに付与します。コマンドがここで 2 行に表示されているのは、ただ見やすくするためです。

       % fs  sa  -dir . -acl  system:anyuser  none  terry:colleagues  write  \
               system:authuser  rl

### ACL 禁止アクセス権を追加、削除、または編集するには

1. ACL を編集する各ディレクトリーに a (管理) 権があることを確認します。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

          % fs listacl [<dir/file path>]

2. -negative フラグを組み込んで fs setacl コマンドを発行して、ACL の禁止アクセス権機能グループの項目を編集します。項目を削除するには、アクセス権として、 none 省略表記を指定します。ACL 項目がユーザーまたはグループに既にある場合は、アクション権を指定すると、既存の項目と完全に置換されます。

          % fs setacl -dir <directory>+ -acl <access list entries>+  -negative

   ここで、

   sa
     は、setacl の受け入れ可能な別名です (seta は受け入れ可能な最も短い省略形です)。

   -dir
     -acl 引き数によって定義された ACL 禁止項目に適用する、1 つまたは複数のディレクトリーを指定します。各ディレクトリーに読み取り / 書き込みパスを指定して、読み取り専用ボリュームを変更しようとするときに障害が発生するのを防ぎます。受け入れ可能な値の詳細については、 ACL 通常アクセス権を追加、削除、または編集するには を参照してください。

   -acl
     1 つまたは複数の ACL 項目を指定します。各項目は、ユーザーまたはグループ名、アクセス権のセットが対になっています。1 つまたは複数のスペースを入れて、対を分離し、各対を 2 つの部分にします。受け入れ可能な値の詳細については、 ACL 通常アクセス権を追加、削除、または編集するには を参照してください。各アクセス権の通常の意味が保持されるように留意してください。

   -negative
     -acl 引き数によって定義した項目を、ACL の禁止アクセス権機能グループに -dir 引き数によって指定した各ディレクトリーに配置します。

以下の例では、ユーザー pat に、現行作業ディレクトリーの project サブディレクトリーに対する、w (書き込み) および d (削除) アクセス権を禁止しています。

       % fs sa project pat wd -neg

## ACL を完全に置換する

たとえば、通常アクセス権と禁止アクセス権が混在するためにユーザーのディレクトリーへのアクセスにそれらの相互作用がどう影響するか理解することが困難な場合などには、新しいアクセス権を定義する前に ACL を完全に消去するのが最も簡単な方法である場合があります。新規項目を定義するときに ACL を完全に消去するには、 -clear フラグを fs setacl コマンドに組み込みます。このフラグを組み込むと、ACL の通常アクセス権または禁止アクセス権のいずれかの機能グループに項目を作成できますが、両方の機能グループに一度に作成することはできません。

ディレクトリーの所有者に適切なアクセス権を付与する項目を作成することを忘れないでください。所有者は、削除した項目を置換するために必要な a (管理) アクセス権を暗黙的に持っていますが、欠落した ACL 項目 (特に ルックアップ権の欠如) の影響により、所有者が混乱するので、項目の欠落が問題となることを認識するのが困難になります。

### ACL を完全に置換する

1. ACL を編集する各ディレクトリーに a (管理) 権があることを確認します。必要に応じて、fs listacl コマンドを発行します。これについては、 ACL の表示 で詳しく説明しています。

          % fs listacl [<dir/file path>]

2. fs setacl コマンドに -clear フラグを組み込んで発行し、通常アクセス権または禁止アクセス権を設定する前に、ACL を完全に消去します。ディレクトリーの所有者にはすべての権限を付与することが必要なので、この時点では normal permissions を設定することが多くの場合最適です。

          % fs setacl -dir <directory>+ -acl <access list entries>+ -clear  \
                      [-negative]

   ここで、

   sa
     は、setacl の受け入れ可能な別名です (seta は受け入れ可能な最も短い省略形です)。

   -dir
     -acl 引き数によって定義された ACL 禁止項目に適用する、1 つまたは服すのディレクトリーを指定します。各ディレクトリーに読み取り / 書き込みパスを指定して、読み取り専用ボリュームを変更しようとするときに障害が発生するのを防ぎます。受け入れ可能な値の詳細については、 ACL 通常アクセス権を追加、削除、または編集するにはを参照してください。

   -acl
     1 つまたは複数の ACL 項目を指定します。各項目は、ユーザーまたはグループ名、アクセス権のセットが対になっています。1 つまたは複数のスペースを入れて、対を分離し、各対を 2 つの部分にします。ディレクトリーの所有者にすべてのアクセス権を付与することを忘れないでください。受け入れ可能な値の詳細については、 ACL 通常アクセス権を追加、削除、または編集するには を参照してください。

   -clear
     -acl 引き数で指定した項目を作成する前に、各 ACL からすべての項目を削除します。

   -negative
     -acl 引き数によって定義した項目を、ACL の禁止アクセス権機能グループに配置します。

## ディレクトリー間で ACL をコピー

fs copyacl コマンドは、送信元ディレクトリーの ACL を 1 つ以上のあて先ディレクトリーにコピーします。その場合、送信元 ACL は全く影響を受けません。しかし、各あて先 ACL は次のように変更します。

- 送信元 ACL 上の項目が、まだあて先 ACL 上に存在していない場合、このコマンドはそれをあて先 ACL にコピーします。
- あて先 ACL 上の項目が送信元 ACL 上に存在しない場合も、 -clear フラグを組み込んで、あて先 ACL を完全に上書きしないかぎり、このコマンドによってあて先 ACL の項目が削除されることはありません。
- 項目が両用の ACL 上に存在する場合、このコマンドはあて先 ACL 項目上のアクセス権を変更し、送信元 ACL の項目に一致させます。

AFS/DFS 移行ツールキット・ユーザーへの注意:ユーザーが AFS/DFS 移行ツールキット経由で DCE セルの DFS ファイル・スペースにアクセスできるようにマシンが構成されている場合は、 fs copyacl コマンドを使用して、DFS ファイルおよびディレクトリー上に ACL リストをコピーすることもできます。コマンドには、-id および -if フラグが組み込まれているので、正規の ACL だけでなく、DFS ディレクトリーの初期コンテナーおよび初期オブジェクトを更新できます。AFS/DFS Migration Toolkit Administration Guide and Reference を参照してください。AFS ディレクトリーおよび DFS ディレクトリー間では ACL はコピーできません。使用している ACL 形式が異なるからです。 fs コマンド・インタープリターでは、AFS ACL のコピー時に組み込まれていても、-id および -if フラグは無視されます。

### ディレクトリー間で ACL をコピーする

1. l (ルックアップ) アクセス権が送信元 ACL に存在し、a (管理) アクセス権がそれぞれのあて先 ACL 上に存在することを確認します。ファイル名を指定して送信元ディレクトリーを識別するには、送信元の ACL 上に r (読み取り) アクセス権も持っていなくてはなりません。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

          % fs listacl [<dir/file path>]

2. fs copyacl コマンドを発行して、送信元 ACL を 1 つ以上のあて先 ディレクトリーの ACL にコピーします。(コマンドは、ただ見やすくするために 2 行に表示されています)。

          % fs copyacl -fromdir <source directory>
                       -todir <destination directory>+  \
                       [-clear]

   ここで、

   co
     は、copyacl の最も短い受け入れ可能な省略形です。

   -fromdir
     ACL をコピーする送信元ディレクトリーの名前を指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。この引き数がファイルを指定している場合、そのディレクトリーから ACL がコピーされます。

   -todir
     送信元 ACL をコピーする各あて先ディレクトリーの名前を指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。ファイル名は受け入れ不可です。

     各ディレクトリーに読み取り / 書き込みパスを指定して、読み取り専用ボリュームを変更しようとするときに障害が発生するのを防ぎます。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて、読み取り / 書き込みパスを指定します (たとえば、 /afs/.example.com)。ファイル・スペースの読み取り / 書き込みパス、および読み取り専用パスの概念についての詳細は、 マウント・ポイント横断の規則 を参照してください。

   -clear
     それぞれのあて先ディレクトリーの ACL を送信元 ACL で上書きします。

以下の例では、ACL を、現行作業ディレクトリーの notes サブディレクトリーから plans サブディレクトリーにコピーしています。発行者が -clear フラグを組み込まないので、notes ディレクトリーの ACL 上に対応する項目はありませんが、ユーザー pat の項目は plans ディレクトリーの ACL 上に残しておきます。

       % fs la notes plans
       Access list for notes is
       Normal permissions:
         terry rlidwka
          smith rl
          jones rl
       Access list for plans is
       Normal permissions:
          terry rlidwk
          pat rlidwk
       % fs copyacl notes plans
       % fs la notes plans
       Access list for notes is
       Normal permissions:
          terry rlidwka
          smith rl
          jones rl
       Access list for plans is
       Normal permissions:
          terry rlidwka
          pat rlidwk
          smith rl
          jones rl

## 古くなった AFS ID を ACL から除去する

保護データベースからユーザーまたはグループの項目を削除しようとすると、fs listacl コマンドにより、名前ではなく ACL 項目のユーザーの AFS UID (またはグループの AFS GID) が表示されます。次の例では、ユーザー terry が、グループ terry:friends (AFS GID -567) の ACL 項目を、 Example Corporation セル内の自分のホーム・ディレクトリーに持っていて、そのグループを保護データベースから除去します。

       % fs listacl /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
         terry:friends rlik
         system:anyuser l
         terry rlidwka
       % pts delete terry:friends
       % fs listacl /afs/example.com/usr/terry
       Access list for /afs/example.com/usr/terry is
       Normal permissions:
         -567 rlik
         system:anyuser l
         terry rlidwka

AFS ID を ACL に残しても何も機能しません。その ID がもうアクティブ・ユーザーまたはグループに対応していないからです。さらに、ID が新規ユーザーまたはグループに割り当てられた場合、ID の新規所有者はディレクトリーの所有者が実際に前の所有者に対して設定したアクセスを使用します(このような理由から、AFS ID の再利用は、明確にお勧めしません)。

使用されなくなった AFS ID を ACL から削除するには、fs cleanacl コマンドを使用します。

### ACL から古くなった AFS ID を消去する

1. ACL を消去する各ディレクトリーに a (管理) アクセス権があることを確認します。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

          % fs listacl [<dir/file path>]

2. 古くなった AFS ID から項目を削除するには、fs cleanaclコマンドを発行します。

          % fs cleanacl [<dir/file path>+]

   ここで、

   cl
     は、cleanacl の最も短い受け入れ可能な省略形です。

   dir/file path
     ACL を消去する各ディレクトリーを指定します。この引き数がファイルを指定している場合、そのディレクトリーの ACL が消去されます。この引き数を省略すると、現行作業ディレクトリーの ACL が消去されます。

     各ディレクトリーに読み取り / 書き込みパスを指定して、読み取り専用ボリュームを変更しようとするときに障害が発生するのを防ぎます。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて、読み取り / 書き込みパスを指定します (たとえば、 /afs/.example.com)。ファイル・スペースの読み取り / 書き込みパス、および読み取り専用パスの概念についての詳細は、 マウント・ポイント横断の規則 を参照してください。

     パス名自体またはパス名の一部として、以下の表記を使用することもできます。

     .
       (1 つのピリオド)。単独で使用すると、現行作業ディレクトリーが消去されます。

     ..
       (2 つのピリオド)。単独で使用すると、現行作業ディレクトリーの親ディレクトリーが消去されます。

     *
       (アスタリスク)。現行作業ディレクトリー内の各サブディレクトリーの ACL を消去します。ただし、任意のディレクトリーの ACL に古い AFS IDがある場合にアスタリスクを使用すると、そのディレクトリー内のすべてのファイルに対して、次のメッセージが表示されます。

              fs: 'filename': Not a directory

ディレクトリーに、古くなった AFS ID があると、コマンド・インタープリターにより、以下のヘッダーの下に消去された ACL が表示されます。

       Access list for directory is now

ディレクトリーの ACL に古くなった AFS ID がない場合、以下のメッセージがそのつど表示されます。

       Access list for directory is fine.

## AFS が UNIX モード・ビットを解釈する方法

AFS は、UFS が使用するモード・ビットではなく、ACL を使用してファイル・データを保護しますが、モード・ビットを完全に無視しているわけではありません。 chmod コマンドを AFS ファイルまたはディレクトリーに対して発行すると、AFS は、ビットを適切に変更します。ファイルのモード・ビットを変更するためには、ファイルのディレクトリーの ACL 上に AFS の w (書き込み) 権が必要です。ディレクトリーのモード・ビットを作成するには、ACL 上に、 d (削除)、 i (挿入)、および l (ルックアップ) アクセス権がなければなりません。

また、AFS は、UNIX モード・ビットを以下のように使用します。

- AFS は、初期ビットを使用して、要素のタイプを指定します。ls -l コマンドによる出力では、このビットが最初に表示され、ハイフン (-) がファイルを示し、 d という文字がディレクトリーを示します。
- ディレクトリー上のモード・ビットはいずれも使用されません。
- ファイルの場合、ビットの最初の (所有者) セットは、以下の方法で、ファイルに適用される ACL 項目と相互作用します。
  - 最初の r モード・ビットが設定されていない場合は、ACL 上にどんなアクセス権を持っていようとも、だれも (所有者も含め) そのファイルを読み取ることはできません。ビットが設定されている場合、ユーザーは、ファイルを読み取るために、ファイルのディレクトリーの ACL 上での r (読み取り) および l アクセス権も必要です
  - 最初の w モード・ビットが設定されていない場合は、だれも (所有者も含め) そのファイルを読み取ることはできません。 wビットが設定されている場合、ユーザーは、ファイルを変更するために、ファイルのディレクトリーの ACL 上での w および l アクセス権も必要です
  - x モード・ビットに直接対応する ACL アクセス権はありませんが、 AFS に保管されているファイルを実行するために、ユーザーは、ファイルのディレクトリーの ACL 上での r および l アクセス権も必要です。

[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]

(C) IBM Corporation 2000. All Rights Reserved