標準
標準/拡張機能 |
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 がセキュリティー・プロダクトに定義されていません。