標準
標準/拡張機能 |
C/C++ |
依存項目 |
z/OS®UNIX |
両方 |
OS/390 V2R6 |
形式
#define _OPEN_SYS
#include <unistd.h>
int __login(int function_code,
int identity_type,
int identity_length,
void *identity,
int pass_length,
char *pass,
int certificate_length,
char *certificate,
int option_flags);
int __login_applid(int function_code,
int identity_type,
int identity_length,
void *identity,
int pass_length,
char *pass,
int certificate_length,
char *certificate,
int option_flags,
const char *applid);
機能説明
__login() 関数は、プロセスがその識別を変更する方法を提供します。プロセスはアドレス・スペース識別とは別の識別を持つことになり、プロセスの
新しいセキュリティー環境が作成されます。プロセスが変更されたあとは、以前の識別およびセキュリティー環境に戻りません。
次の規則が適用されます。
- 単一スレッド・プロセスは、__login を発行して、そのセキュリティー環境を変更
できます。
- プロセスがマルチプロセッシング環境またはマルチユーザー環境にあって、
プロセスに関連付けられたタスク・レベルのセキュリティーがない場合は、
新しいセキュリティー環境がプロセスに関連付けられます。
- プロセスがマルチプロセッシング環境またはマルチユーザー環境にあって、
プロセスに関連付けられたタスク・レベルのセキュリティーがある場合、
古いセキュリティー環境が新しいセキュリティー環境で置き換えられます。
__login_applid() 関数は、__login() と等価の
機能に加えて、アプリケーション ID (APPLID) の
指定も可能にする機能があります (アプリケーション ID はセキュリティー製品に渡されて
認証を支援します)。これは、例えば、パスチケットが提供されていて、
パスチケットが USERID/APPLID の組み合わせで作成されたような状況で有用です。
applid が NULL であるか、NULL を指すポインターである場合、セキュリティー製品
にアプリケーション ID は渡されません。
この関数は、以下のパラメーターをとります。
- パラメーター
- 説明
- function_code
- 関数を指定します。unistd.h ヘッダー・ファイル内で定義されている
__LOGIN_CREATE を指定して、呼び出し元プロセス用のプロセス・レベルの
セキュリティー環境を作成します。
- identity_type
- *identity で提供されているユーザー識別の形式を指定します。
unistd.h ヘッダー・ファイルで定義されている __LOGIN_USERID を
指定します。ユーザー ID 識別は 1 ~ 8 文字のユーザー ID 形式であり、入力として
渡されます。
- identity_length
- identity_type で定義されている identity の
長さを指定します。
- *identity
- identity_type で定義されているユーザー識別を指定します。
- pass_length
- pass で定義されるパスワード、
パスチケット、またはパスワード・フレーズの長さを指定します。
- *pass
- ユーザー・パスワード、パスチケット、またはパスワード・フレーズを
指定します。
- certificate_length
- 現在は使用されないため、ゼロに設定する必要があります。
- certificate
- 現在は使用されないため、ボイドを指す必要があります。
- option_flags
- 要求を調整する場合に使用するオプションを指定します。0 に設定する
必要があります。
- applid
- セキュリティー製品での認証に使用されるアプリケーション ID を
指定します。
使用上の注意
- __login() サービスの意図するところは、アドレス・スペース識別とは
別のものになるように、プロセスにその識別を変更する方法を提供する
ことです。プロセスは終了するか新しいユーザー ID を選択しますが、元の識別には戻りません。ユーザーは
元のユーザー ID を使って __login() を再発行することはできますが、タスクはそれ自身のセキュリティー環境を保持し、アドレス・スペース・レベルで
セキュリティー環境を共用しません。
- マルチプロセッシング環境またはマルチユーザー環境をサポートするセキュリティー製品
がインストールされ、作動可能になっている必要があります。
戻り値
正常に実行された場合、__login() は 0 を戻します。
正常に実行されなかった場合、__login() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EACCES
- 許可が拒否されました。
- EINVAL
- パラメーターが無効です。例えば、applid の長さが 8 バイトを超えています。
- EMVSERR
- MVS™ 環境エラーまたは内部エラーが発生しました。
- EMVSEXPIRE
- 指定したリソースのパスワード、パスチケット、またはパスワード・フレーズの
有効期限が切れています。
- EMVSSAF2ERR
- セキュリティー・プロダクトでエラーが発生しました。ユーザー ID が取り消されているか、またはこのアプリケーションを
使用することができません。
- ENOSYS
- 関数がインプリメントされていません。
- EPERM
- 操作が許可されていません。呼び出しプロセスに
BPX.DAEMON 機能クラスの許可がない可能性があります。この関数は、非制御ライブラリーからロードされるアドレス・スペースでは
サポートされていません。必要なパスワードまたはパスチケット、あるいはパスワード・フレーズが
指定されていませんでした。
- ESRCH
- この USERID を OMVS プロセスにすることはできません。指定された
ユーザー ID は、セキュリティー製品に定義されていないか、OMVS セグメントが定義されていません。