特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは 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
通常は 1 を指定する |
【TESTAUT: *
SECADM を検査するCサンプル・ソース】
0001.00 #include <stdio.h> 0002.00 #include <stdlib.h> 0003.00 #include <string.h> 0004.00 #include <QSYCUSRS.h> 0005.00 0006.00 /*---------------------------------------------------------*/ 0007.00 /* TESTAUT : ユーザー特殊権限の検査 */ 0008.00 /* */ 0009.00 /* API: QSYCUSRS を使ってユーザーの特殊権限を */ 0010.00 /* 調査する。 */ 0011.00 /*---------------------------------------------------------*/ 0012.00 #define TRUE 0 0013.00 #define FALSE -1 0014.00 typedef struct { 0015.00 int BYTESPRO; 0016.00 int BYTESAVL; 0017.00 char MSGID[7]; 0018.00 char RESRVD; 0019.00 char EXCPDATA[100]; 0020.00 } ERRSTRUCTURE; /* Define the error return structure */ 0021.00 ERRSTRUCTURE errcode;/* Error Code Structure for RCVMSG */ 0022.00 0023.00 void main(void){ 0024.00 char AUTO[2]; 0025.00 int NoAUT = 1, LVL = 1; 0026.00 0027.00 printf("TESTAUT: ユーザー特殊権限の検査 \n"); 0028.00 getchar(); 0029.00 0030.00 errcode.BYTESPRO = errcode.BYTESAVL = 0; 0031.00 QSYCUSRS(AUTO, "*CURRENT ", "*SECADM ", &NoAUT, &LVL, &errcode); 0032.00 if(AUTO[0] == 'N'){ 0033.00 printf(" このユーザーには *SECADM 権限はありません。 \n"); 0034.00 getchar(); 0035.00 } 0036.00 }
【コンパイル】
CRTBNDC PGM(MYLIB/TESTAUT) SRCFILE(MYSRCLIB/QCSRC) AUT(*ALL)
【解説】
API: QSYCUSRS を使って現在のユーザーが *SECADM 権限を持っているかどうかを
検査します。
*SECADM 権限がないときだけには「ユーザー xxxx には *SECADM
権限がありません。」
というエラー・メッセージが戻されます。