# 管理の手引き

# uss コマンド組によるユーザー・アカウントの作成と削除

uss コマンド組を使用すると、 AFS ユーザー・アカウントの作成と削除を迅速かつ容易に行うことができます。単一アカウントの作成は、uss add コマンドを使って、単一アカウントの削除は、 uss delete コマンドを使って、また、複数アカウントの作成と削除は、 uss bulk コマンドを使って実行できます。

単一の uss add コマンドまたは uss bulk コマンドが、完全な AFS ユーザー・アカウントを作成できます。その理由は、 uss コマンド・インタープリターは、ユーザーが多くのアカウント・コンポーネントの構成を事前定義するテンプレート・ファイルを参照するからです。uss delete コマンドは、ユーザー・アカウントの多くのアカウント・コンポーネントを削除しますが、テンプレート・ファイルを使用しません。

また、uss 組は、ユーザーのサイトに固有のアカウントの作成と削除の一部を実行するために、ユーザーが書き込むシェル・スクリプトまたはほかのプログラムを容易に取り込みます。uss コマンドの実行と同時にスクリプトまたはプログラムを自動的に起動するには、テンプレート・ファイルまたはバルク入力ファイルにある適切な命令を使用します。この章のさまざまな機能グループでは、スクリプトの可能な使用方法について説明します。

uss コマンドを使用すると必要なステップの多くが自動化され、正しい順序で行われるので、このメソッドを使用してアカウントを作成および削除することをお勧めします。あるいは、一連の別のコマンドをさまざまな AFS サーバーに対して発行することによって、ユーザー・アカウントを作成できますが、ただしこの場合は uss コマンドを使用する場合よりもレコード保持に注意が必要です。説明については、ユーザー・アカウントの管理を参照してください。

## 命令の概要

この章では、指示されたコマンドを使用して次のタスクを行う方法について説明します。

単一ユーザー・アカウントを削除する | uss add
単一ユーザー・アカウントを削除する | uss delete
複数アカウントの追加と削除を行う | uss bulk

## uss コマンド組の概要

uss 組内のコマンドは、AFS ユーザー・アカウントの作成と削除を自動化するのに、以下のように役立ちます。

- uss add コマンドは、アカウントを１つずつ順次に作業して、アカウントのすべてのコンポーネントを作成する。このコマンドは、アカウント構成を定義するテンプレート・ファイルを参照します。
- uss delete コマンドは、アカウントを 1 つずつ作業して、アカウントの主要コンポーネントを削除する。このコマンドは、テンプレート・ファイルを使用しないので、追加のタスクを手動で実行する必要があります。
- uss bulk コマンドは、複数アカウントの作成と削除ができる。このコマンドは、バルク入力ファイルを参照します。バルク入力ファイルは、アカウントの作成と削除の命令をいくつでも、プロセスをさらに自動化するためのほかの命令と一緒に含むことができます。

### AFS ユーザー・アカウントのコンポーネント

AFS ユーザー・アカウントは、多くのコンポーネントを持つことができます。必須のコンポーネントは 2 つだけであり、保護データベースおよび認証データベースの項目です。ほかのコンポーネントは、以下の機能性と使用可能度を追加します。次の情報は、対応のセクション ユーザー・アカウントの管理 にも掲載されていますが、読者の便宜のためにここでも説明します。

- ユーザー名 (AFS により認証されるときに使用する名前) を定義し、その名前を、AFS サーバーがユーザーを参照するときに内部的に使用する番号であるユーザーの AFS ユーザー ID (AFS UID) にマップする 保護データベース項目。また、保護データベースは、ユーザーが所属するグループも追跡します。詳細については、保護データベースの管理 を参照してください。
- 暗号キーとして使用するのに適したスクランブル形式でユーザーの AFS パスワードをレコードする、 認証データベース項目。
- ユーザーのホーム・ディレクトリー内のすべてのファイルを、ファイル・サーバー・マシンの単一パーティション上にまとめて保管するホーム・ボリューム。ボリュームには、そのサイズを制限する関連した割り当てがあります。ボリュームについての詳細は、ボリュームの管理 を参照してください。
- ユーザーのボリュームのコンテンツを AFS ファイル・スペース内で可視およびアクセス可能にし、ユーザーのホーム・ディレクトリーの役割を果たすマウント・ポイント。マウント・ポイントについての詳細は、ボリュームの取り付けについて を参照してください。
- ユーザーのファイル管理を可能にする、ホーム・ディレクトリーのアクセス制御リスト (ACL) およびディレクトリーの所有権 (UNIX の ls -ld コマンドによって表示されるように)。 AFS ファイル保護についての詳細は、 アクセス制御リスト (ACL) の管理を参照してください。
- ユーザーの、キャッシュを介した AFS ファイルにログインおよびアクセスを可能にする、各クライアント・マシンのローカル・パスワード・ファイル項目 (/etc/passwd ファイルまたは同等のファイルにある)。この章の後のセクションでは、ローカル・パスワード・ファイルの項目について、さらに詳しく説明します。
- アカウントの使用をより容易にする、ほかの構成ファイル。たとえば、ユーザーのログインとログアウトをもっと容易にしたり、電子メールの受信やプリントに役立つファイルなど。

### uss コマンドに対する特権要件

uss コマンドを正常に発行するには、標準の AFS 管理権がすべて必要です。すなわち、system:administrators グループ内のメンバーシップ、関係のあるすべてのサーバー・マシン上の /usr/afs/etc/UserList ファイルへの包含、および認証データベース項目上の `ADMIN` フラグです。管理権についての詳細は、 管理権限の管理を参照してください。

### 操作のエラーおよび中断の回避と回復

複雑なオペレーションの例に違わず、アカウントの作成と削除操作が完了前に停止するにはいくつかのあり得る原因があります。 uss コマンドを発行する前に以下の点を確認することにより、いくつかの一般的な原因を容易に回避することができます。

- uss コマンドに対する特権要件で説明するように、操作の完了に必要な管理権をすべて所有していることを確認します。 uss add、uss delete、およびuss bulk コマンドの使用方法の説明には、この確認もステップの 1 つとして含まれています。
- 構文の誤りがないか、有効な値を使用しているかについて、テンプレートおよびバルク入力ファイルを修正します。詳しくは、uss テンプレート・ファイルの作成 および バルク入力ファイルの組み立て を参照してください。
- ネットワーク、サーバー・マシン、またはサーバー・プロセスの障害に気付いている場合は、 uss コマンドを発行してはいけません。uss 操作は非常に多くの AFS コンポーネントに影響するので、障害があるときにこのコマンドは成功しそうにありません。

オペレーションが停止するエラーを回避する別の方法は、-dryrun フラグを、実際のコマンドで使用されるほかの引き数と組み合わせて、uss コマンドを事前表示することです。 uss コマンド・インタープリターは、実際にコマンドを実行せずにそのコマンドによって実行されるアクションを画面上でトレースします。

-dryrun フラグを使用すると、オペレーションを停止する可能性のある多くの基本的エラー、特にコマンド行、テンプレート・ファイル、またはバルク入力ファイルにおける構文の誤りによって起きるエラーが明らかになります。ただし、このフラグによって、すべての起こり得るエラーが捕そくできるわけではありません。コマンド・インタープリターは、追跡しているアクションを実際に実行しようとしているわけではないからです。たとえば、ボリューム・サーバーの障害は、 -dryrun フラグが組み込まれているときには、必ずしもボリューム作成ステップを停止する必要はありません。コマンド・インタープリターが実際にサーバーを接続していないからです。このような障害は、実際の作成オペレーションを停止するだけです。

uss コマンド・インタープリターが、オペレーションを停止させる原因とはならないエラー条件に遭遇すると、通常、文字列 `uss: Warning:` で始まるメッセージをプリントし、停止を避けるために取ろうとしているアクションを説明します。たとえば、ユーザーの保護データベース項目が既にある場合、以下のメッセージが標準出力ストリームに表示されます。

       uss: Warning: User 'user' already in the protection database
       The uid for user 'user' is AFS UID

`Warning` は、もっと重大なエラー・メッセージには表示されません。その代わり、重大なエラー・メッセージは、なぜコマンド・インタープリターが、要求されたアクションを実行できないのかという理由を説明します。これらのエラーのすべてが uss オペレーションを停止させる原因となるわけではありませんが、やはり、訂正アクションを必要とします。たとえば、親ディレクトリーの ACL 上で、必要なアクセス権を欠如している場合、あるいは、 V 命令の mount_point フィールド内のマウント・ポイント・パス名の形式が間違っている場合、マウント・ポイントを作成する試みは失敗します。けれども、このエラーは、その後、テンプレート内の命令が、サブディレクトリーまたはファイルを、存在していないマウント・ポイントの下でインストールしようとするまでは、作成オペレーションを停止させる原因にはなりません。

コマンド・シェル・プロンプトが、エラー・メッセージの後、直接に戻る場合は、一般的に、そのエラーは重大で、オペレーションを停止します。アカウントの作成中、または削除中にエラーにより停止した場合、回復するための最良の方法は、原因を見つけて修正し、その後、同じ uss コマンドを再発行します。

以下のリストでは、ユーザー・アカウントのコンポーネントが存在している場合に、アカウント作成コマンド (uss add コマンド、または、バルク入力ファイルに add 命令が含まれている場合は uss bulk コマンド) を再発行するとどうなるかについて説明しています。

- 保護データベース項目がすでに存在している場合、メッセージは、その存在を確認し、関連した AFS UID を指定する。
- 認証データベース項目がすでに存在している場合、メッセージがその存在を確認する。
- ボリュームおよび関連したボリューム・ロケーション・データベース (VLDB) 項目がすでに存在している場合、メッセージがそれらの存在を確認する。けれども、コマンドが最後に実行した以降に、テンプレート V 命令内の関係のあるフィールドのどれかに変更があった場合、 uss コマンド・インタープリターは、ボリュームの割り当て量、マウント・ポイント、または ACL を変更します。mount_point フィールドの値に変更があった場合、コマンド・インタープリターは、新規マウント・ポイントを作成しますが、既存マウント・ポイントを除去しません。
- テンプレート A 命令内のフィールドに変更があった場合、 uss コマンド・インタープリターは、コメントせずに変更する。
- テンプレート・ファイル内の D、E、 F、L、または S 命令によって定義されたディレクトリー、ファイル、またはリンクがすでに存在する場合、 uss コマンド・インタープリターは、既存の要素をテンプレート定義に準拠した要素と置き換える。ある要素を上書きするかどうかを確認するためのプロンプトを、 uss コマンド・インタープリターに出させるかどうかを制御するには、以下のように -overwrite フラグを uss add、または uss bulk コマンドに対して使用します。
  - -overwrite フラグを組み込むと、コマンド・インタープリターは、確認のための質問をせずに自動的にすべての要素を上書きする。
  - このフラグを省略すると、コマンド・インタープリターは、各アカウントごとにプロンプトを出して、そのアカウントに関連したすべての要素を上書きするかどうかを尋ねる。
- コマンド・インタープリターは常に、テンプレート・ファイル内の X 命令を再実行する。コマンドの結果がすでに保持されている場合、これを再発行することは、 uss コマンドのコンテキストの外側でそれを再発行するのと同じ効果を持ちます。

uss delete コマンドが、すでに削除されているアカウント・コンポーネントを参照するとどうなるかということを以下に説明します。

- ボリュームおよび VLDB 項目がもはや存在しない場合、メッセージがそれらの不在を確認する。
- 認証データベース項目がもはや存在しない場合、メッセージがその不在を確認する。

## uss によるローカル・パスワード・ファイル項目の作成

セルの AFS のファイル・スペースへの認証済みアクセスを入手するには、ユーザーは有効な AFS トークンを持っているだけではなく、AFS クライアント・マシンのローカル・パスワード・ファイル (/etc/passwd または同等のファイル) に項目を持っていなければなりません。この機能グループでは、ユーザーの AFS UID が、ローカル・パスワード・ファイルにリストされる UNIX UID と一致することが重要である理由、ファイルのパスワード・フィールドに指定する適切な値、および単一ソースのパスワード・ファイルを作成する方法の概要について説明します。

テンプレート・ファイルの E 命令を使用して、アカウント作成の一部としてローカル・パスワード・ファイルの項目を自動生成する方法については、共通送信元パスワード・ファイルの作成 を参照してください。

次の情報は、対応のセクション ユーザー・アカウントの管理 にも掲載されていますが、読者の便宜のためにここでも説明します。

### 一致する AFS と UNIX UID の割り当て

AFS ユーザー ID 番号 (AFS UID) と UNIX UID が一致する場合、ユーザー・アカウントは管理と使用が最も容易です。AFS 文書内のすべての命令は、2つの UID が一致することを前提としています。

AFS と UNIX の UID を同じにする最も基本的な理由は、UNIX の ls -l および ls -ld コマンドによって報告される所有者名が AFS のファイルやディレクトリーでも意味をなすようになることです。 UNIX の標準の慣習に従って、ファイル・サーバーは、AFS のファイルやディレクトリーの所有者フィールドの番号ではなくユーザー名、つまり、所有者の AFS UID を記録します。ls l コマンドを発行すると、ファイル・サーバーは AFS 保護データベースではなくローカル・パスワード・ファイルのマッピングに従って UID をユーザー名に変換します。 AFS と UNIX の UID が一致しない場合、ls -lコマンドは予期せぬ (正しくない) 所有者を報告します。ローカル・パスワード・ファイルが同じ UNIX UID を異なる名前にマップする場合は、異なるクライアント・マシン上では、出力が異なることがあります。

以下のようなさまざまなタイプのユーザーのアカウントを作成しているときには、指示された機能グループでの勧めに従って、AFS および UNIX UID を一致させてください。

- UNIX UID をすでに持っているユーザーに対して AFS アカウントを作成する場合は、機能グループ uss による既存の UNIX アカウントの変換 を参照する。
- セル内のユーザーが既存の UNIX アカウントを持っているけれども、 AFS アカウントを作成する対象のユーザーがまだ持っていない場合は、保護サーバーに AFS UID を自動的に割り当てさせるのが最良の方法である。AFS UID と既存の UNIX UID の重複を避けるには、 AFS UID および GID カウンターの表示および設定 の説明に従って、保護データベースの `max user id` カウンターを UNIX UID の最大値よりも高く設定する。
- 既存の UNIX アカウントを持つユーザーがいない場合は、保護サーバーがデフォルト値か設定した `max user id` カウンターから開始して自動的に AFS UID を割り振るのを許可する。

### ローカル・パスワード・ファイルにパスワードを指定

AFS 仕様に変更されたログイン・ユーティリティーのインストールと構成を行う場合は、 AFS による認証が最も簡単です。AFS は、ユーザーをローカル・ファイル・システムに記録することと、 AFS トークンを入手することを 1 つのステップで行います。この場合、ローカル・パスワード・ファイルは、もはや、ほとんどの状況下で、ユーザーのログインする能力を制御しません。なぜなら、 AFS 仕様に変更されたログイン・ユーティリティーは、ユーザーが正しい AFS パスワードを提示したかどうかについて、ローカル・パスワード・ファイルを調べないからです。しかし、それでも、パスワード・ファイル項目内のパスワード・フィールド (通常、 2 番目のフィールド) を以下の方法で使用して、ログインと認証を制御できます。

- アスタリスク ( * ) をフィールド内に入れて、ローカル・ログインおよび AFS による認証の両方を防止する。これは、主に、特定のユーザーがマシンにログインするのを阻止したいときなど、緊急の場合に有用です。
- 標準の 13 文字以外の任意の長さの文字列をフィールドに入れて、ユーザーが正しい AFS パスワードを提示しなかった場合に、ローカル・ファイル・システムへのログインを阻止する。これは、ローカル AFS アカウントを持っている人だけに、マシンへのログインを許可したい場合に適切です。これを行うには、単一の X またはほかの文字が最も容易に認識できる方法です。
- 不正な AFS パスワードを指定した後でも、ユーザーがローカル・ファイル・システムにログインできるようにするには、標準 UNIX パスワード設定コマンド (passwd またはこれに相当するもの) を発行して、標準 UNIX 暗号化パスワードをフィールドに記録します。

AFS 仕様に変更したログイン・ユーティリティーを使用しない場合、標準の UNIX パスワードを、ユーザーが使用するすべてのクライアント・マシンのローカル・パスワード・ファイルに入れなければなりません。ユーザーは、ローカル・ファイル・システムだけにログインし、次に、 klog コマンドを発行して AFS と認証しなければなりません。ローカル・パスワード・ファイルと認証・データベースのパスワードが同じであれば、最も単純ですが、これは必須ではありません。

### 共通送信元パスワード・ファイルの作成

この機能グループでは、uss コマンドを使用してユーザー・アカウントを作成しているときに、ローカル・パスワード・ファイルの共通ソース・バージョンを作成する方法について説明します。ステップの順序は、次のとおりです。

1. ローカル・パスワード・ファイル項目の形式の 1 行ファイルを作成するテンプレート・ファイルに、 E 命令を組み込みます。
2. 1 行ファイルを、ローカル・パスワード・ファイルの共通ソース・バージョンに組み込みます。このファイルは AFS に保管すると意味をなします。このステップの自動化については、以下の 2 つの例を参照してください。
3. おそらく、AFS package ユーティリティーを使用して、パッケージ・プログラムを使用したクライアント・マシンの構成で説明するように、共通パスワード・ファイルを各クライアント・マシンに配布します。

たとえば、Example Corporation が使用するテンプレートでは、次の E 命令を組み込んで、passwd_username という名前のファイルを /afs/.example.com/common/etc/newaccts ディレクトリーに作成します (テンプレート・ファイルの全内容と E コマンドの詳細な説明は、それぞれ、uss テンプレート例と E 命令による 1 行ファイルの作成 にあります)。

       E /afs/.example.com/common/etc/newaccts/passwd_$USER 0644 root  \
            "$USER:X:$UID:11:$NAME:$MTPT:/bin/csh"

smith というユーザー名を持ったユーザー、Joe L. Smith に対して、この命令は、passwd_smith と呼ばれるファイルを作成します。このファイルは、以下の行を含みます。

       smith:X:1205:11:Joe L. Smith:/afs/example.com/usr/usr1/smith:/bin/csh

この方法で作成されたセットのファイルを、共通送信元パスワード・ファイルに組み込む方法としては、おそらく、シェル・スクリプトが最も容易な方法です。そこで、2 つのサンプル・シェル・スクリプトが登場します。プロセスをさらに自動化するには、ファイル・サーバー・マシンの /usr/afs/local/BosConfig に cronプロセスを作成して、シェル・スクリプトを毎日一定の時刻に実行するようにします。詳細は、新規プロセスを作成および開始する方法 を参照してください。

注: | 以下のスクリプト例は、示唆にすぎません。それらを使用するか、あるいは、類似のスクリプトを作成するためにそれらをモデルとする場合は、ユーザーが欲している結果をそのスクリプトがもたらすことを、できれば、テスト環境でテストしなければなりません。

C シェル・スクリプトの例

最初の例は、Example Corporation のセルに適した単純な C シェルです。この例では、/afs/.example.com/common/uss/newaccts ディレクトリーで検出された個々のファイルを、アルファベット順にソートして、 /afs/.example.com/common/etc ディレクトリーで検出された新規バージョンのグローバル・パスワード・ファイルに組み込みます。現行バージョンを .old 拡張子を付けて保管し、その後、組み込みが終了すると、個々のファイルを除去します。

       set  dir = /afs/.example.com/common
       cat  $dir/uss/newaccts/passwd_* $dir/etc/passwd  >!  $dir/etc/passwd.new
       mv  $dir/etc/passwd  $dir/etc/passwd.old
       sort  $dir/etc/passwd.new  >  $dir/etc/passwd
       rm  $dir/etc/passwd.new  $dir/uss/newaccts/passwd_*

Bourne シェル・スクリプトの例

2 番目の、さらに複雑な例は、Bourne シェル・スクリプトです。これは、最初、グローバル・パスワード・ファイルに組み込まれる新規 passwd_username ファイルが存在することを検査します。これは実行中に、各新規項目がまだ存在していないことを検査します。より短い C シェルの例と同様に、この例は、 /afs/.example.com/common/uss/newaccts ディレクトリーで検出された個々のファイルを、 /afs/.example.com/common/etc ディレクトリーで検出された新規バージョンのグローバル passwd ファイルに組み込みます。

       #!/bin/sh
       DESTDIR=/afs/.example.com/common/uss/newaccts
       cd  $DESTDIR
       DEST=/afs/.example.com/common/etc
       cp /afs/.example.com/common/etc/passwd   /afs/.example.com/common/uss/newaccts/passwd
       echo "copied in passwd file."
       PASSWD=/afs/.example.com/common/uss/newaccts/passwd
       ENTRIES=`ls passwd_*`
       case $ENTRIES in
       "")
            echo No new entry found to be added to passwd file
            ;;
       *)
            echo  "Adding new users to passwd file."
            for  i  in  $ENTRIES
            do
               cat  $i  |  awk  -F:  '{print $1  >  "foo"}'
               USER=`cat foo`
               case  `egrep  -e  \^$USER\: $PASSWD` in
               "")
                       echo  adding  $USER
                       cat  $i  >>  $PASSWD
                       ;;
               *)
                       echo  $USER already in passwd file
                       ;;
               esac
               mv  $i  ../old.passdir/done_${i}
            done
            cd  /afs/.example.com/common/uss/newaccts
            echo  "sorting password file"
            sort  ${PASSWD}  >  ${PASSWD}.sorted
            echo  "installing files"
            install  ${PASSWD}.sorted ${DEST}/passwd
            echo  "Password file is built, sorted and installed."
            ;;
       esac

## uss による既存の UNIX アカウントの変換

このセクションでは、既存の UNIX アカウントがあり、そのアカウントを AFS アカウントに変換する場合に検討しなければならない 3 つの主要な問題について説明します。

### UNIX と AFS UID を一致させる

前述のように、AFS ユーザーは、自分が承認済みユーザーとして AFS ファイル・スペースにアクセスするすべてのクライアント・マシン上のローカル・パスワード・ファイル内に項目を持っていなければなりません。UNIX UID と AFS UID が一致する場合は、管理と使用が両方とも、より単純になります。既存の UNIX アカウントを変換するとき、以下の 2 つの代替があります。

- AFS UID を既存の UNIX UID に一致させる。この場合、ユーザーは、AFS アカウントを作成するときに、AFS UID を自分で割り当てる必要があります。
  - uss add コマンドを使用する場合は、-uid 引き数を組み込む。
  - uss bulk コマンドを使用する場合は、バルク入力ファイル内の add 命令の uid フィールドに、望みの UID を指定する。

  ユーザーの UNIX UIDを保存しているので、ローカル・パスワード・ファイル項目内の UID を更新する必要がない。しかし、AFS 仕様に変更されたログイン・ユーティリティーを使用している場合は、項目のパスワード・フィールドの変更が必要なことがあります。パスワード・フィールドの値が、 AFS 仕様に変更されたログイン・ユーティリティーによるログインにどのように影響するかについての説明は、uss によるローカル・パスワード・ファイル項目の作成を参照してください。

  現在または将来、既存の UNIX UID アカウントを持っていない新規ユーザーに対して AFS アカウントを作成する必要がある場合は、新規 AFS UID が既存の UNIX UID のどれとも競合しないことを確認する必要がある。最も簡単な方法は、保護データベースの `max user id` カウンターを、既存の最大 UNIX UID よりも高い値に設定することです。AFS UID および GID カウンターの表示および設定 を参照してください。

- 既存の UNIX UID を変更して、保護サーバーが自動的に割り当てる新規 AFS UID に一致させる。

  AFS アカウントを作成するとき、保護サーバーに AFS UID を自動的に割り振らせることができる。アカウント作成中のローカル・パスワード・ファイルの新規項目の作成についての説明は、 uss によるローカル・パスワード・ファイル項目の作成を参照してください。

  UNIX UID を変更することには、1 つの欠点がある。つまり、 AFS ユーザーになる前にユーザーがローカル・ファイル・システム内で所有していたファイルとディレクトリーの所有者フィールドに、前の UID が含まれたままであるということです。 ls -l および ls -ld コマンドによって、正しい所有者を表示したい場合、ファイルをローカル・ファイル・システムに残すか AFS に移動するかにかかわらず、chown コマンドを使用して、値をユーザーの新規 UID に変更します。ローカル・ファイルを AFS に移動する を参照してください。

### パスワード・フィールドを適切に設定する

既存の UNIX アカウントは、すでに、パスワード・フィールド内の (スクランブル) パスワードと共に、項目をローカル・パスワード・ファイル内に持っています。ログイン・ユーティリティーのタイプによっては、以下のようにパスワード・フィールド内の値の変更が必要になる場合があります。

- ログイン・ユーティリティーが AFS で使用するように変更されていない場合は、実際のパスワードがローカル・パスワード・ファイル項目のパスワード・フィールド内に (スクランブル形式で) 表示されねばならない。
- ログイン・ユーティリティーが AFS で使用するように変更されている場合は、それぞれの値がログイン・ユーティリティーの動作に異なる影響を与える、有効な値の中から 1 つを選択することができる。uss によるローカル・パスワード・ファイル項目の作成 を参照してください。

実際のパスワードをローカル・パスワード・ファイル項目に入れることを選択する場合は、 E 命令による 1 行ファイルの作成 で説明したように、テンプレート・ファイル・ファイル内の E 命令を使用して、ダミー・パスワードを定義することができます。ユーザーに UNIX passwd コマンドを発行させて、ダミーを実際のシークレット・パスワードと置き換えます。

### ローカル・ファイルを AFS に移動する

既存の UNIX アカウントは、おそらく、マシンのローカル・ファイル・システムに保管されたファイルとディレクトリーを所有しており、これらは、新しいホーム・ボリュームに転送すると意味をなします。最も容易なメソッドは、それらを、AFS クライアント・マシンのローカル・ディスク上に移動することであり、その後、UNIX mv コマンドを使用して、それらをユーザーの新規 AFS ホーム・ディレクトリーに転送します。

ファイルとディレクトリーを AFS に移動する際、それらのモード・ビットの意味が変更することに留意してください。 AFS では、モード・ビットの 2 番目と 3 番目のセット (グループおよびその他) を無視し、最初のセット (所有者ビット) は直接使用しません。ただし、ACL 上の項目と一緒の場合にのみ使用します (詳細は、 AFS が UNIX モード・ビットを解釈する方法 を参照してください)。 ACL がファイルまたはディレクトリーを少なくともモード・ビットと同じくらい安全に保護することを確認してください。

ユーザーの UNIX UID を変更して、新規 AFS UID に一致させることを選択した場合は、 UNIX ファイルとディレクトリーの所有権も変更しなければなりません。AFS に常駐している system:administrators グループのメンバーだけが、 chown コマンドをファイルおよびディレクトリー上で発行することができます。

## uss テンプレート・ファイルの作成

uss コマンドによるユーザー・アカウントの作成は、一般的に、個別のコマンドよりも便利です。アカウントの作成プロセスは、密着して制御することができますが、 uss テンプレート・ファイルにより、アカウント作成の多くの局面を事前に定義することができます。テンプレートを構成してから uss コマンドを発行するので、構成の詳細を注意深く検討し、構文エラーを訂正する時間があります。以下のリストは、テンプレートを使用するその他の利点について要約しています。

- アカウント・コンポーネントの作成と削除を行う正しい順序、または各コマンドの引き数の順序を覚える必要がない。このことは、エラーの可能性を削減する。
- 同じ情報を何度もタイプする必要がない。かわりに、コマンド行での入力をできるだけ少なくできるように、定数および変数をテンプレート・ファイルに作成しておくことができます。テンプレート・ファイル内での定数と変数の使用 を参照してください。
- さまざまなタイプのユーザーに対して、さまざまなテンプレートを作成することができます。指定したユーザーのコンポーネントとの差異を覚える代わりに、uss add または uss bulkコマンドを発行するときに、適切なテンプレートを指定します。
- 3 つのタイプのユーザー・アカウントの作成 で説明するように、テンプレートに特定の情報を組み込みまたは削除することによって、AFS アカウントの 3 つのタイプ (認証専用、基本、またはフル) のいずれかを作成することができます。

以下のリストは、テンプレート・ファイルに表示できる命令について説明し、詳細を説明している後の機能グループを特定します。ここでは、それらは、さまざまなタイプの命令間の依存関係を正しく処理するために、通常、最適な順序で表示されます。

G
  uss コマンド・インタープリターが、新規に作成されたホーム・ディレクトリーを均等に配布する親ディレクトリーのセットの 1 つを定義する。対応するテンプレート・ファイル変数 $AUTOを、 V 命令の mount_point フィールドに入れます。 G 命令によるユーザー・ホーム・ディレクトリーの均等配布 および V 命令によるボリュームの作成 を参照してください。

V
  ボリュームを作成し、それをユーザーのホーム・ディレクトリーとして、 AFS ファイル・スペース内の指定された位置にマウントし、ボリュームの割り当て量を設定し、所有者および ACL をディレクトリーに対して定義する。この命令は、空 (ゼロ長) でないすべてのテンプレート内に表示されねばなりません。V 命令によるボリュームの作成 を参照してください。

D
  ディレクトリー、それも通常は、新規ホーム・ディレクトリーのサブディレクトリーを作成し、そのモード・ビット、所有者、および ACL を設定する。D 命令によるディレクトリーの作成 を参照してください。

F
  プロトタイプをコピーすることによってファイルを作成し、そのモード・ビットおよび所有者を設定する。 F 命令によるプロトタイプからのファイルの作成 を参照してください。

E
  命令自身のコンテンツ内にコピーすることによって単一行ファイルを作成し、その後、ファイルのモード・ビットおよび所有者を設定する。 E 命令による 1 行ファイルの作成 を参照してください。

L
  ハード・リンクを作成する。L および S 命令によるリンクの作成 を参照してください。

S
  記号リンクを作成する。L および S 命令によるリンクの作成 を参照してください。

A
  パスワードおよび認証の試みに制限を課すことによってアカウント・セキュリティーを向上させる。A 命令によるアカウント・セキュリティーの強化 を参照してください。

X
  コマンドを実行する。X 命令によるコマンド実行 を参照してください。

### 3 つのタイプのユーザー・アカウントの作成

uss add および uss bulk コマンドを使用して、機能性のレベルが異なる 3 つのタイプのアカウントを作成できます。タイプの詳細な説明については、 AFS ユーザー・アカウントの作成を参照してください。以下のリストでは、それぞれのタイプに対するテンプレートの構成方法を説明します。

- 認証専用アカウントを作成するには、空 (ゼロ長) のテンプレート・ファイルを作成します。このようなアカウントには、認証データベースの項目と保護データベースの項目の 2 つのコンポーネントがあります。
- G 命令によるユーザー・ホーム・ディレクトリーの均等配布 で説明したように、基本アカウントを作成するには V 命令を組み込み、ホーム・ディレクトリーを均等に配布したい場合は G 命令を組み込みます。認証データベースと保護データベースのほかに、このタイプのアカウントには、所有者および ACL セットによって適切にホーム・ディレクトリーに取り付けられたボリュームを適切に組み込みます。
- フルアカウントを作成するには、V および G 命令に加えて、 D、E、F、 L、および S の各命令を適切に組み込みます。このタイプのアカウントは、ログイン、印刷、およびメール送信などの基本機能に対する構成ファイルを組み込みます。いくつかの有用なタイプの構成ファイルについての説明は、 新規の AFS アカウントでの標準ファイルの作成 を参照してください。

### テンプレート・ファイル内での定数と変数の使用

uss テンプレート・ファイルの各命令はいくつかのフィールドを持ち、それらのフィールドによって作成する要素の特性が定義されます。たとえば、D 命令のフィールドは、ディレクトリーのパス名、所有者、モード・ビット、および ACL を定義します。

3 つのタイプの値をフィールドに入れることができます。つまり、変数、定数、またはその 2 つの組み合わせです。適切な値は、uss add コマンドにどの引き数を与えるかということ、またはバルク入力ファイル内のどのフィールドに add 命令を組み込むかによって異なります。

アカウント構成の局面がすべてのユーザーに対して同じ場合は、文字列を挿入することによって、定数値を該当フィールド内に定義する。たとえば、10,000 KB のスペース割り当て量をすべてのユーザー・ボリュームに割り当てるには、文字列 10000 を V 命令の quota フィールドに入れます。

一方、アカウント構成の局面がユーザーごとに異なる場合は、変数を該当フィールドに書き込みます。この場合、各アカウントを作成するときに、変数に対して値を与えなければなりません。これは、対応する引き数を uss add コマンドに与えるか、あるいは値を、バルク入力ファイルの add 命令の対応するフィールドに入れるかのいずれかで行います。

表 3 に要約するように、uss コマンドの組は、テンプレート変数のセットを定義します。テンプレート変数のセットのそれぞれが自己の値に対して、対応する送信元を持っています。用途についての説明は、各テンプレートの説明に関する、次の機能グループ (V 命令によるボリュームの作成 から X 命令によるコマンド実行まで) を参照してください。

表 3. uss テンプレート変数の値の送信元

変数 | 値の送信元
$AUTO | テンプレートの直前の G 命令
$MTPT | V 命令内の場合は、uss add コマンドへの -mount 引き数か、バルク入力ファイルの add 命令の mount_point フィールド。後続の命令内の場合は V 命令の mount_point フィールド
$NAME | 与えられていれば、uss add コマンドへの -realname 引き数か、バルク入力ファイルの add 命令の mount_point フィールド。それ以外の場合は uss add コマンドへの -user 引き数か、バルク入力ファイルの add 命令の username フィールド
$PART | uss add コマンドへの -partition 引き数か、バルク入力ファイルの add 命令の partition フィールド
$PWEXPIRES | uss add コマンドへの -pwexpires 引き数か、バルク入力ファイルの add 命令の password_expires フィールド
$SERVER | uss add コマンドへの -server 引き数か、バルク入力ファイルの add 命令の file_server フィールド
$UID | 与えられていれば、uss add コマンドへの -uid 引き数か、バルク入力ファイルの add 命令の uid フィールド。それ例外の場合は保護サーバーによる自動割り当て
$USER | uss add コマンドへの -user 引き数か、バルク入力ファイルの add 命令の username フィールド
$1 から $9 | uss add コマンドへの -var 引き数か、バルク入力ファイルの add 命令の var1 から var9 までのフィールド

変数の共通使用は、ユーザーのボリュームを収納しているファイル・サーバーとパーティションを定義することです。この定義作業は、しばしば、ユーザーごとに異なります。$SERVER 変数を V 命令の server フィールドに入れ、また、$PART 変数をその partition フィールドに入れます。uss add コマンドを使用する場合は、希望の値に -server および -partition 引き数を与えます。 uss bulk コマンドを使用する場合は、バルク入力ファイル内の各ユーザーの add 命令の file_server フィールドと partition フィールドに希望の値を指定します。

$1 から $9 までの変数により、アカウントの他の特徴をカスタマイズすることができます。これらの変数に値を与えるには、 uss add コマンドに対する -var 引き数を使うか、またはバルク入力ファイルの add 命令の該当フィールドに値を入れます。 -var 引き数は、それに対する各インスタンスが 2 つの部分、つまり、番号インデックスおよび値を、スペースで分離されて持っているという点で、ほかの引き数とは異なります。番号変数の使用例については、 V 命令によるボリュームの作成 の mount_point および quota フィールドの説明を参照してください。

アカウント構成のいくつかの局面が、一部、定数、一部、変数である場合は、変数と定数を命令フィールドで結合できます。たとえば、Example Corporation が、ユーザー・ボリュームを /afs/example.com/usr ディレクトリーにマウントするとしましょう。パス名のユーザー・ボリュームの部分は定数ですが、マウント・ポイントとホーム・ディレクトリーの名前はユーザーのユーザー名であり、このユーザー名が $USER 変数に対応していますアカウントをこの方法で構成するには、V 命令の mount point フィールド内の定数文字列と変数を以下のように結合します。

       /afs/example.com/usr/$USER

次に、uss add コマンドに -user 引き数を使用するか、バルク入力ファイル内の各ユーザーの add 命令の username フィールドを使用するかして、$USER 変数の値を設定します。

### テンプレート・ファイルを入れる場所

テンプレートは、uss コマンド・インタープリターに対して使用可能でなければなりません。なぜなら、テンプレートは、たとえ、それが認証専用アカウントの作成に適切なゼロ長ファイルであっても、 uss add または uss bulk コマンドを実行するからです。

uss add コマンドまたは uss bulk コマンドに -template 引き数を与えない場合、コマンド・インタープリターは次の各ディレクトリー順に uss.template という名前のファイルを検索します。

1. 現行作業ディレクトリー
2. /afs/cellname/common/uss (cellname は、ローカルセルです)
3. /etc

異なる名前を持ったテンプレート・ファイルを使用するか、あるいは、異なるディレクトリーに保管するされたテンプレート・ファイルを uss add または uss bulk コマンドに対する -template 引き数に組み込みます。ファイル名だけを与えると、コマンド・インタープリターは、ファイル名を、直前にリストされたディレクトリー内で探します。パス名とファイル名を与えると、コマンド・インタープリターは、指定されたディレクトリーだけを探し、部分的パス名を現行作業ディレクトリーに対する相対と解釈します。

### テンプレートの組み立てについてのいくつかの一般規則

この機能グループでは、テンプレート・ファイルを組み立てるときに従う、いくつかの一般的規則について要約します。各命令の構文の定義については、次のセクション (G 命令によるユーザー・ホーム・ディレクトリーの均等配布 から X 命令によるコマンド実行 まで) を参照してください。

- 変数がテンプレート内の別の場所にある要素から値を取得する場合、参照前に定義を行う必要があります。命令行を以下の順序で書き込むと、通常、結果として、変数の正しいレゾリューションになります。

  G V D F E L S A X

- 各命令内のフィールドは、命令の構文定義によって指定された順序で表示されねばなりません。これに関しては、次の機能グループで、各命令について説明します。フィールドを省略することはできません。各フィールドをその近隣のフィールドから、1 つまたは複数のスペースで分離します。
- パス名を指定するとき、フルパス名を与えます。パス名の一部は、現行作業ディレクトリー (uss コマンドが発行されたディレクトリー) との関連で解釈されます。意図しない結果をもたらす可能性があります。
- 各命令は、テンプレート・ファイル内の単一行上に表示されねばならず、改行文字 (<Return>) は、命令の末尾にだけ位置します。この本では、いくつかの命令の例が複数の行上に表示されることがありますが、それは、ただ、読みやすいようにしたものです。
- uss add コマンドに対して、対応する引き数を組み込むことによって、あるいは、バルク入力ファイルの add 命令の対応するフィールドに値を入れることによって、テンプレート内に表示されるすべての変数に値を与えます。欠落した値があると、作成オペレーション全体が停止します。たとえ、変数を与えても、変数がテンプレート・ファイル内に表示されない場合、コマンド・インタープリターは、バルク入力ファイル内の対応するコマンド行引き数またはフィールドを無視します。
- テンプレート・ファイル内にブランク行を使用して、さらに読みやすくすることもできます。ファイルにコメントを入れる場合、各注釈行の先頭に番号記号 (#) を入れます。

### ローカル・ディスクのディレクトリーとファイルの作成について

D、E、および F 命令を使用して、ユーザーが uss コマンドを発行しているマシンのローカル・ファイル・システム内でディレクトリーまたはファイルを作成することは可能ですが、そのような使用法は、お勧めできません。その使用法は、以下の 2 つの複雑さを導く可能性があります。

- ローカル・ファイル・システムは、新規ローカル・ディスクのディレクトリーまたはファイルの所有権をその作成者に自動的に割り当てる。ユーザーは、オブジェクトを作成している uss コマンドの発行者であるので、ローカル・ファイル・システムは、ユーザーの UNIX UID をレコードします。それが適切でなくて、オブジェクトの作成時に、別の所有者を指定したい場合、ユーザーは、ローカル・スーパーユーザー root としてログインしていなければなりません (ローカル・ファイル・システムは、 root ユーザーだけに UNIX chown コマンドの発行を許可します。このコマンドが、uss コマンド・インタープリターを起動して、所有者をデフォルト値から変更します)。また、-admin 引き数を uss add または uss bulk コマンドに対して使用して、特権 AFS 管理者として認証しなければなりません。管理者だけが認証データベース項目および保護データベース項目を作成することができます。これらの項目は、 uss コマンド・インタープリターが常に新規アカウントの一部として作成します。

  代替案は、uss オペレーションが完了した後、ローカル・スーパーユーザー root となり、その後、必要な chown コマンドを発行することである。けれども、この代替案は、アカウント作成プロセスの自動化をそれだけ減じます。

- ローカル・ディスク・ディレクトリーの作成は、常に、エラー・メッセージを生成する。なぜなら、 uss コマンド・インタープリターがローカル・ディレクトリーの ACL を正常に設定できないからである。それにもかかわらず、ディレクトリーは作成され、値が D 命令の ACL フィールド内に表示されねばなりません。

マシンのローカル・ディスクを構成するためにお勧めするメソッドは、むしろ、 AFS package ユーティリティーを使用することです。 パッケージ・プログラムを使用したクライアント・マシンの構成 を参照してください。

### uss テンプレート例

この機能グループでは、基本およびフルアカウント・タイプのためのテンプレート (認証のみのアカウントのテンプレートは空です) の例について説明します。

最初の例では、基本アカウントを作成します。この例では、2 つの G 命令と 1 つの V 命令を含み、フィールドは、これらの命令の中で、ボリューム名、ファイル・サーバー・マシン、パーティション、 K バイト単位の割り当て量、マウント・ポイント、ホーム・ディレクトリー所有者、およびホーム・ディレクトリー・アクセス制御リストを定義します。Example Corporation のセルでは、適切なテンプレートは以下のとおりです。

       G /afs/.example.com/usr1
       G /afs/.example.com/usr2
       V  user.$USER  $SERVER.example.com  /vicep$PART  5000  $AUTO/$USER   $UID  \
            $USER all staff rl

このタイプのテンプレートを使って uss add コマンドを発行するときは、以下の引き数を与えます。

- -user。$USER 変数に対して、ユーザー名を指定します。
- -server。$SERVER 変数に対して、ファイル・サーバー・マシン名の固有の部分を指定します。
- -partition。$PART 変数に対して、パーティション名の固有の部分を指定します。

保護サーバーは、自動的に、$UID 変数に対して AFS UID を割り当て、 G 命令は、$AUTO 変数に対して値を与えます。

以下のテンプレート・ファイル例では、Example Corporation のセル内にフルアカウントを作成します。次のセクションでは命令のそれぞれのタイプを扱い、この例の効果について説明します。 V および E 命令がそれぞれ 2 行に表示されているのは、ただ、読みやすくするためであることに注意してください。

       #
       # Specify the available grouping directories
       #
       G /afs/.example.com/usr1
       G /afs/.example.com/usr2
       #
       # Create the user's home volume
       #
       V user.$USER $SERVER.example.com /vicep$PART 5000 /afs/.example.com/$AUTO/$USER \
            $UID $USER all abc:staff rl
       #
       # Create directories and files for mail
       #
       D $MTPT/.MESSAGES 0700 $UID $USER all abc:staff none
       D $MTPT/.Outgoing 0700 $UID $USER rlidwk postman rlidwk
       D $MTPT/Mailbox 0700 $UID $USER all abc:staff none  system:anyuser lik
       #
       # Here are some useful scripts for login etc.
       #
       F $MTPT/.Xbiff 0755 $UID /afs/example.com/admin/user/proto
       F $MTPT/.Xresources 0644 $UID /afs/example.com/admin/user/proto
       F $MTPT/.Xsession 0755 $UID /afs/example.com/admin/user/proto
       F $MTPT/.cshrc 0755 $UID /afs/example.com/admin/user/proto
       F $MTPT/.login 0755 $UID /afs/example.com/admin/user/proto
       F $MTPT/.logout 0755 $UID /afs/example.com/admin/user/proto
       F $MTPT/.twmrc 0644 $UID /afs/example.com/admin/user/proto
       F $MTPT/preferences 0644 $UID /afs/example.com/admin/user/proto
       #
       # Make a passwd entry
       #
       E /afs/.example.com/common/etc/newaccts/passwd_$USER 0644 root  \
            "$USER:X:$UID:11:$NAME:$MTPT:/bin/csh"
       #
       # Put in the standard password/authentication checks
       #
       A $USER 250 noreuse 9 25
       #
       # Create and mount a public volume for the user
       #
       X "create_public_vol $USER $1 $2"
       #
       # Here we set up the symbolic link to public directory
       #
       S /afs/example.com/public/$USER $MTPT/public

### G 命令によるユーザー・ホーム・ディレクトリーの均等配布

数千のユーザー・アカウントを持ったセルでは、ユーザー・ボリュームに対するマウント・ポイントを複数の親ディレクトリーに配布することは、道理にかなっています。なぜなら、それらのマウント・ポイントをすべて 1 つのディレクトリーに入れると、ユーザー・ホーム・ディレクトリーがアクセスされたとき、ディレクトリー検索が顕著にスローダウンするからです。可能性のある解決策は、ユーザー・ホーム・ディレクトリーをアルファベット順にグループ化する親ディレクトリーか、または、大学や企業の部門など、反映する親ディレクトリーを作成することです。しかし、本当に大きなセルの場合、そのように分けられたグループであっても大きすぎて、ディレクトリーの検索が遅くなり、そのグループに属するユーザーはホーム・ディレクトリーにアクセスするたびに不当な不利益を被ることになります。ワークプレースの部門を反映するグループ化のもう 1 つの欠点は、ユーザーが部門との関係を変更すると、マウント・ポイントも移動しなければならないということです。

1 つの代替案は、ワークプレースの部門を表さない複数の親ディレクトリーに、ユーザー・ホーム・ディレクトリーを均等に配布することです。uss コマンドの組を使用すると、G 命令をそれぞれに対して、テンプレート・ファイルの先頭の位置で入れ、その後、 V 命令の mount_point フィールドで $AUTO 変数を使用することによって、ディレクトリーのリストを定義することができます。uss コマンド・インタープリターは、$AUTO 変数と出会うと、 G 命令によって名付けられ、かつ現在、最も少ない項目を持っているとディレクトリーと置換します。(実際、$AUTO 変数は、パス名を組み込んでいるどのフィールドにも、どのタイプの命令にも表示できます。あらゆる場合で、コマンド・インタープリターは、現在、最も少ない項目を持っているディレクトリーと置換します。)

G 命令の構文は以下のとおりです。

       G  directory

ここで、directory は、完全なディレクトリー・パス名か、または最終要素だけ (ディレクトリーそのもの) のいずれかを指定します。選択項目によって、 V 命令の mount_point フィールドに入れる適切な値を決定します。

読み取り専用のボリュームにマウント・ポイントを作成しようとしたことが原因の障害が起きないように、各ディレクトリーへの読み取り / 書き込みパスを指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、ボリュームの取り付け を参照してください。

たとえば、 uss テンプレート例 のフルアカウントに対する Example Corporation のテンプレート例では、以下の 2 つのディレクトリーを定義します。

       G /afs/.example.com/usr1
       G /afs/.example.com/usr2

そして、値 $AUTO/$USER を、 V 命令の mount_point フィールドに書き込みます。同じ結果をもたらす 1 つの代替案は、ディレクトリーを以下のように定義することです。

       G usr1
       G usr2

そして、V 命令の mount_point フィールドに、さらに完全なパス名 /afs/.example.com/$AUTO/$USER を指定します。

### V 命令によるボリュームの作成

テンプレート・ファイルが空 (ゼロ長) でない限り、 1 つの (必ず 1 つだけの) V 命令がテンプレート・ファイル内に表示されねばなりません。 (uss アカウント作成オペレーションの一部としてユーザーに別のボリュームを作成するには、X 命令を使用して vos create コマンドを起動するか、このコマンドを fs mkmount コマンドなどの他のコマンドとともに起動するスクリプトを起動します。例については、X 命令によるコマンド実行 を参照してください。)

V 命令は、以下の AFS エンティティーを定義します。

- 1 つのボリュームおよび関連した VLDB 項目
- ボリュームのサイト (ファイル・サーバー・マシンおよびパーティション)
- AFS ファイル・スペース内のボリュームのマウント・ポイント。これがユーザーのホーム・ディレクトリーとなる
- ボリュームのスペース割り当て量
- ホーム・ディレクトリーの所有者。通常は新規ユーザー
- ホーム・ディレクトリーの ACL。通常、これが少なくとも、すべてのアクセス権をユーザーに許可する

V 命令内のフィールドについての以下の説明は、 uss テンプレート例 で述べたフルアカウント・テンプレート内の例を引用しています (ここで、命令が 2 行に表示されているのは、ただ、読みやすくするためです)。

       V  user.$USER  $SERVER.example.com  /vicep$PART  5000  \
           /afs/.example.com/$AUTO/$USER  $UID  $USER all abc:staff rl

V 命令の構文は以下のとおりです。

       V  volume_name  server  partition  quota  mount_point owner  ACL

ここで、

V
  ボリューム作成の命令を示します。

volume_name
  ボリュームの名前を、VLDB 内にレコードされたとおりに指定します。

  ユーザー名をボリューム名の一部として組み込む規則に従うには、$USER 変数をこのフィールドに組み込みます。この変数は、uss add コマンドへの -user 引き数か、バルク入力ファイルの add 命令の username フィールドから値を取得します。

  Example Corporation の例では、値 user.$USER を使用して、標準ボリューム名に user.username を割り当てます。たとえば、ユーザー smith に対してアカウントを作成する場合は、uss add コマンドへの引き数として -user smith を組み込むか、バルク入力ファイルの add 命令の username フィールドに値 smith を入れます。

server
  新規ボリュームを作成するファイル・サーバー・マシンに名前を付けます。最も望ましいのは完全修飾されたホスト名 ( fs1.example.com など) を与えることですが、ボリュームの作成時に省略形式の名前を解決する命名サービスを使用することができれば、省略形式も可能です。

  異なるユーザーのボリュームを異なるファイル・サーバー・マシンに入れるには、$SERVER 変数をこのフィールド内で使用し、uss add コマンドに対する -server 引き数か、または、バルク入力ファイルの add 命令の server フィールドかのいずれかによって、値をこの変数に与えます。コマンド行にすべてをタイプすることなく、完全に修飾されたホスト名を指定する容易な方法の 1 つは、定数と $SERVER 変数を結合することです。具体的に言うと、定数が、すべてのファイル・サーバー・マシンに対して共通のドメイン名サフィックスを指定します。

  Example Corporation の例では、セル内のすべてのファイル・サーバー・マシンが example.com ドメイン名サフィックスを共用しており、したがって、server フィールドが変数と定数を結合して、 $SERVER.example.com を作成します。この新規ボリュームをマシン fs1.example.com に入れるには、 -server fs1 を uss add コマンドに対する引き数として組み込むか、あるいは、値 fs1 をバルク入力ファイルの add 命令の server フィールドに入れます。

partition
  ユーザーのボリュームを作成するパーティションを指定します。これは、 server フィールドで名付けられたファイル・サーバー・マシン上になければなりません。パーティションを完全な名前 (/vicepa など) で指定するか、省略形と別名を使用するための規則 にリストされた省略形を使用します。

  異なるユーザーのボリュームを異なるパーティションに入れるには、$PART 変数をこのフィールド内で使用し、 uss add コマンドに対する -partition 引き数か、または、バルク入力ファイルの add 命令の partition フィールドかのいずれによって、値をこの変数に与えます。すべての完全なパーティション名は、/vicep 文字列で始まるので、その文字列を定数として $PART 変数と結合させると便利です。

  Example Corporation のテンプレート例では、定数文字列 /vicep と $PART 変数をこのように結合し、 /vicep$PART としています。

quota
  ボリュームがファイル・サーバー・マシンのディスク上で占有できる最大数の K バイトブロックを指定します。この値は整数でなければなりません。同じ割り当て量をすべてのユーザー・ボリュームに割り当てる場合は、定数値を指定します。異なる割り当て量を異なるボリュームに割り当てるには、番号変数 ($1 から $9) の 1 つをこのフィールドに入れ、 uss add コマンドに対する -var 引き数か、または、バルク入力ファイルの add 命令の該当フィールドかのいずれかによって、値をこの番号変数に与えます。

  Example Corporation の例では、5000 KB の初期割り当て量をすべての新規ユーザーに許可しています。

mount_point
  ボリュームに対してマウント・ポイントを作成します。このマウント・ポイントはボリュームのルート・ディレクトリーおよびユーザーのホーム・ディレクトリーとして機能します。規則によって、ユーザーのホーム・ディレクトリー名は、ユーザー名を組み込みます。このユーザー名は、 $USER 変数をこのフィールドに組み込むことによって読み取ることができます。

  読み取り専用のボリュームに新規のマウント・ポイントを作成しようとしたことが原因の障害が起きないように、マウント・ポイントへの読み取り /書き込みパスを指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。このフィールドに $AUTO 変数を使用する場合、それぞれの G 命令によって命名されるディレクトリーは、既に読み取り / 書き込みパスを示しているはずです。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、ボリュームの取り付け を参照してください。

  また、マウント・ポイント名のほかの部分がユーザーごとに異なる場合は、$MTPT 変数をこのフィールド内で使用し、 uss add コマンドの -mount 引き数か、または、バルク入力ファイルの add 命令の mount_point フィールドかによって、値を与えることができます。けれども、$MTPT 変数が、テンプレート内で後に続く命令内 (通常、D、 E、または F 命令内) に表示される場合は、この変数が代わりにこのフィールドの全コンテンツをその値として取ることに注意してください。

  ホーム・ディレクトリーを、 1 つまたは複数の親ディレクトリー内にどのようにグループ化するかというユーザーの決定に基づき、定数と変数を結合します。テンプレートを参照する uss add または uss bulk コマンドを実行する前に、親ディレクトリーがすでに存在していなければならないということに注意してください。ホーム・ディレクトリーをグループ化するための可能性としては、以下の事項があります。

  - すべてのユーザー・ホーム・ディレクトリーを単一の親ディレクトリーに入れる。名前 /afs/cellname/usr は、 UNIX の /usr 規則にある AFS 準拠の変数です。この選択は、少数のユーザー・アカウントを持ったセルに対して最も適切です。この選択をインプリメントする最も簡単な方法は、定数文字列と $USER 変数を /afs/.example.com/usr/$USER のように結合することです。
  - ワークプレースの部門に対応していない親ディレクトリーのセットにホーム・ディレクトリーを均等に配布する。この選択は、数万のアカウントを持っているセルに対して適切です。このようなセルでは、すべてのホーム・ディレクトリーが一緒に 1 つの親ディレクトリーに常駐し、かつ、ワークプレースの部門に従った配布が実現可能ではない場合に、ホーム・ディレクトリーの数が大き過ぎてディレクトリー検索を著しくスローダウンします。

    $AUTO 変数は、ホーム・ディレクトリーをこの方法で均等に配布するために設計されています。G 命令によるユーザー・ホーム・ディレクトリーの均等配布 で説明したように、 uss コマンド・インタープリターは、先行の G テンプレート命令によって定義され、かつ現在、最も少ない項目を持っているディレクトリーと置換します。Example Corporation のテンプレート例では、この選択を値 /afs/.example.com/$AUTO/$USER を使用して説明しています。

  - ホーム・ディレクトリーを、大学や企業の部門など、部門を反映する複数のディレクトリーに配布する。おそらく、このスキーマをインプリメントする最も簡単な方法は、$MTPT 変数を使用して、/afs/.example.com/usr/$MTPT/$USER のように部門を表すことです。そして、uss add コマンドに -user smith および -mount acctg という引き数を与えて、マウント・ポイント /afs/.example.com/usr/acctg/smith を作成します。
  - ユーザー名の最初の文字に基づき、usr のアルファベット順のサブディレクトリー (usr/a、usr/b など) にホーム・ディレクトリーを配布する。この利点は、ユーザー名がわかるとホーム・ディレクトリーの位置指定を容易に行えることです。潜在的な欠点は、配布が均等になりそうにないということと、アカウントが多数の場合には、緩慢になったディレクトリー検索が、ポピュラーな文字で始まる名前のユーザーに不公平な影響を与えるということです。

    おそらく、このスキーマをインプリメントする最も簡単な方法は、$MTPT 変数を使用して、/afs/.example.com/usr/$MTPT/$USER のように文字を表すことです。そして、uss add コマンドに -user smith および -mount s/m という引き数を与えて、マウント・ポイント /afs/.example.com/usr/s/m/smith を作成します。

owner
  UNIX の ls -l コマンドからの出力で、マウント・ポイントの所有者として指定されるユーザーのユーザー名または UID を指定します。ホーム・ディレクトリー所有権に対する標準規則に従うには、Example Corporation のテンプレート例のように、 $UID 変数をこのフィールドで使用します。この後、保護サーバーは、ユーザーが、 -uid 引き数を uss add コマンドに与えるか、または、バルク入力ファイルの add 命令の uid フィールドを埋めるかのいずれかを行う場合を除き、自動的に AFS UID を割り当てます。 (既存の UNIX アカウントを変換する場合は、考慮事項の説明をさらに読むために、uss による既存の UNIX アカウントの変換 を参照してください。)

ACL
  ACL を新規ホーム・ディレクトリー上で設定します。1 つまたは複数のペア値を与えます。各ペアは、AFS ユーザー名またはグループ名、および望ましいアクセス権とで、この順序で構成されている必要があります (グループ名は、使用される保護データベース内にすでに存在していなければなりません)。ペアの 2 つの部分を分離し、また、各ペアを 1 つのスペースで分離します。使用可能なアクセスの説明は、AFS ACL アクセス権 を参照してください。

  このフィールドに、値 $USER all を組み込むことによって、少なくとも、すべてのアクセス権を新規ユーザーに許可します。ファイル・サーバーは、自動的にすべてのアクセス権を system:administrators グループにも許可します。アクセス権を ussコマンドの発行者に対して許可することはできません。なぜなら、アカウント作成の最後のステップとして、uss コマンド・インタープリターは、作成プロセス中に自動的にそのユーザーをすべての ACL セットから削除するからです。

  Example Corporation の例では、次の値を使用して、新規ユーザーにすべてのアクセス権を許可し、abc:staff グループのメンバーには r (読み取り) および l (ルックアップ) 権限を許可しています。

  $USER all abc:staff rl

### D 命令によるディレクトリーの作成

テンプレート・ファイル内の各 D 命令が 1 つのディレクトリーを作成します。テンプレート内でのそれらの数には、制限がありません。 D 命令がサブディレクトリーを新規ユーザーのホーム・ディレクトリー内に作成する場合 (その意図された用法)、 D 命令は、V 命令に後続しなければなりません。uss コマンドが実行しているマシンのローカル・ディスク上にディレクトリーを作成することは、お勧めできません。お勧めできない理由については、ローカル・ディスクのディレクトリーとファイルの作成について で概説しています。

D 命令内のフィールドについての以下の説明は、 uss テンプレート例 からのフルアカウント・テンプレート内の例の 1 つを引用しています。

       D $MTPT/Mailbox 0700 $UID $USER all abc:staff none  system:anyuser lik

D 命令の構文は以下のとおりです。

       D  pathname  mode_bits  owner  ACL

ここで、

D
  ディレクトリー作成の命令を指示します。

pathname
  ディレクトリーのフルパス名を指定します。ユーザーのホーム・ディレクトリーのサブディレクトリーの場合、$MTPT 変数を使用して、ホーム・ディレクトリーのパス名を指定するのが最も簡単です。 $MTPT 変数が D 命令内に表示される場合、この変数は、値を先行の V 命令の mount_point フィールドから取ります (この依存性が、なぜ D 命令が V 命令に後続しなければならないかという理由です)。

  読み取り専用のボリュームに新規ディレクトリーを作成しようとしたことが原因の障害が起きないように、ディレクトリーへの読み取り / 書き込みパス名を指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。このフィールドに $MTPT 変数を使用する場合、V 命令の mount_point フィールドの値は既に読み取り / 書き込みパスを示しているはずです。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、 ボリュームの取り付け を参照してください。

  Example Corporation の例では、値 $MTPT/Mailbox を使用して、 Mailbox サブディレクトリーをユーザーのホーム・ディレクトリーに入れます。

mode_bits
  ファイルの UNIX モード・ビットを定義します。許容値は、標準のアクセス権の組み合わせに対応する 3 桁または 4 桁の数字です。例 : 0755 は、rwxr-xr-x に対応し、 0644 は、rw-r--r-- に対応します。最初の (owner) x ビットは、ディレクトリーに対するアクセスを可能にするためにオンにしなければなりません。

  Example Corporation の例では、値 0700 を使用して、 Mailbox サブディレクトリー上のモード・ビットを rwxr----- に設定します。

owner
  UNIX の ls -l コマンドからの出力で、ディレクトリーの所有者として指定されるユーザーのユーザー名または UID を指定します。

  ディレクトリーが AFS 内に常駐している場合は、 Example Corporation のテンプレート例のように $UID 変数をこのフィールド内に入れます。この後、保護サーバーは、ユーザーが、 -uid 引き数を uss add コマンドに与えるか、または、バルク入力ファイルの add命令の uid フィールドを埋めるかのいずれかを行う場合を除き、自動的に AFS UID を割り当てます。(既存の UNIX アカウントを変換する場合は、考慮事項の説明をさらに読むために、uss による既存の UNIX アカウントの変換 を参照してください。)

  ディレクトリーがローカル・ディスクにある場合、uss コマンドを発行しているユーザー名か UNIX UID を指定するのが最も簡単です。別のもう１人のユーザーを指定することから生じる複雑さについての詳細は、 ローカル・ディスクのディレクトリーとファイルの作成について を参照してください。

ACL
  ACL を新規ディレクトリー上で設定します。1 つまたは複数のペア値を与えます。各ペアは、AFS ユーザー名またはグループ名、および望ましいアクセス権とで、この順序で構成されている必要があります (グループ名は、使用される保護データベース内にすでに存在していなければなりません)。ペアの 2 つの部分を分離し、また、各ペアを 1 つのスペースで分離します。使用可能なアクセスの説明は、AFS ACL アクセス権 を参照してください。

  値 $USER all を組み込むことによって、少なくとも、すべてのアクセス権を新規ユーザーに許可します。アクセス権を uss コマンドの発行者に対して許可することはできません。なぜなら、アカウント作成の最後のステップとして、uss コマンド・インタープリターは、作成プロセス中に自動的にそのユーザーをすべての ACL セットから削除するからです。 ローカル・ディスクのディレクトリーとファイルの作成について で詳細に説明したように、ディレクトリーがローカル・ディスク上にある場合は、エラー・メッセージが常に表示されます。

  Example Corporation の例では、次の値を使用して、新規のユーザーにはすべてのアクセス権を許可し、 abc:staff グループのメンバーにはまったく許可を与えず、system:anyuser グループのメンバーには l (ルックアップ)、i (挿入)、および k (ロック) の権限を与えています。

  $USER all abc:staff none system:anyuser lik

  この値は、非常に広範なアクセス権を system:anyuser グループに許可し、すべてのシステム・ユーザーに (メール送信・デーモンを含め)、メールを Mailbox ディレクトリーに挿入することを可能にします。r (読み取り)アクセス権の不在は、 system:anyuser グループのメンバーによるメール・ファイルの読み取りを阻止します。

### F 命令によるプロトタイプからのファイルの作成

テンプレート・ファイル内の各 F 命令が既存のプロトタイプ・ファイルのコンテンツをコピーすることによって、ファイルを作成します。テンプレート内でのそれらの数には制限がなく、それぞれが、異なるプロトタイプを参照することができます。 F 命令がファイルを、新規ユーザーのホーム・ディレクトリーまたはそのサブディレクトリー内に作成する場合 (その意図された用法)、 F 命令は、親ディレクトリーを作成する V または D 命令に後続しなければなりません。uss コマンドを実行しているマシンのローカル・ディスク上にファイルを作成することは、 ローカル・ディスクのディレクトリーとファイルの作成について で詳細に説明されている理由から、お勧めできません。

E 命令もファイルを作成しますが、 2 つのタイプの命令は相補利点を持っています。E 命令で作成されたファイルは、各ユーザーに対してカスタマイズすることができます。なぜなら、ファイルのコンテンツを指定するフィールドに変数を表示できるからです。対照的に、F 命令を使用して作成されたファイルのコンテンツは、すべてのユーザーに対して同じです。E ファイルは、必ず単一行でなければなりませんが、 F ファイルはどのような長さでもかまいません。

F 命令内のフィールドについての以下の説明は、 uss テンプレート例 からのフルアカウント・テンプレート内の例の 1 つを引用しています。

       F $MTPT/.login 0755 $UID /afs/example.com/admin/user/proto

F 命令の構文は以下のとおりです。

       F  pathname  mode_bits  owner  prototype_file

ここで、

F
  ファイル作成の命令を指示します。

pathname
  作成するファイルの完全なパス名を、ファイル名付きで指定します。それがユーザーのホーム・ディレクトリーまたはそのサブディレクトリーに常駐している場合は、 $MTPT 変数を使用して、ホーム・ディレクトリーのパス名を指定するのが最も簡単です。 $MTPT 変数が F 命令内に表示される場合、この変数は、値を先行の V 命令の mount_point フィールドから取ります (この依存性が、なぜ F 命令が V 命令に後続しなければならないかという理由です)。

  読み取り専用のボリュームに新規ファイルを作成しようとしたことが原因の障害が起きないように、ファイルへの読み取り / 書き込みパス名を指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。このフィールドに $MTPT 変数を使用する場合、V 命令の mount_point フィールドの値は既に読み取り / 書き込みパスを示しているはずです。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、ボリュームの取り付け を参照してください。

  Example Corporation の例では、値 $MTPT/.login を使用して、.login というファイルをユーザーのホーム・ディレクトリーに入れます。

mode_bits
  ファイルの UNIX モード・ビットを定義します。許容値は、標準のアクセス権の組み合わせに対応する 3 桁または 4 桁の数字です。例 : 0755 は、rwxr-xr-x に対応し、 0644 は、rw-r--r-- に対応します。

  Example Corporation の例では、値 0755 を使用して、 .login ファイル上のモード・ビットを rwxr-xr-x に設定します。

owner
  UNIX の ls -l コマンドからの出力で、ファイルの所有者として指定されるユーザーのユーザー名または UID を指定します。

  ファイルが AFS 内に常駐している場合は、 Example Corporation のテンプレート例のように $UID 変数をこのフィールド内に入れます。この後、保護サーバーは、ユーザーが、 -uid 引き数を uss add コマンドに与えるか、または、バルク入力ファイルの add命令の uid フィールドを埋めるかのいずれかを行う場合を除き、自動的に AFS UID を割り当てます。(既存の UNIX アカウントを変換する場合は、考慮事項の説明をさらに読むために、uss による既存の UNIX アカウントの変換 を参照してください。)

  ファイルがローカル・ディスクにある場合、uss コマンドを発行しているユーザー名か UNIX UID を指定するのが最も簡単です。別のもう１人のユーザーを指定することから生じる複雑さについての詳細は、 ローカル・ディスクのディレクトリーとファイルの作成について を参照してください。

prototype_file
  コピーするプロトタイプ・ファイルを保管している AFS ディレクトリーまたはローカル・ディレクトリーのを指定します。プロトタイプ・ファイル名は、pathname フィールドの最後の要素と一致しなければなりません。

  Example Corporation の例では、ディレクトリー /afs/example.com/admin/user/proto 内の .login と呼ばれるプロトタイプ・ファイルを参照します。

### E 命令による 1 行ファイルの作成

テンプレート・ファイル内の各 E 命令は、指定された単一行をテンプレート・ファイルにエコーすることによってファイルを作成します。テンプレート内では、それらの数に制限がありません。 E 命令がファイルを、新規ユーザーのホーム・ディレクトリーまたはそのサブディレクトリー内に作成する場合 (その意図された用法)、 E 命令は、親ディレクトリーを作成する V または D 命令に後続しなければなりません。uss コマンドを実行しているマシンのローカル・ディスク上にファイルを作成することは、 ローカル・ディスクのディレクトリーとファイルの作成について で詳細に説明されている理由から、お勧めできません。

F 命令もファイルを作成しますが、 2 つのタイプの命令は相補利点を持っています。E 命令で作成されたファイルは、各ユーザーに対してカスタマイズすることができます。なぜなら、ファイルのコンテンツを指定するフィールドに変数を表示できるからです。コマンド・インタープリターは、ファイルを作成する前に、変数を適切な値に置き換えます。対照的に、F 命令を使用して作成されたファイルのコンテンツは、すべてのユーザーに対して同じです。 E ファイルは、必ず単一行でなければなりませんが、 F ファイルはどのような長さでもかまいません。

E 命令は、特に、新規ユーザーに対する項目をセルの共通送信元パスワード・ファイル内で作成するのに適しています。この後、この項目は、クライアント・マシンにコピーされ、ローカル・パスワード・ファイル (/etc/passwd または同等の) としてサーブします。次のフィールドについての説明は、uss テンプレート例 の Example Corporation のフルアカウント・テンプレートにおけるこのタイプの使用例を参照しています。この方法で作成されたファイルを、どのように共通送信元パスワード・ファイルに組み込むかということについての詳細は、 共通送信元パスワード・ファイルの作成 を参照してください。

       E /afs/.example.com/common/etc/newaccts/passwd_$USER 0644 root  \
            "$USER:X:$UID:11:$NAME:$MTPT:/bin/csh"

E 命令の構文は以下のとおりです。

       E  pathname  mode_bits  owner  "contents"

ここで、

E
  ファイル作成の命令を指示します。

pathname
  作成するファイルの完全なパス名を、ファイル名付きで指定します。これは、変数を組み込むことができます。それがユーザーのホーム・ディレクトリーまたはそのサブディレクトリーに常駐している場合は、 $MTPT 変数を使用して、ホーム・ディレクトリーのパス名を指定するのが最も簡単です。$MTPT 変数が E 命令内に表示される場合、この変数は、値を、先行の V 命令の mount_point フィールドから取ります (この依存性が、なぜ E 命令が V 命令に後続しなければならないかという理由です)。

  読み取り専用のボリュームに新規ファイルを作成しようとしたことが原因の障害が起きないように、ファイルへの読み取り / 書き込みパス名を指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。このフィールドに $MTPT 変数を使用する場合、V 命令の mount_point フィールドの値は既に読み取り / 書き込みパスを示しているはずです。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、ボリュームの取り付け を参照してください。

  Example Corporation の例では、E 命令によって作成されたファイルを、以下のように新規ユーザーの名前にちなむ名前で、 /afs/.example.com/common/etc/newaccts ディレクトリーに書き込みます。

         /afs/.example.com/common/etc/newaccts/passwd_$USER

mode_bits
  ファイルの UNIX モード・ビットを定義します。許容値は、標準のアクセス権の組み合わせに対応する 3 桁または 4 桁の数字です。例 : 0755 は、rwxr-xr-x に対応し、 0644 は、rw-r--r-- に対応します。

  Example Corporation の例では、値 0644 を使用して、 passwd_user ファイル上のモード・ビットを r-xr--r-- に設定します。

owner
  UNIX の ls -l コマンドからの出力で、ファイルの所有者として指定されるユーザーのユーザー名または UID を指定します。

  ファイルが AFS 内に常駐して、ユーザーに所有される場合は、$UID 変数をこのフィールドに入れます。この後、保護サーバーは、ユーザーが、 -uid 引き数を uss add コマンドに与えるか、または、バルク入力ファイルの add命令の uid フィールドを埋めるかのいずれかを行う場合を除き、自動的に AFS UID を割り当てます。(既存の UNIX アカウントを変換する場合は、考慮事項の説明をさらに読むために、uss による既存の UNIX アカウントの変換 を参照してください。)

  ファイルがローカル・ディスク上に常駐している場合は、 uss コマンドを発行しているユーザー名または UNIX UID を指定します。別のもう１人のユーザーを指定することから生じる複雑さについての詳細は、 ローカル・ディスクのディレクトリーとファイルの作成について を参照してください。

  Example Corporation の例では、AFS ファイルを、新規ユーザーによる直接使用のためではなく、共通パスワード・ファイルに組み込むために作成しています。したがって、例では、ローカル・スーパーユーザー root を新規ファイルの所有者として指定します。 AFS ファイル上の代替所有者の指定は複雑なことではありません。AFS ファイル上で chown コマンドを発行するには system:administrators グループのメンバーであることが必要ですが、uss コマンドを発行するためには特権管理者として認証されていなければなりません。

contents
  新規ファイルに書き込む 1 行文字列を指定します。 1 つでもスペースが含まれる場合は、二重引用符で囲みます。この文字列には改行文字を含むことはできませんが、コマンド・インタープリターがファイルを作成するときに解決が可能なあらゆる標準変数を含むことができます。

  Example Corporation の例では、以下の値を contents フィールドに持って、パスワード・ファイル項目を作成します。

         $USER:X:$UID:10:$NAME:$MTPT:/bin/csh

### L および S 命令によるリンクの作成

テンプレート・ファイル内の各 L 命令は、標準の UNIX ln コマンドによって実行されたように、ハード・リンクを 2 つのファイル間に作成します。S 命令は、標準の UNIX ln -s コマンドによって実行されたように、記号リンクを 2 つのファイル間に作成します。リンクについて説明することは、この本の目的ではありませんが、両方の事例における基本的な有効性は、 2 番目の名前を既存のファイルに対して作成し、その結果、既存のファイルがどちらかの名前でアクセス可能になるということです。リンクを作成しても、ファイルの 2 番目のコピーは作成されません。

テンプレート・ファイル内の L または S 命令の数には、制限がありません。新規ユーザーのホーム・ディレクトリーかサブディレクトリー (意図的な使用) にリンクがある場合、これらの命令は親ディレクトリーを作成する V または D 命令、およびリンクされるファイルを作成する F、E、または X 命令に後続する必要があります。uss コマンドが実行しているマシンのローカル・ディスク上にファイルを作成することは、お勧めできません。お勧めできない理由については、ローカル・ディスクのディレクトリーとファイルの作成について で詳細を説明しています。

AFS は、同じディレクトリーに常駐するファイル間だけにハード・リンクを許可するということに注意してください。この制限は、2 つの潜在的に異なる ACL (2 つのディレクトリーの ACL) に、同じファイルを関連付けることから生じる混乱を除去するために必要です。記号リンクは、異なるディレクトリーに常駐する 2 つのファイル間で正当です。また、それどころか、異なるボリュームに常駐するファイル間でも正当です。実際のファイル上の ACL も同様にリンクに適用されます。

ディレクトリーまたはファイルに対して行うのとは異なり、 L または S 命令で作成されたリンク上では、所有者またはモード・ビットを設定しません。 uss コマンド・インタープリターは、自動的に uss コマンドの発行者の UNIX UID を所有者としてレコードし、モード・ビットを lrwxrwxrwx (777) に設定します。

L または S 命令内のフィールドについての以下の説明は、 uss テンプレート例 からのフルアカウント・テンプレート内の 1 つの例を引用しています。

       S /afs/example.com/public/$USER $MTPT/public

L および S 命令の構文は、以下のとおりです。

       L  existing_file  link
       S  existing_file  link

ここで、

L
  ハード・リンク作成の命令を指示します。

S
  記号リンク作成の命令を指示します。

existing_file
  既存ファイルの完全なパス名を指定します。それがユーザーのホーム・ディレクトリーまたはそのサブディレクトリーに常駐している場合は、 $MTPT 変数を使用して、ホーム・ディレクトリーのパス名を指定するのが最も簡単です。L または S命令で $MTPT 変数を使用する場合、この変数は先行する V 命令の mount_point フィールドから値を取得します (この命令が V 命令に後続しなければならないのはこの依存関係によります)。

  名前が番号記号 (#) またはパーセント記号 (%) で始まるファイルに対して、記号リンクを作成してはいけません。中身が # または % で始まるシンボリック・リンクを読み取ると、キャッシュ・マネージャーはそれを、それぞれ正規のマウント・ポイントと読み取り / 書き込み可能なマウント・ポイントとして解釈します。

  Example Corporation の例では、先行の X 命令によって作成とマウントを行われた共用読み取り可能ボリュームに対するリンクを作成します。

         /afs/example.com/public/$USER

link
  ファイルに対する 2 番目の名前の完全なパス名を指定します。それがユーザーのホーム・ディレクトリーまたはそのサブディレクトリーに常駐している場合は、 $MTPT 変数を使用して、ホーム・ディレクトリーのパス名を指定するのが最も簡単です。

  読み取り専用のボリュームに新規のリンクを作成しようとしたことが原因の障害が起きないように、リンクへの読み取り / 書き込みパス名を指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。このフィールドに $MTPT 変数を使用する場合、V 命令の mount_point フィールドの値は既に読み取り / 書き込みパスを示しているはずです。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、ボリュームの取り付け を参照してください。

  Example Corporation の例では、 public と呼ばれるリンクをユーザーのホーム・ディレクトリーに以下のように作成します。

         $MTPT/public

### A 命令によるアカウント・セキュリティーの強化

テンプレート・ファイル内のA 命令は、以下の制限をユーザーのパスワード選択および認証試行に課すことによってセルのセキュリティーを強化します。

- ユーザーのパスワード存続時間を制限する。存続時間が有効期限切れになると、ユーザーは、それ以降、認証するためにそのパスワードを使用できず、それを変更しなければなりません。
- ユーザーが最後に使用した 20 のパスワードの再使用を禁止する。
- ユーザーが認証中に誤ったパスワードを連続して入力できる回数を制限し、認証サーバーがその制限回数の超過後どれだけの間認証の試行を拒否するか (アカウント・ロックアウトと呼ばれる) を制限する。たいていのセルの正規ユーザー・アカウントの場合、お勧めするのは、制限が 9 回、ロックアウト時間が 25 分です。

A 命令内のフィールドについての以下の説明では、 uss テンプレート例 からのフルアカウント・テンプレート内の例を引用しています。この例では、パスワード存続時間を 250 日に設定し、パスワードの再使用を禁止し、認証試行の失敗回数を 9 回に制限し、この認証試行の失敗が制限回数を超えた場合、ロックアウト時間を 25 分に設定します。

       A $USER 250 noreuse 9 25

A 命令の構文は以下のとおりです。

       A  username  password_lifetime  password_reuse  failures  locktime

ここで、

A
  セキュリティー強化の命令を指示します。

username
  セキュリティー制限を課す認証データベース項目に名前を付けます。 $USER 変数を使用して、uss add コマンドの -user 引き数か、バルク入力ファイルの add 命令の username フィールドからユーザー名を読み取ります。Example Corporation の例では、この値を使用します。

password_lifetime
  ユーザーのパスワードが変更された後、それが有効であり続ける日数を設定します。パスワードが無効になる (有効期限切れになる) と、ユーザーは、認証できなくなりますが、その後 30 日間は、 kpasswd コマンドを発行してパスワードを変更できます (それ以降は、パスワードを変更できるのは、管理者だけです)。

  1 から 254 の範囲から整数を指定して、有効期限切れまでの日数を指定し、値 0 を指定して、パスワードが決して有効期限切れにならないことを指示し、または、値 $PWEXPIRES を指定して、 uss add または uss bulk コマンドの -pwexpires 引き数から日数を読み取ります。A 命令がテンプレート・ファイル内に表示されない場合、デフォルトでは、ユーザーのパスワードは決して有効期限切れになりません。

  Example Corporation の例では、250 日のパスワード存続時間を設定します。

password_reuse
  ユーザーが自分のパスワードを (kpasswd または kas setpassword コマンドを使用して) 自分が最後に使用した 20 のパスワードに似たパスワードに変更するのを、可能にするかどうかを決定する。許容値は、再使用を許可する reuse 、および再使用を禁止する noreuse です。A 命令がテンプレート・ファイル内に表示されない場合、デフォルトは、パスワードの再使用を許可します。

  Example Corporation の例では、パスワードの再使用を禁止します。

failures
  ユーザーが認証中に、誤ったパスワードを提示できる連続回数を設定します (klog コマンドまたは AFS トークンを許可するログイン・ユーティリティーを使用して)。ユーザーが制限を超過すると、認証サーバーは、 locktime フィールド内に指定された時間にわたって、以降の認証試行を拒絶します。

  1 から 254 の範囲から整数を指定して、許可される失敗回数を指定するか、または、値 0 を指定して、失敗回数に制限がないということを指示します。 A 命令がテンプレート・ファイル内に表示されない場合、デフォルトは、無制限の失敗回数を許可します。

  Example Corporation の例では、失敗試行の制限回数を 9 回に設定します。

locktime
  failures フィールド内に設定された失敗の制限回数を超過したユーザーからの認証試行を、認証サーバーがどれほど長く拒絶するかということを指定します。

  時間と分の数 (hh:mm) または分だけ (mm) を、 01 (1 分) から 36:00 (36 時間) の範囲から指定します。認証サーバーは、自動的に、36:00 よりも大きいすべての値を 36:00 に削減し、また、すべての非ゼロ値を 8.5 分の倍数で、次に高い最初の値に切り上げます。値 0 (ゼロ) により、ロックアウト時間は無限に設定されます。この場合、管理者は常に kas unlock コマンドを発行してアカウントのロックを解除しなければなりません。

  Example Corporation の例では、ロックアウト時間を 25 分に設定します。これは、25 分 30 秒 に切り上げられます (8.5 分の、次に高い倍数)。

### X 命令によるコマンド実行

テンプレート・ファイル内の X 命令は、標準の UNIX コマンド、シェル・スクリプトやプログラム、AFS コマンドなどのコマンドを実行します。コマンド文字列は、標準のテンプレート変数を組み込むことができ、 X 命令は、いくつでもテンプレート・ファイル内に表示できます。命令が、別の命令によって作成された要素を操作する場合、その要素は命令の後に表示されねばなりません。

X 命令内のフィールドについての以下の説明は、 uss テンプレート例 からのフルアカウント・テンプレート内の例を引用しています。

       X "create_public_vol $USER $1 $2"

X 命令の構文は以下のとおりです。

       X "command"

ここで、command は、実行するコマンドを指定しています。1 行文字列がスペースを含んでいる場合は、二重引用符で囲みます。コマンド文字列は、 uss コマンド・インタープリターがコマンドを適切なほかのコマンド・インタープリターに渡す前に解決するどの標準変数でも含むことができます。しかし、改行文字を含むことはできません。

Example Corporation の例では、create_public_vol と呼ばれるスクリプトを起動します。このスクリプトは、新規ユーザーと関連した別のボリュームを作成し、それを Example Corporation のファイル・スペースの共通読み取り可能部分にマウントします。

       "create_public_vol $USER $1 $2"

これは、$USER 変数を使用してユーザー名を読み取り、それをボリューム名およびマウント・ポイント名の両方の一部にします。uss コマンドの発行者は、新規ボリューム対するサイトを指定するために、 $1 変数に対して、ファイル・サーバー・マシン名を、$2 変数に対して、パーティション名を与えます。

## uss add コマンドによる個別アカウントの作成

テンプレート・ファイルを作成した後、 uss add コマンドを発行することによって、個別のアカウントを作成できます (テンプレート作成命令については、uss テンプレート・ファイルの作成を参照してください)。コマンドを発行すると、uss コマンド・インタープリターは AFS サーバーと交信して、以下の事項を行います。

- 保護データベース項目を作成する。デフォルトでは、保護サーバーは、テンプレートにおいて使用される $UID 変数の値になる AFS UID を割り当てます。
- 認証データベース項目を作成し、初期パスワードの暗号化されたバージョンをレコードする。
- 指定したテンプレートに定義されたアカウント・コンポーネントを作成し、必要に応じて、ファイル・サーバー、ボリューム・サーバー、およびボリューム・ロケーション (VL) サーバーと交信します。

異なるファイル・システム・オブジェクトを作成するために、どのタイプの命令をテンプレート内に組み込むかということを確認するには、 uss テンプレート・ファイルの作成 を参照してください。テンプレートが空の場合に、uss add コマンドを実行すると、保護データベースと認証データベース項目だけが作成されます。

uss add コマンドを発行するとき、テンプレート・ファイル内の各変数に対して、対応する引き数をコマンド行に組み込むことによって、値を与えてください。変数に対して値を与えることに失敗すると、uss コマンド・インタープリターは、空文字列と置換します。通常、これが原因で、アカウントの作成が失敗します。対応する変数がテンプレート内に表示されないコマンド行引き数を組み込むと、それは無視されます。

変数と uss add コマンドに対する引き数の間のマッピングは、表 4 に要約されています。この要約は、表 3 から適合させましたが、値をコマンド行引き数から取る変数だけを含めました。

表 4. uss テンプレート変数のコマンド行引き数の送信元

変数 | コマンド行引き数
$MTPT | -mount (V 命令に使用される場合)
$NAME | 与えられていれば -realname、それ以外の場合は -user
$PART | -partition
$PWEXPIRES | -pwexpires
$SERVER | -server
$UID | 与えられていれば -uid、それ以外の場合は保護サーバーによる自動割り当て
$USER | -user
$1 から $9 | -var

### uss add コマンドにより AFS アカウントを作成するには

1. 以下の特権のすべてを持つ AFS ID として認証します。標準構成では、admin ユーザー・アカウントがこれらすべての特権を持っています。または、またはユーザーが個人的な管理アカウントを持っている可能性があります (セルのセキュリティーを向上させるには、管理手順を実行するときだけ、特別な特権アカウントを作成して使用するとよいでしょう。詳細は、 管理権限の概要 を参照してください)。必要な場合、認証するために klog コマンドを発行します。

          % klog admin_user
          Password: admin_password

   次のリストは、必要な特権とそれを持っているかどうかの確認方法を示しています。

   - system:administrators グループのメンバーシップ。必要な場合には、pts membership コマンドを発行してください。このコマンドの詳細は、system:administrators グループのメンバーの表示 を参照してください。

            % pts membership system:administrators

   - /usr/afs/etc/UserList ファイルに組み込まれていること。必要な場合には、bos listusers コマンドを発行します。このコマンドについては、 UserList ファイルのユーザーの表示で詳しく説明しています。

            % bos listusers <machine name>

   - 認証データベース項目の `ADMIN` フラグ。ただし、認証サーバーでは、固有の認証を実行するために常にパスワードの入力のためのプロンプトを出します。以下の説明では、 uss コマンド行自体に管理識別を指定するように指示しています。
   - ユーザーのボリュームをマウントしているディレクトリーの ACL に対する i (挿入) および l (ルックアップ)アクセス権。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

            % fs listacl [<dir/file path>]

     system:administrators グループのメンバーは、a (管理)、および、デフォルトで l (検索) アクセス権を、常にすべての ACL に暗黙的に持っています。また、必要に応じて fs setacl コマンドを使用して、他の権限を付与することができます。

2. (オプション) ローカルのスーパー・ユーザー root としてログインする。このことは、新規のファイルまたはディレクトリーをローカル・ファイル・システム内に作成していて、オブジェクトが作成されるときに、代替所有者を指定したい場合にだけ必要です。これに関する問題の詳細は、ローカル・ディスクのディレクトリーとファイルの作成について を参照してください。
3. 使用しているテンプレート・ファイルの場所と機能を確認します。 uss コマンド・インタープリターがどこでテンプレートを見つけることを予期しているかということについての説明は、テンプレート・ファイルを入れる場所 を参照してください。代替パス名を与えたい場合は常に与えることができます。また、テンプレートで使用される変数に注意し、uss コマンド行で、対応する引き数を指定するようにしてください。
4. (オプション) テンプレートのあるディレクトリーへのディレクトリーを変更する。これを行うと、6 のステップでタイプしなければならないパス名のタイプに影響します。

          % cd template_directory

5. (オプション) uss add コマンドを -dryrun フラグ付きで実行して、アカウントの作成をプリビューする。エラー・メッセージに注意し、もしあれば、原因を訂正してから、このコマンドを -dryrun フラグを付けずに再発行します。次のステップでは、uss add コマンドの構文を説明します。-dryrun フラグについて詳しくは、操作のエラーおよび中断の回避と回復 を参照してください。
6. uss add コマンドを発行してアカウントを作成します。 1 つの行にコマンドを入力します。ここで、コマンドが複数行に表示されているのは、読みやすくするためです。

   uss add オペレーションによって、認証データベース項目を作成します。認証サーバーは、既存の AFS トークンを受け入れるのではなく、独自の認証を実行します。デフォルトでは、認証サーバーは、管理者のローカル (UNIX) 識別を認証します。この識別は AFS 特権管理者に対応しません。 -admin 引き数を組み込み、認証データベース項目に `ADMIN` フラグを持つ識別を指定します。項目にフラグがあることを確認するには、ADMIN フラグがオンになっていることを確認するで説明するように、kas examine コマンドを発行します。

          % uss add -user <login name>  -admin <administrator to authenticate>   \
                    [-realname <full name in quotes>] [-pass <initial passwd>]   \
                    [-pwexpires <password expires in [0..254] days (0 => never)>]  \
                    [-server <FileServer for home volume>]  \
                    [-partition <FileServer's disk partition for home volume>]  \
                    [-mount <home directory mount point>]  \
                    [-uid <uid to assign the user>]  \
                    [-template <pathname of template file>]  \
                    [-var <auxiliary argument pairs (Numval)>+] [-dryrun] \
                    [-overwrite]
           Administrator's (admin_user) password: admin_password

   ここで、

   ad
     は、add の受け入れ可能な省略形です。

   -user
     ユーザーの認証データベースおよび保護データベースの項目に名前を付けます。この名前は、ユーザー名 (ユーザーがログインする名前) になりますので、多くのオペレーティング・システムによってユーザー名 (通常、 8 つ以内の小文字を含む) に課される制約事項に従わなければなりません。また、以下の文字の使用を避けます。コロン (:)、セミコロン (;)、コンマ (,)、単価記号 (@)、スペース、改行、およびピリオド (.)。これは、一般に特殊な管理用の名前に使用します。

     この引き数は、テンプレート・ファイル内の $USER 変数に値を与えます。ユーザー名の標準化に関する提案については、 ユーザー名の選択とほかのアカウント・コンポーネントの命名を参照してください。

   -admin
     認証データベースの項目に `ADMIN`フラグを持つ、admin などの管理アカウントを指定します。 password プロンプトはアカウントを admin_user として表示します。適切なパスワードを、admin_password として入力します。

   -realname
     ユーザーの実際のフルネームを指定します。ユーザーのフルネームがスペースまたは句読点を含んでいる場合は、二重引用符で囲みます。ユーザーのフルネームを与えなければ、それは、 -user 引き数で与えられたユーザー名にデフォルトします。

     この引き数は、テンプレート・ファイル内の $NAME 変数に値を与えます。 /etc/passwd などのローカル・パスワード・ファイル内に項目を作成するための自動プロセスの一部として、この引き数と変数をどのように使用するかについて詳しくは共通送信元パスワード・ファイルの作成を参照してください。

   -pass
     ユーザーの初期パスワードを指定します。パスワードを処理する AFS コマンドは、実際には、無制限の長さの文字列を受け入れますが、 8 つまたはそれ以下の文字数のパスワードを使用するのが最良です。8つの文字数は、多くのアプリケーションやユーティリティーが受け入れる最大長です。

     初期パスワードの選択で、考えられる候補には、ユーザー名、社会保障番号などからの数字の文字列、または changeme などの標準文字列が含まれます。changemeは、この引き数を与えなかった場合のデフォルトです。テンプレート・ファイル内に、対応する変数がありません。

     ユーザーが初めて AFS で認証した後すぐに、パスワードを本当の秘密の文字列に変更することを、ユーザーに指示してください。AFS 使用者の手引き では、AFS パスワードを変更するための kpasswd コマンドの使用方法を説明しています。

   -pwexpires
     ユーザーのパスワードが変更された後、それが有効であり続ける日数を設定します。1 から 254の範囲から整数を与えて、有効期限までの日数を指定するか、または、値 0 を指定して、パスワードが決して有効期限切れにならない (この引き数を与えない場合、デフォルト) ということを指示します。パスワードが無効になる (有効期限切れになる) と、ユーザーは、認証できなくなりますが、その後 30 日間は、 kpasswd コマンドを発行してパスワードを変更できます。それ以降は、パスワードを変更できるのは、管理者だけです。

     この引き数は、テンプレート・ファイル内の $PWEXPIRES 変数に値を与えます。

   -server
     新規ユーザーのボリュームを作成するファイル・サーバー・マシンに名前を付けます。完全に修飾されたホスト名 (たとえば、fs1.example.com) を与えることが最も望ましいですが、省略形式も許容されます。ただし、uss add コマンドを発行するときに、省略形式を解決する、セルの命名サービスが使用可能でなければなりません。

     この引き数は、テンプレート・ファイル内の $SERVER 変数に値を与えます。完全に修飾されたホスト名をコマンド行にタイプしなければならないことを避けるには、 $SERVER 変数と定数 (たとえば、セルのドメイン名) とを、テンプレート・ファイル内の V 命令の server フィールドで結合します。例については、V 命令によるボリュームの作成 を参照してください。

   -partition
     ユーザーのホーム・ボリュームを作成するパーティションを指定します。これは、 -server 引き数によって名付けられたファイル・サーバー・マシン上になければなりません。パーティションをその完全な名前 (たとえば、/vicepa) によって識別するか、あるいは、 省略形と別名を使用するための規則 にリストされた省略形の 1 つを使用します。

     この引き数は、テンプレート・ファイル内の $PART 変数に値を与えます。

   -mount
     セルの読み取り / 書き込みファイル・スペース内のユーザーのホーム・ディレクトリーのパスを指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。

     この引き数は、テンプレート・ファイル内の $MTPT 変数に値を与えますが、 V 命令の mount_point フィールドに表示される値だけしか与えません。$MTPT 変数が以降の命令のどれかに表示される場合、それは、値を、この引き数から直接に取るのではなく、 V 命令の mount_point フィールドから取ります。この引き数と $MTPT 変数の使用方法についての詳細は、V 命令によるボリュームの作成 を参照してください。

   -uid
     0 (ゼロ) 以外の正の整数を指定して、ユーザーの AFS UID として割り当てます。この引き数は、省略するのが最良で、保護サーバーに `max user id` カウンターの現在値よりも 1 つだけ大きい AFS UID を割り当てるのを許可します。(カウンターを表示するには、 AFS ID カウンターを表示するに説明するように、pts listmax を使用します)

     この引き数を使用しなければならない理由がある場合 (おそらく、ユーザーがすでに UNIX UIDを所有しているので)、最初に、pts examine コマンドを使用して、どの既存アカウントも、望ましい AFS UID をまだ所有していないということを検査します。もし、所有しているアカウントが 1 つでもあれば、アカウント作成のプロセスは、エラーで終了します。

     この引き数は、テンプレート・ファイル内の $UID 変数に値を与えます。

   -template
     テンプレート・ファイルのパス名を指定します。この引き数を省略すると、コマンド・インタープリターは次の各ディレクトリー順に uss.template という名前のファイルを検索します。
     1. 現行作業ディレクトリー
     2. /afs/cellname/common/uss、ここで、cellname は、ローカル・セルに名前を付けます
     3. /etc

     uss.template 以外のファイル名を、パス名なしで指定すると、コマンド・インタープリターは、そのファイル名を求めて、指示されたディレクトリーを検索します。フルパス名または部分パス名を指定すると、コマンド・インタープリターは、指定されたファイルだけと交信します。コマンド・インタープリターでは、パス名の一部は現行作業ディレクトリーとの関連で解釈されます。

     指定されたテンプレート・ファイルが空 (ゼロ長) の場合、このコマンドは、保護および認証データベース項目だけを作成します。

     テンプレート・ファイルの構成の仕方を学ぶには、uss テンプレート・ファイルの作成 を参照してください。

   -var
     テンプレート・ファイル内に表示され得る $1 から $9 までの番号変数のそれぞれに値を指定します 番号変数を使用して、標準セットの一部ではない uss テンプレート・ファイル内の変数に値を割り当てることができます。

     この引き数の各インスタンスに対して、以下の 2 つの部分を、指示された順序で、スペースで分離して与えます。

     - テンプレート・ファイル内の変数と一致する 1 から 9 の範囲からの整数。ドル記号は、付けてはいけません。
     - 変数の値として割り当てる英数字の文字列。

     番号変数の使い方を学ぶには、 V 命令によるボリュームの作成 の V 命令の quota フィールドについての説明を参照してください。

   -dryrun
     コマンド・インタープリターがコマンドを実行する際に行うアクションを、実際には行わずに、レポートします。

   -overwrite
     ファイル・システム内に存在し、かつ、 -template 引き数によって名付けられたテンプレート・ファイル内の D、 E、F、L、または S 命令内に定義されている、ディレクトリー、ファイル、およびリンクを上書きします。このフラグを省略すると、コマンド・インタープリターは、各要素ごとにプロンプトを出して、それらのすべての要素を上書きするかどうかを尋ねます。
7. 新規ユーザーのホーム・ディレクトリーが複写されたボリュームにある場合、読み取り / 書き込みボリュームの複写 (読み取り専用ボリュームの作成) で説明されているように vos release コマンドを使用してそのボリュームをリリースしてください。

          % vos release <volume name or ID>

   注: | このステップは、ホーム・ディレクトリーの親ディレクトリー自身が複写されたボリュームのマウント・ポイントでない場合 (その方が管理しやすい) にも必要です。たとえば、Example Corporation のテンプレートがユーザー・ボリュームのマウント・ポイントを /afs/example.com/usr ディレクトリーにするとします。このディレクトリーはマウント・ポイントではなく、通常のディレクトリーであるため、/afs/example.com ディレクトリーにマウントされた root.cell ボリュームに存在します。このボリュームは複写されているため、管理者は、新規のマウント・ポイントを作成して変更を行った後で vos release コマンドを発行しなければなりません。

8. ユーザーがログインできる各 AFS クライアント・マシンのローカル・パスワード・ファイル (/etc/passwd またはそれに相当するもの) にある新規ユーザー用の項目を作成します。このステップの自動化に関する提案については、共通送信元パスワード・ファイルの作成を参照してください。

   自動化メソッドを使用しない場合でも、保護サーバーによって自動的に割り当てるか、または、-uid 引き数を使って割り当てて、ユーザーの UNIX UID を AFS UID に一致するように設定します。新規ユーザーの AFS UID は uss add 出力によって生成されるトレースに表示されますが、保護データベース項目を表示する で説明されているように pts examine コマンドを使用して表示することもできます。

## uss delete コマンドによる個別アカウントの削除

uss delete コマンドは、コマンド行に与える引き数に従って AFS ユーザー・アカウントを削除します。このコマンドは、 uss add コマンドとは違って、テンプレート・ファイルを使用しません。コマンドを発行すると、ussコマンド・インタープリターは AFS サーバーと交信して、以下の事項を行います。

- ユーザーのホーム・ボリュームに対するマウント・ポイントを削除する。
- -savevolume フラグを組み込んでいなければ、ユーザーのホーム・ボリュームと関連する VLDB 項目を削除する。
- ユーザーの認証データベース項目を削除する。
- ユーザーの保護データベース項目を削除する。

uss delete コマンドを発行する前に、以下のオプション・タスクを実行することもできます。

- ユーザーのホーム・ボリュームをテープまたは他の永久媒体にコピーして、ユーザー名および UID を予約済みリストに記録します。この情報により、ユーザーがユーザーのセルに戻った場合に、そのユーザーのアカウントを容易に復元することができます。ボリュームをバックアップする AFS バックアップ・システムの使用についての詳細は、 AFS バックアップ・システムの構成 および AFS データのバックアップと復元 を参照してください。
- ユーザーが、なにかほかのボリュームの専用使用 (たとえば、プロジェクトに関連したデータを保管するためのボリュームなど) を持っている場合、それぞれのボリュームのバックアップ・コピーを作成し、その後、ボリュームおよびそのマウント・ポイントの除去に説明するように、ボリュームおよびそのマウント・ポイントを手動で除去しなければならない。
- pts listowned 使用して、ユーザーが所有する任意のグループを表示する。ユーザーまたはグループが所有しているグループをリストするに、その説明があります。 pts delete コマンドを使用してグループを移動するか、または pts chown コマンドを使用して所有権をほかのユーザーまたはグループに転送するかを決めます。これについての説明は、保護データベース項目を削除するには および グループの所有者を変更する にあります。または、終了する前に、ユーザーにグループの所有権を削除または転送させることができます。所有者がデータベースから削除された後、保護データベースに残っているグループは、オーファンと呼ばれ、 system:administrators グループのメンバーだけがそれを管理できます。

バルク入力ファイルに exec 命令を組み込み、 uss bulk コマンドを使用してアカウントを削除することにより、これらのタスクの一部を自動化することができます。uss bulk コマンドによる複数のアカウントの作成と削除 を参照してください。

### AFS アカウントを削除するには

1. 以下の特権のすべてを持つ AFS ID として認証します。標準構成では、admin ユーザー・アカウントがこれらすべての特権を持っています。または、またはユーザーが個人的な管理アカウントを持っている可能性があります (セルのセキュリティーを向上させるには、管理手順を実行するときだけ、特別な特権アカウントを作成して使用するとよいでしょう。詳細は、 管理権限の概要 を参照してください)。必要な場合、認証するために klog コマンドを発行します。

          % klog admin_user
          Password: admin_password

   次のリストは、必要な特権とそれを持っているかどうかの確認方法を示しています。

   - system:administrators グループのメンバーシップ。必要な場合には、pts membership コマンドを発行してください。このコマンドの詳細は、system:administrators グループのメンバーの表示 を参照してください。

            % pts membership system:administrators

   - /usr/afs/etc/UserList ファイルに組み込まれていること。必要な場合には、bos listusers コマンドを発行します。このコマンドについては、 UserList ファイルのユーザーの表示で詳しく説明しています。

            % bos listusers <machine name>

   - 認証データベース項目の `ADMIN` フラグ。ただし、認証サーバーでは、固有の認証を実行するために常にパスワードの入力のためのプロンプトを出します。以下の説明では、 uss コマンド行自体に管理識別を指定するように指示しています。
   - ユーザーのホーム・ディレクトリーが存在するディレクトリーの ACL に対する d (削除) アクセス権。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

            % fs listacl [<dir/file path>]

     system:administrators グループのメンバーは、a (管理)、および、デフォルトで l (検索) アクセス権を、常にすべての ACL に暗黙的に持っています。また、必要に応じて fs setacl コマンドを使用して、他の権限を付与することができます。

2. それぞれ削除された、ユーザーのアカウント情報、所有されたグループ、およびボリュームの継続保守に関して、この機能グループの概要の部分で説明した問題を考慮し、解決する。
3. (オプション) uss delete コマンドを -dryrun フラグ付きで実行して、アカウントの削除をプリビューする。エラー・メッセージに注意し、もしあれば、原因を訂正してから、このコマンドを -dryrun フラグを付けずに再発行します。次のステップでは、uss delete コマンドの構文を説明します。
4. uss delete コマンドを発行して、アカウントを削除します。 1 つの行にコマンドを入力します。ここで、コマンドが複数行に表示されているのは、読みやすくするためです。

   削除オペレーションによって、常にユーザーの項目は認証データベースから削除されます。認証サーバーは、既存の AFS トークンを受け入れるのではなく、独自の認証を実行します。デフォルトでは、認証サーバーは、管理者のローカル (UNIX) 識別を認証します。この識別は AFS 特権管理者に対応しません。 -admin 引き数を組み込み、認証データベース項目に `ADMIN` フラグを持つ識別を指定します。項目にフラグがあることを確認するには、 ADMIN フラグがオンになっていることを確認するで説明するように、kas examine コマンドを発行します。

          % uss delete -user <login name>  \
                       -mountpoint <mountpoint for user's volume>  \
                       [-savevolume]  -admin  <administrator to authenticate>  \
                       [-dryrun]
           Administrator's (admin_user) password: admin_password

   ここで、

   d
     delete の受け入れ可能な最も短い省略形です。

   -user
     保護データベースおよび認証データベースから削除する項目に名前を付けます。

   -mountpoint
     削除するマウント・ポイント (ユーザーのホーム・ディレクトリー) のパス名を指定します。-savevolume 引き数が組み込まれていない限り、そこにマウントされたボリュームも、 VLDB からのそのレコードと同様に、それが常駐しているファイル・サーバー・マシンから削除されます。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。

     読み取り専用のボリュームからマウント・ポイントを削除しようとしたことが原因の障害が起きないように、マウント・ポイントへの読み取り /書き込みパスを指定してください。規則では、パス名の第 2 レベルのセル名の前にピリオドを付けて読み取り / 書き込みパスを示します (/afs/.example.com など)。ファイル・スペースの読み取り / 書き込みパスと読み取り専用パスの概念の詳細については、 ボリュームの取り付け を参照してください。

   -savevolume
     ユーザーのボリュームおよび VLDB 項目を保存します。

   -admin
     認証データベースの項目に `ADMIN`フラグを持つ、admin などの管理アカウントを指定します。 password プロンプトはアカウントを admin_user として表示します。適切なパスワードを、admin_password として入力します。

   -dryrun
     コマンド・インタープリターがコマンドを実行する際に行うアクションを、実際には行わずに、レポートします。
5. 削除されたユーザーのホーム・ディレクトリーが複写されたボリュームにあった場合、読み取り / 書き込みボリュームの複写 (読み取り専用ボリュームの作成) で説明されているように vos release コマンドを使用してそのボリュームをリリースしてください。

          % vos release <volume name or ID>

   注: | このステップは、ホーム・ディレクトリーの親ディレクトリー自身が複写されたボリュームのマウント・ポイントでない場合 (その方が管理しやすい) にも必要です。たとえば、Example Corporation のテンプレートがユーザー・ボリュームのマウント・ポイントを /afs/example.com/usr ディレクトリーにするとします。このディレクトリーはマウント・ポイントではなく、通常のディレクトリーであるため、/afs/example.com ディレクトリーにマウントされた root.cell ボリュームに存在します。このボリュームは複写されているため、管理者は、マウント・ポイントを削除して変更を行った後で vos release コマンドを発行しなければなりません。

6. 各クライアント・マシンのローカル・パスワード・ファイル (/etc/passwd または同等の) からユーザーの項目を削除します。AFS package ユーティリティーを使用する場合は、項目を共通送信元バージョンのファイルから除去するだけで十分です。将来、ユーザーのアカウントを再活動化する意図がある場合は、項目をコメント化するか、または、パスワード・フィールドにアスタリスク (*) を入れるほうが簡単です。

## uss bulk コマンドによる複数のアカウントの作成と削除

uss bulk コマンドを使用すると、多くのアカウントを同時に作成したり、削除したりできます。このコマンドを実行する前に、以下の事項を行わなければなりません。

- アカウントを作成しようとしている場合は、 uss add コマンドを実行する前に行わなければならないのと同様に、テンプレートを構成する。同じテンプレートが、単一の uss bulk コマンドによって作成されたすべてのアカウントに適用されます。
- バルク入力ファイルの組み立て で説明したように、アカウントの作成と削除を行い、関連したコマンドを実行する命令のバルク入力ファイルを構成する。

### バルク入力ファイルの組み立て

5 つのタイプの命令をバルク入力ファイルに組み込むことができます。つまり、 add、delete、exec、 savevolume、および delvolume です。以下に、それらの用法を説明します。

add 命令によるユーザー・アカウントの作成

各 add 命令が単一のユーザー・アカウントを作成します。したがって、基本的には、 1 つの uss add コマンドを発行するのと同じです。バルク入力ファイル内の add 命令の数には、制限がありません。

以下の構文ステートメントによって示されるように、命令のフィールドの順序は、 uss add コマンドに対する引き数の順序に一致します (コマンドの引き数によっては、対応するフィールドを持っていませんが)。 uss add コマンドの引き数のように、多くのフィールドは、 uss テンプレート・ファイル内の変数に対して値を与えます。各命令は、ファイル内で単一行でなければなりません (改行文字は、末尾だけに置けます)。ここで、改行文字が複数行に表示されているのは、ただ、読みやすくするためです。

       add username[:full_name][:initial_password][:password_expires]
       [:file_server][:partition][:mount_point][:uid]
       [:var1][:var2][:var3][:var4][:var5][:var6][:var7][:var8][:var9][:]

各フィールドにおける許容値については、AFS Administration Reference の uss バルク入力ファイルの参照ページか、uss add コマンドにより AFS アカウントを作成するにはの uss add コマンドの対応する引き数の説明を参照してください。いくつかの基本事項を以下に掲げます。

- 行を文字列 add だけで開始する。uss add ではない。
- 最初の引き数 username だけが必要。この引き数は、uss add コマンドに対する -user引き数に対応します。
- uss add コマンドに対する -realname 引き数の値は、二重引用符で囲まなければならないが、full_name 値を二重引用符で囲ってはいけない。
- 引き数に対する値を省略する場合は、間に何も入っていない 2 つのコロンで空のフィールドを指示する。対応するコマンド行引き数がオプションであるか、または対応する変数がテンプレート・ファイル内に表示されない場合は、フィールドを空のままにしておくことができます。最後のフィールド以外で実際の値を割り当てるすべてのフィールドには、値を与えるか、空のフィールドを指示するかしなければなりません。値を割り当てた最後のフィールドより後に空のフィールドを指示してもかまいませんが、必要ではありません。
- 最後のフィールドの後、行をコロンと改行文字 (<Return>)か、または改行だけで終了する。
- 最後の 9 つのフィールドは、番号変数 ($1 から $9) に値を割り当てるためのフィールドであり、昇順でリストされている。変数番号ではなく、値だけを指定します。

delete 命令によるユーザー・アカウントの削除

各 delete 命令が単一のユーザー・アカウントを削除します。したがって、基本的には、1 つの uss delete コマンドを発行するのと同じです。バルク入力ファイル内の delete 命令の数には、制限がありません。

表示画面上では、複数の行にわたることがありますが、バルク入力ファイル内のすべての命令と同様に、各 delete 命令は、ファイル内で単一行でなければなりません (改行文字は、末尾だけに置けます)。中括弧 ({ }) は、相互に排他的な 2 つの選択項目を示します。

          delete username:mount_point_path[:{ savevolume | delvolume }][:]

各フィールドにおける許容値については、AFS Administration Reference の uss バルク入力ファイルの参照ページか、 AFS アカウントを削除するには の uss delete コマンドの対応する引き数の説明を参照してください。いくつかの基本事項を以下に掲げます。

- 行を文字列 delete だけで開始する。uss delete ではない。
- 最初の 2 つの引き数 username および mount_point_path が必要。これらは、uss delete コマンドに対する -user および -mountpoint 引き数に対応します。
- 3 番目のフィールドは、オプションであるが、ユーザーのホーム・ボリュームを、常駐しているファイル・サーバーから、対応する VLDB 項目と一緒に除去するかどうかを制御する。以下の 3 つの値が可能です。
  - 支配的なデフォルトに従って、ボリュームおよび VLDB 項目を処理する値がない。この支配的なデフォルトは、テンプレート・ファイル内の先行している savevolume または delvolume 命令によって確立される。デフォルトの設定方法については、それらの命令についての次の説明を参照してください。
  - 文字列 savevolume は、デフォルトを上書きして、ボリュームおよび VLDB 項目を保存する。
  - 文字列 delvolume は、デフォルトを上書きして、ボリュームおよび VLDB 項目を除去する。
- 最後のフィールドの後、行をコロンと改行文字 (<Return>)か、または改行だけで終了する。

exec 命令によるコマンドまたはスクリプトの実行

exec 命令は、指示された AFS コマンド、コンパイル・プログラム、または UNIX シェル・スクリプトかコマンドを実行します。コマンド・プロセッサーは、uss bulk コマンドの発行者について、 AFS およびローカルの識別を想定します。このコマンドの発行者は、そのコマンドを実行するのに必要な特権を持っているはずです。

この命令の構文は、以下のとおりです。

       exec command

command 文字列を二重引用符 (" ") またはほかの区切り文字で囲む必要はありません。

delvolume および savevolume 命令によるボリュームのデフォルト処理の設定

savevolume および delvolume 命令は、バルク入力ファイル内で後続する delete 命令によって参照されたボリュームのデフォルト処理を設定します。それらの構文は、以下のとおりです。

       savevolume
       delvolume

両方の命令は、オプションであり、引き数も取りません。バルク入力ファイル内にどちらも表示されない場合、デフォルトによって、 delete 命令によって参照されたすべてのボリュームと VLDB 項目が除去されます。ファイルに savevolume 命令がある場合、この命令はファイル内の以降のすべての delete 命令によって参照されたボリュームと VLDB 項目の除去を防止します。delvolume 命令は、以降の delete 命令に対して明示的にデフォルト (削除) を設定します。

どちらの命令の効力も、バルク入力ファイルが終了するまでか、またはその反対の命令が表示されるまで続きます。特定の delete 命令に対する支配的デフォルトを上書きするには、 savevolume または delvolume 文字列を命令の 3 番目のフィールドに書き込みます。 (また、savevolume と delvolume 命令の複数のインスタンスを使用して、デフォルトの削除とボリューム保存を交互に切り替えることができます。)

### バルク入力ファイル命令の例

認証専用のアカウントを作成するには、次の例のように最初の (username) 引き数だけを組み込んで add 命令を使用します。ユーザーの実名は、ユーザー名 (anderson) に一致するように設定され、初期パスワードは、文字列 changeme に設定されます。

       add anderson

また、以下の例も認証専用のアカウントを作成しますが、実名および初期パスワードに対して非デフォルト値を設定します。

       add smith:John Smith:js_pswd

次の 2 つの add 命令の例では、Example Corporation セル (example.com) の管理者が次の V 命令を含む uss テンプレート・ファイルを作成していることが必要となります。

       V user.$USER $SERVER.example.com /vicep$PART 10000 /afs/.example.com/usr/$3/$USER \
           $UID $USER all

販売部の John Smith と、財務部の Pat Jones の ２ 人のユーザーに対してアカウントを作成するには、バルク入力ファイル内の適切な add 命令は、以下のとおりです。

       add smith:John Smith:::fs1:a:::::marketing
       add jones:Pat Jones:::fs3:c:::::finance

Smith に対する新規アカウントは、smith と呼ばれる、保護および認証データベース項目で構成されています。彼の初期パスワードは、デフォルトの文字列 changeme であり、保護サーバーが彼の AFS UID を生成します。彼のホーム・ボリュームは user.smith という名前で、10,000 KB の割り当て量を持ち、ファイル・サーバー・マシン fs1.example.com のパーティション /vicepa 上に存在し、 /afs/.example.com/usr/marketing/smith にマウントされています。V 命令の末尾の $UID $USER all の部分が、彼に自分のホーム・ディレクトリーの所有権およびその ACL 上のすべてのアクセス権を与えています。jones のアカウントも同様ですが、ファイル・サーバー・マシン fs3.example.com のパーティション /vicepc に存在し、/afs/.example.com/usr/finance/jones にマウントされている点だけが異なります。

mount_point、uid、var1、および var2 に対応するフィールドが空 (最初の例の値 `a` と `marketing` の間) になることに注意してください。これは、テンプレート・ファイルの V命令に対応する値が与えられていないからです。initial_passwd フィールドと password_expires フィールドも空になります。

お望みならば、add 命令内の 9 つすべての番号変数に対して、値または空のフィールドを指定できます。その場合、バルク入力ファイル命令は次のようになります。

       add smith:John Smith:::fs1:a:::::marketing::::::
       add jones:Pat Jones:::fs3:c:::::finance::::::

以下の例は、いくつかの delete 命令と savevolume 命令を持ったバルク入力ファイルの機能グループです。最初の 3 つの命令が savevolume 命令の前に表示され、それらの 3 番目のフィールドがブランクであるので、対応するボリュームと VLDB 項目が除去されます。terry に対する delete 命令が savevolume 命令に後続しています。したがって、彼女のボリュームは、除去されません。しかし、 johnson に対するボリュームは、除去されます。なぜなら、delete 命令の 3 番目のフィールド内の delvolume 文字列が現行のデフォルトを上書きするからです。

       delete smith:/afs/example.com/usr/smith
       delete pat:/afs/example.com/usr/pat
       delete rogers:/afs/example.com/usr/rogers
       savevolume
       delete terry:/afs/example.com/usr/terry
       delete johnson:/afs/example.com/usr/johnson:delvolume

以下の exec 命令の例は、セットの add 命令とセットの delete 命令の間の区切り記号として有用です。この命令は、uss bulk コマンドの進行について知らせてくれるメッセージを標準出力ストリーム上に生成します。

       exec echo "Additions completed; beginning deletions..."

### 複数の AFS ユーザー・アカウントの作成と削除を行うには

1. 以下の特権のすべてを持つ AFS ID として認証します。標準構成では、admin ユーザー・アカウントがこれらすべての特権を持っています。または、またはユーザーが個人的な管理アカウントを持っている可能性があります (セルのセキュリティーを向上させるには、管理手順を実行するときだけ、特別な特権アカウントを作成して使用するとよいでしょう。詳細は、 管理権限の概要を参照してください)。必要な場合、認証するために klog コマンドを発行します。

          % klog admin_user
          Password: admin_password

   次のリストは、必要な特権とそれを持っているかどうかの確認方法を示しています。

   - system:administrators グループのメンバーシップ。必要な場合には、pts membership コマンドを発行してください。このコマンドの詳細は、system:administrators グループのメンバーの表示 を参照してください。

            % pts membership system:administrators

   - /usr/afs/etc/UserList ファイルに組み込まれていること。必要な場合には、bos listusers コマンドを発行します。このコマンドについては、 UserList ファイルのユーザーの表示で詳しく説明しています。

            % bos listusers <machine name>

   - 認証データベース項目の `ADMIN` フラグ。ただし、認証サーバーでは、固有の認証を実行するために常にパスワードの入力のためのプロンプトを出します。以下の説明では、 uss コマンド行自体に管理識別を指定するように指示しています。
   - 各ボリューム・マウント・ポイントの親ディレクトリーの ACL に対する d (削除)、 i (挿入) および l (ルックアップ) アクセス権。必要に応じて、fs listacl コマンドを発行します。これについては、ACL の表示 で詳しく説明しています。

            % fs listacl [<dir/file path>]

     system:administrators グループのメンバーは、a (管理)、および、デフォルトで l (検索) アクセス権を、常にすべての ACL に暗黙的に持っています。また、必要に応じて fs setacl コマンドを使用して、他の権限を付与することができます。

2. (オプション) ローカル・スーパーユーザー root としてログインしている。このことは、新規のファイルまたはディレクトリーをローカル・ファイル・システム内に作成していて、オブジェクトが作成されるときに、代替所有者を指定したい場合にだけ必要です。これに関する問題の詳細は、ローカル・ディスクのディレクトリーとファイルの作成について を参照してください。
3. バルク入力ファイルが add 命令を組み込む場合は、使用しているテンプレート・ファイルの場所と機能を確認します。uss コマンド・インタープリターがどこでテンプレートを見つけることを予期しているかということについての説明は、テンプレート・ファイルを入れる場所 を参照してください。代替パス名を与えたい場合は常に与えることができます。また、テンプレートにどの変数が表示されるかに注意し、add 命令または uss bulk コマンド行に、対応する引き数を与えるようにしてください。
4. バルク入力ファイルの組み立て 内の規則に従ったバルク入力ファイルを作成する。これから使用しようとしているテンプレートと同じディレクトリーにファイルを書き込むと、最も簡単です。
5. (オプション) バルク入力ファイルおよびテンプレート・ファイルが常駐するディレクトリーに変更する。

          % cd template_directory

6. uss bulk コマンドを発行して、アカウントを作成または削除 (あるいはその両方) する。1 つの行にコマンドを入力します。ここで、コマンドが複数行に表示されているのは、読みやすくするためです。

   バルク・オペレーションは、常に認証データベースのユーザー項目を操作します。認証サーバーは、既存の AFS トークンを受け入れるのではなく、独自の認証を実行します。デフォルトでは、認証サーバーは、管理者のローカル (UNIX) 識別を認証します。この識別は AFS 特権管理者に対応しません。 -admin 引き数を組み込み、認証データベース項目に `ADMIN` フラグを持つ識別を指定します。項目にフラグがあることを確認するには、ADMIN フラグがオンになっていることを確認するで説明するように、kas examine コマンドを発行します。

          % uss bulk <bulk input file>  \
                     [-template <pathname of template file>]  \
                     -admin <administrator to authenticate>  \
                     [-dryrun] [-overwrite]  \
                     [-pwexpires <password expires in [0..254] days (0 => never)>]  \
                     [-pipe]
           Administrator's (admin_user) password: admin_password

   ここで、

   b
     は、bulk の受け入れ可能な省略形です。

   bulk input file
     バルク入力ファイルのパス名を指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。必要なファイル形式の説明については、バルク入力ファイルの組み立て を参照してください。

   -template
     バルク入力ファイル内に表示される uss add コマンドに対するテンプレート・ファイルのパス名を指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。必要なファイル形式の説明については、uss テンプレート・ファイルの作成 を参照してください。

   -admin
     認証データベースの項目に `ADMIN`フラグを持つ、admin などの管理アカウントを指定します。 password プロンプトはアカウントを admin_user として表示します。適切なパスワードを、admin_password として入力します。

   -dryrun
     コマンド・インタープリターがコマンドを実行する際に行うアクションを、実際には行わずに、レポートします。

   -overwrite
     ファイル・システム内に存在し、かつ -template 引き数によって指定されたテンプレート・ファイル内の D、E、F、L、または S 命令の対象となっているディレクトリー、ファイル、およびリンクを上書きします。このフラグが省略されると、コマンド・インタープリターは、バルク入力ファイル内の各 add 命令に対して、そのような要素を上書きすべきかどうかを確認するために、プロンプトを出します。バルク入力ファイルが add 命令を含んでいない場合は、このフラグを組み込まないでください。

   -pwexpires
     バルク入力ファイル内の add 命令によって名付けられた各ユーザーに対して、ユーザーのパスワードが変更された後、有効であり続ける日数を設定します。1 から 254 の範囲から整数を与えて、有効期限までの日数を指定するか、または、値 0 を指定して、パスワードが決して有効期限切れにならない (デフォルト) ということを指示します。

     パスワードが無効になる (有効期限切れになる) と、ユーザーは、認証できなくなりますが、その後 30 日間は、 kpasswd コマンドを発行してパスワードを変更できます (それ以降は、パスワードを変更できるのは、管理者だけです)。

   -pipe
     -admin 引き数によって名付けられた発行者またはユーザーのパスワードに対して、認証サーバーのプロンプトを抑制します (認証サーバーは、常に、認証データベース内で項目を作成または削除しているユーザーを別々に認証します)。その代わり、コマンド・インタープリターは、パスワードを別のプログラムからのパイプ入力として受け入れ、 uss bulk コマンドを不在バッチ・ジョブで実行することを可能にします。
7. 新規作成または削除されたユーザーのホーム・ディレクトリーが複写されたボリュームにある場合、 読み取り / 書き込みボリュームの複写 (読み取り専用ボリュームの作成) で説明されているように vos release コマンドを使用してそのボリュームをリリースしてください。

          % vos release <volume name or ID>

   注: | このステップは、ホーム・ディレクトリーの親ディレクトリー自身が複写されたボリュームのマウント・ポイントでない場合 (その方が管理しやすい) にも必要です。たとえば、Example Corporation のテンプレートがユーザー・ボリュームのマウント・ポイントを /afs/example.com/usr ディレクトリーにするとします。このディレクトリーはマウント・ポイントではなく、通常のディレクトリーであるため、/afs/example.com ディレクトリーにマウントされた root.cell ボリュームに存在します。このボリュームは複写されているため、管理者は、マウント・ポイントを作成または削除して変更を行った後で vos release コマンドを発行しなければなりません。

8. アカウントを作成する場合は、ユーザーがログインできる各 AFS クライアント・マシンのローカル・パスワード・ファイル (/etc/passwd またはそれに相当するもの) にある新規ユーザー用の項目を作成します。このステップの自動化に関する提案については、共通送信元パスワード・ファイルの作成を参照してください。

   自動化メソッドを使用しない場合でも、保護サーバーによって自動的に割り当てるか、または、-uid 引き数を使って割り当てて、ユーザーの UNIX UID を AFS UID に一致するように設定します。新規ユーザーの AFS UID は uss add 出力によって生成されるトレースに表示されますが、保護データベース項目を表示する で説明されているように pts examine コマンドを使用して表示することもできます。

9. アカウントを削除する場合は、各クライアント・マシンのローカル・パスワード・ファイル (/etc/passwd または同等の) からユーザーの項目を削除します。 AFS package ユーティリティーを使用する場合は、項目を共通送信元バージョンのファイルから除去するだけで十分です。将来、ユーザーのアカウントを再活動化する意図がある場合は、項目をコメント化するか、または、パスワード・フィールドにアスタリスク (*) を入れるほうが簡単です。

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

(C) IBM Corporation 2000. All Rights Reserved