__check_resource_auth_np() - MVS リソースへのアクセスの判別

標準

標準/拡張機能 C/C++ 依存項目
z/OS®UNIX 両方  

形式

#include <unistd.h>

int __check_resource_auth_np( char *principal_uuid,
                              char *cell_uuid,
                              char *userid,
                              char *security_class,
                              char *entity_name,
                              int access_type);

機能説明

__check_resource_auth_np() 関数は、MVS™ リソースへのユーザーの アクセス権を調べるときに使用します。

この関数の使用許可を得るには、BPX.SERVER 機能クラスに対する 読み取り許可が呼び出し元にあるか、または BPX.SERVER が定義 されていない場合には、呼び出し元がスーパーユーザー (UID=0) であること が必要です。

ユーザー識別は、いくつかの形式で指定することができます。識別は以下の順序で走査され、アクセス・チェックは 検出された最初の識別で行われます。
  • ユーザー ID
  • プリンシパル UUID、およびセル UUID (既知の場合)
  • 呼び出し元のスレッド・レベル (タスク) セキュリティー・ コンテキスト (存在する場合)
  • 呼び出し元のプロセス・レベル (アドレス・スペース) ・セキュリティー・ コンテキスト
注:
  • 呼び出し元が識別を何も指定しないときに、SURROGATE (パスワード なし) クライアント用に pthread_security_np() で作成された ACEE が 呼び出し元のタスクにある場合、リソースに許可されるアクセスのタイプを判別 する際に、タスク・レベル ACEE とアドレス・スペース・レベル ACEE の両方が 使用されます。
  • __check_resource_auth_np() 関数は、一般リソースのみをサポートします。 特に、security_class パラメーターには、DATASET を指定できません。RACF® を使用するシステムの場合、指定されるクラス名が RACF クラス記述子テーブル内にある必要があります。
サポートされるパラメーターは次のとおりです。
principal_uuid
36 バイトのプリンシパル UUID を指定します。NULL の値は、プリンシパル UUID が指定されていない ことを示します。
cell_uuid
36 バイトのセル UUID を指定します。NULL の値は、セル UUID が指定されていないことを示します。
userid
ユーザー ID を指定します。NULL の値は、ユーザー ID が指定されて いないことを示します。userid の長さは 1 ~ 8 文字にしなければなりません。
セキュリティー・クラス
リソースのクラス名を指定します。アクセス・チェックが、このセキュリティー・クラスのリソースについて行われます。security_class の長さは 1 ~ 8 文字にしなければ なりません。
entity_name
リソース・プロファイル名を指定します。アクセス・チェックが、リソース・プロファイル名で指定されたリソースについて行われます。entity_name の長さは 1 ~ 246 文字に しなければなりません。
access
検査対象のアクセス・タイプを識別する数値を指定します。使用できるアクセス値は以下のとおりです。
__READ_RESOURCE
指定されたユーザーに、リソースへの読み取りアクセスが あるかどうかを調べる。
__UPDATE_RESOURCE
指定されたユーザーに、リソースへの更新アクセスが あるかどうかを調べる。
__CONTROL_RESOURCE
指定されたユーザーに、リソースへの制御アクセスが あるかどうかを調べる。
__ALTER_RESOURCE
指定されたユーザーに、リソースへの変更アクセスが あるかどうかを調べる。

戻り値

正常に実行された場合、__check_resource_auth_np() は、0 を戻します。

正常に実行されなかった場合、__check_resource_auth_np() は -1 を戻して、errno を次のいずれかの値に設定します。
エラー・コード
説明
EINVAL
次のエラーのいずれかが検出されました。
  • 指定された Aaccess_type が未定義です。
  • ユーザー ID の長さが 1 ~ 8 文字ではありません。
  • Security_class の長さが 1 ~ 8 文字ではありません。
  • Eentity_name の長さが 1 ~ 246 文字ではありません。
EMVSERR
MVS の内部または環境エラーが発生しました。
EMVSSAF2ERR
次のエラーのいずれかが検出されました。
  • セキュリティー・プロダクトに対して 予期しない戻りコードを受け取りました。
  • セキュリティー・プロダクトが入力パラメーターでエラーを検出されました。
  • セキュリティー・プロダクトで内部エラーが発生しました。
ENOSYS
次のエラーのいずれかが検出されました。
  • セキュリティー・プロダクトがシステムに インストールされていません。
  • セキュリティー・プロダクトがこの関数をサポートしていません。
EPERM
次のエラーのいずれかが検出されました。
  • 呼び出し元は、このサービスを使う許可を受けていません。
  • リソースに指定された access_type を持っていません。
  • 無許可のライブラリーからのロードが行われた アドレス・スペースでの使用を許可されていません。
ESRCH
次のエラーのいずれかが検出されました。
  • UUID と Userid の間にマッピングが存在しません。
  • 指定されたリソースが、セキュリティー・プロダクトに 定義されていません。
  • DCEUUIDS クラスがアクティブではありません。
  • ユーザー ID がセキュリティー・プロダクトに定義されていません。

関連情報