新しいジョブの権限を設定する
新しいファイルまたはプログラムを作成する場合、新しいオブジェクトに権限を指定するオプションがあります。しかし、通常その権限は指定しません。ジョブ作成に使用した各 CL コマンドには、新しいオブジェクトの権限を指定するのに使用するパラメーター、Authority (AUT) があります。我々のほとんどは、AUT パラメーターを目にすることさえありません。CRTxxx コマンドのプロンプトを出すことが滅多にないためです。CRTxxx コマンドのプロンプトを出す場合でも、通常 AUT パラメーターは数あるパラメーターの中でも一番最後にあるパラメーターです。プロンプトでそこまで見ることは滅多にありません。
ほとんどすべてのオブジェクト・タイプについて、CRTxxx コマンドはデフォルト値 AUT(*LIBCRTAUT) を使用します。この値 *LIBCRTAUT は、新しいオブジェクトが作成されているライブラリーに基づいたオブジェクト権限を割り当てるように指定されます。したがって、ライブラリーの CRTAUT 値に応じて、あるライブラリーでは、値 *LIBCRTAUT は AUT(*CHANGE) を、別のライブラリーでは、AUT(*EXCLUDE) を意味する場合があります。
ライブラリー (CRTLIB、CHGLIB) を作成または変更する場合、ライブラリーを作成するこのコマンドに示すように、パラメーターの 1 つは Create Authority (CRTAUT) です。
CRTLIB LIB(MYLIBRARY) CRTAUT(*EXCLUDE)
ライブラリーの CRTAUT 値が *EXCLUDE の場合、ライブラリー内で作成された新しいオブジェクトは、ライブラリーの CRTAUT に基づいて *PUBLIC AUT(*EXCLUDE) に設定されます。
CRTxxx コマンドのデフォルト値 AUT(*LIBCRTAUT) を受け付ける必要はありません。データ域を作成する以下のコマンドに示すように、必要に応じてオブジェクトの権限を指定できます。
CRTDTAARA DTAARA(MYLIBRARY/MYDATA) TYPE(*CHAR) LEN(100) AUT(*USE)
ここで MYLIBRARY の CRTAUT 値は考慮しておらず、データ域には *PUBLIC AUT(*USE) 権限が割り当てられています。
ライブラリーの CRTAUT パラメーターの値を設定する場合、次の Change Library (CHGLIB) コマンドに示すように、許可リストの名前を割り当てることができます。
CHGLIB LIB(MYLIBRARY) CRTAUT(MYAUTL)
新しいオブジェクトがライブラリーで作成されたら、MYAUTL 許可リストで新しいオブジェクトは保護されます。AUT(*LIBCRTAUT) の CRTxxx コマンドのデフォルト値を受け入れるか、AUT(MYAUTL) を指定していることを前提としています。
新規作成されたオブジェクトの権限を割り当てる場合に許可リストを使用することにより、優れた柔軟性が与えられます。*PUBLIC 権限の割り当てだけに限定されず、許可リストを使用している場合は、オブジェクト作成時にすべての専用権限をオブジェクトに割り当てることができます。
権限を新しいオブジェクトに割り当てる場合に唯一分かることは、オブジェクトは作成者または作成者の 1 次グループ・プロファイルにより所有されるということです。所有者には新しいオブジェクトへの *ALL 権限があります。特に新しいオブジェクトを許可リストで保護している場合は、これは必要ないと思われるでしょう。この場合、新しいオブジェクトの所有権を再割り当てする方法を開発する必要があります。
オブジェクトの作成者や所有者が、そのオブジェクトへの明確な権限を持っていない場合に、新規作成オブジェクトに本当に必要な権限を設定する最適な方法があれば、お聞きしたいと思います。
私としては、ほとんどのオブジェクトは「所有している」プロファイルにより所有されるべきだと考えます。そのプロファイルの唯一の存在意義は、オブジェクトを所有することだけです。例えば、ユーザー・プロファイル PRODOWNER を作成します。実動オブジェクトの所有者として PRODOWNER を割り当てます。この所有プロファイル PRODOWNER はグループ・プロファイルではありません。単にオブジェクトを所有するためのプロファイルに過ぎません。
これは、実際誰かが、PRODOWNER ではなく自分 (またはその 1 次グループ) を所有者にする新しいオブジェクトを作成するまで効果があります。
すべての Create コマンドに OBJOWNER パラメーターがあれば素晴らしいでしょう。その場合、「Library Default Object Owner」のライブラリー属性に基づいて新しいオブジェクトの所有権を割り当てる OBJOWNER(*LIBOBJOWN) のようなパラメーターを指定できるでしょう。ところが悲しいことに、これら新規作成オブジェクトを正しく設定するには、その所有権を改造しなければならないでしょう。