特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは API: QSYCUSRS を使ってユーザーの特殊権限を検査する方法を
紹介する。
ユーザー特殊権限の検査 ( QSYCUSRS )
パラメータ
必須パラメータ・グループ:
1. | 権限標識 | 出力 | Char(1) |
2. | ユーザー・プロフィール名 | 入力 | Char(10) |
3. | 特殊権限 | 入力 | Char(*) |
4. | 権限の数 | 入力 | Binary(4) |
5. | 呼び出しレベル | 入力 | Binary(4) |
6. | エラー・コード | 入出力 | Char(*) |
QSYCUSRSはユーザーが指定された特殊権限を持っているかどうかを検査します。
権限標識
Y | ・・・・・・ | ユーザーは、指定された特殊権限を所有している。 |
N | ・・・・・・ | ユーザーは、指定された特殊権限を所有していない。 |
ユーザー・プロフィール名
特殊値 *CURRENT | ・・・・・・ | 現在、実行中のユーザー |
特殊権限
検査する特殊権限を一個または、複数個(最大8個まで)指定することができます。
それぞれ 10 文字のフィールドの配列として指定します。
*ALLOBJ |
・・・・・・ | すべてのオブジェクト特殊権限 |
*AUDIT |
・・・・・・ | 監査特殊権限 |
*IOSYSCFG |
・・・・・・ | 入出力システム構成の特殊権限 |
*JOBCTL |
・・・・・・ | ジョブ制御特殊権限 |
*SAVSYS |
・・・・・・ | システム保管特殊権限 |
*SECADM |
・・・・・・ | 機密保護管理者特殊権限 |
*SERVICE |
・・・・・・ | 保守特殊権限 |
*SPLCTL |
・・・・・・ | スプール制御特殊権限 |
権限の数
特殊権限パラメータで指定されている権限の数。
呼び出しレベル
通常は 1 を指定する
【 TESTAUT: *SECADM を検査するCLPサンプル・ソース 】
0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* TESTAUT : ユーザー特殊権限の検査 */ 0004.00 /* */ 0005.00 /* API: QSYCUSRS を使ってユーザーの特殊権限を */ 0006.00 /* 調査する。 */ 0007.00 /*---------------------------------------------------------*/ 0008.00 DCL VAR(&USER) TYPE(*CHAR) LEN(10) 0009.00 DCL VAR(&TOKSHU) TYPE(*CHAR) LEN(1) 0010.00 DCL VAR(&AUTSU) TYPE(*CHAR) LEN(4) + 0011.00 VALUE(X'00000001') 0012.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(80) 0013.00 DCL VAR(&APIERR) TYPE(*CHAR) LEN(4) + 0014.00 VALUE(X'00000000') /* 2 進数 */ 0015.00 DCL VAR(&LVL) TYPE(*CHAR) LEN(4) VALUE(X'00000001') 0016.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0017.00 0018.00 RTVJOBA USER(&USER) 0019.00 CALL PGM(QSYS/QSYCUSRS) PARM(&TOKSHU &USER + 0020.00 '*SECADM ' &AUTSU &LVL &APIERR) 0021.00 IF COND(&TOKSHU *EQ 'N') THEN(DO) 0022.00 CHGVAR VAR(&MSG) VALUE(' ユーザー ' *CAT &USER + 0023.00 *TCAT ' には *SECADM 権限がありません。 ') 0024.00 GOTO SNDMSG 0025.00 ENDDO 0026.00 RETURN 0027.00 0028.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) 0029.00 SNDMSG: SNDPGMMSG MSG(&MSG) MSGTYPE(*DIAG) 0030.00 ENDPGM
【コンパイル】
CRTCLPGM PGM(MYLIB/TESTAUT) SRCFILE(MYSRCLIB/QCLSRC) AUT(*ALL)
【解説】
API: QSYCUSRS を使って現在のユーザーが *SECADM 権限を持っているかどうかを
検査します。
*SECADM 権限がないときだけには「ユーザー xxxx には *SECADM 権限がありません。」
というエラー・メッセージが戻されます。