特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは 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 を指定する
0001.00 H DFTNAME(TESTAUT) DATEDIT(*YMD/)
0002.00 F********** ユーザー権限の検査 ***************************************
0003.00 F*
0004.00 F* API: QSYCUSRS を使ってユーザーの特殊権限を
0005.00 F* 調査する
0006.00 F*
0007.00 F**********************************************************************
0008.00 D INFDSP SDS
0009.00 D USER 254 263
0010.00
0011.00 D APIERR DS
0012.00 D GETBYT 1 4B 0 INZ(160)
0013.00 D AVLBYT 5 8B 0 INZ(0)
0014.00 D MSGID 9 15
0015.00 D MSGDTA 17 160
0016.00
0017.00 D MSG S 40A
0018.00 D MSGE C CONST(' には *SECADM 権限は -
0019.00 D ありません。 ')
0020.00 D AUTSU S 4B 0 INZ(1)
0021.00 D LVL S 4B 0 INZ(1)
0022.00
0023.00 C*----------------------------------------------------+
0024.00 C CALL 'QSYCUSRS' 99
0025.00 C PARM TOKSHU 1 |
0026.00 C PARM USER |
0027.00 C PARM '*SECADM ' SPCAUT 10 |
0028.00 C PARM AUTSU |
0029.00 C PARM LVL |
0030.00 C PARM APIERR
0031.00 C*----------------------------------------------------+
0032.00 C IF TOKSHU = 'N'
0033.00 C EVAL MSG = ' ユーザー ' + USER + MSGE
0034.00 C MSG DSPLY ANS 1
0035.00 C ENDIF
0036.00 C SETON LR
0037.00 C RETURN
CRTBNDRPG PGM(MYLIB/TESTAUT) SRCFILE(MYSRCLIB/QRPGLESRC) AUT(*ALL)
API: QSYCUSRS を使って現在のユーザーが *SECADM 権限を持っているかどうかを
検査します。
*SECADM 権限がないときだけには「ユーザー xxxx には *SECADM 権限がありません。」
というエラー・メッセージが戻されます。