管理の手引き


アクセス制御リスト (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 点で異なります。

AFS ACL アクセス権

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

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

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

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

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

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

同様に、このアクセス権は、ユーザーが、ディレクトリーのサブディレクトリーに対してlsls -lls -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 では、意味が定義されていない、上段シフト文字 ABCDEFGHの 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 ヘッダーが次に表示され、その後、禁止アクセス権の対が表示されます。

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

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

ここでの patterry、および 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/.abc.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 は次のように変更します。

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/.abc.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 項目を、 ABC Corporation セル内の自分のホーム・ディレクトリーに持っていて、そのグループを保護データベースから除去します。

   % fs listacl /afs/abc.com/usr/terry
   Access list for /afs/abc.com/usr/terry is
   Normal permissions:
     terry:friends rlik
     system:anyuser l
     terry rlidwka
   % pts delete terry:friends
   % fs listacl /afs/abc.com/usr/terry
   Access list for /afs/abc.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/.abc.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 モード・ビットを以下のように使用します。


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



(C) IBM Corporation 2000. All Rights Reserved