用户管理
新建组
创建组的基本语法如下:
AG mygroupname SUPGROUP(supergroupname) OWNER(ownername)
其中AG是命令ADDGROUP的缩写,SUPGROUP指定所建组的上级组,OWNER指定组的所有者。
脚本:
//ADDGROUP JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//ADDGRP1 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
AG USRGRP SUPGROUP(SYS1) OWNER(SYS1)
AG TSTGRP SUPGROUP(USRGRP) OWNER(USRGRP)
/*
ISPF Command Shell中执行LISTGRP groupname
可以查看组信息。
增加LOGON过程
- 将ADCD.Z110.PROCLIB中的ISPFPROC拷贝到USER.PROCLIB中
- 命名为IKJ#TST,并将其中的行 PARM= '%ISPFCL'改为 PARM= '%ISPF#TST'
- %通常表示是一个CLIST程序;系统搜索CLIST库定义。关于CLIST库的定义和顺序,参见REXX和CLIST的定义
- 将ADCD.Z110.CLIST里现有的ISPFCL拷贝到USER.LIST,命名为ISPF#TST
对组授权
对组授权的基本语法如下:
RDEF classnamelogonprocname UACC(access-authority)
其中RDEF是RDEFINE的缩写,以上命令在资源类classname中定义名字为logonprocname的PROFILE,通用权限由access-authority决定。
PE JCL CLASS(classname) ID(groupname) ACCESS(access-list)
其中PE是PERMIT的缩写,当access-list为READ时,以上命令使得资源类名为classname,组名为groupname里的用户有权限运行JCL命令。
PE OPER CLASS(classname) ID(groupname) ACCESS(access-list)
当access-list为ALTER时,以上命令使得资源类名为classname,组名为groupname里的用户有权限运行TSO命令,如/D A,L 等。
PE accountnumber CLASS(classname) ID(groupname) ACCESS(access-list)
当access-list为READ时,以上命令使得资源类名为classname,组名为groupname里的用户有权限使用名为accountnumber的Account Number。
PE logonprocname CLASS(classname) ID(groupname) ACCESS(access-list)
当access-list为READ时,以上命令使得资源类名为classname,组名为groupname里的用户有权限使用名为logonprocname的LOGON过程。
脚本
//AUTHGRP JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//AUTHGRP EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
RDEF TSOPROCIKJ#TST UACC(NONE)
PE JCL CLASS(TSOAUTH) ID(TSTGRP) ACCESS(READ)
PE OPER CLASS(TSOAUTH) ID(TSTGRP) ACCESS(ALTER)
PE ACCT# CLASS(ACCTNUM) ID(TSTGRP) ACCESS(READ)
PE IKJ#TST CLASS(TSOPROC) ID(TSTGRP) ACCESS(READ)
//
刷新RACF使授权生效的语法如下:
SETROPTS GLOBAL(classname) REFRESH
SETROPTS GENERIC(classname) REFRESH
SETROPTS RACLIST(classname) REFRESH
脚本:
//REFRACF JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//RACFREF EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
SETROPTS GLOBAL(TSOPROC) REFRESH
SETROPTS GENERIC(TSOPROC) REFRESH
SETROPTS RACLIST(TSOPROC) REFRESH
//
建立别名与用户
定义别名的基本语法如下:
DEF ALIAS (NAME(aliasname) RELATE(vsamcatlog))
其中NAME指定别名名称, vsamcatlog应当事先定义,RELATE指定别名所存放的USER CATALOG。
vsamcatlog的定义方式 使用Data Set Utility的VSAM Utilities(如下图)
然后在Process Request中选择1. Define,Data Type选择8. User Catalog。在之后的参数页面选择输入合适的参数,注意 Volume。
脚本
//DEFALIS JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//DEFALIA EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DEF ALIAS (NAME('TST00') RELATE('USERCAT.TSOUSER'))
//
建立TSO用户的基本语法如下:
AU username PASSWORD(passwordname)
TSO(classname(accountnumber) PROC(logonprocname) SIZE(size)) OWNER(ownername) DFLTGRP(groupname)
其中username为用户名,PASSWORD指定用户密码,classname 指定资源类名,accountnumber指定用户的Account Number名, PROC指定用户的登录过程名,SIZE指定Account Number的大小,OWNER指定用户的所有者名,DFLTGRP指定用户缺省的组名。 在组TSTGRP中建立和别名同名的用户TST001,初始密码为1234
//CRTUSER JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CRTUSR EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
AU TST001 PASSWORD(1234) +
TSO(ACCTNUM(ACCT#) +
PROC(IKJ#TST) SIZE(4096)) +
OWNER(TSTGRP) DFLTGRP(TSTGRP)
//
ISPF Command Shell中执行LISTUSER username
可以查看组信息。
建立用户后,可以使用该用户登录后检查其提交JCL和运行TSO命令的权限
修改用户密码
可以用有权限的用户修改(其他)用户的密码,TSO中执行命令:(以修改ADCDMST为例):
TSO ALU ADCDMST PASSWORD (ADCDMST) RESUME
ADCDMST登陆的时候可能需要重新设置密码
脚本
//RESPASS JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CRTUSR EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
ALU TST001 PASSWORD (TST001) RESUME
//
保护数据集
用ADDSD命令建立数据集PROFILE实现对数据集的保护。 建立数据集PROFILE的基本语法如下:
ADDSD 'username.**' OWNER(ownername) UACC(access-authority)
AUDIT(ALL/SUCCESS/FAIURES(audit-access-level)) GEN
其中username.**
指定要保护的是以username开头的用户数据集,
**
表示不管这个数据集的名字有几段,只要以username开头,都在保护的范围;
OWNER指定数据集PROFILE的所有者,UACC指定访问数据集的通用权限,由access-authority 指定,
AUDIT 指定以audit-access-level指定的方式对数据集的访问成功和失败/成功/失败时作审计,GEN 是GENERIC的缩写。
PE '*.**' ACCESS(access-list) ID(groupname) GEN
其中*.**
代表要保护的系统数据集,ACCESS指定系统数据集的访问列表,
ID指定访问这些系统数据集的组或用户,GEN是GENERIC的缩写。
授权脚本 (TST002 需要先建立)
//PRTDTSR JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//PRTDTS EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
ADDSD 'TST001.DEV.*' OWNER(TSTGRP) UACC(NONE) -
AUDIT(SUCCESS(UPDATE)) GEN
PE 'TST001.DEV.*' ACCESS(READ) ID(TST002) GEN
//*
//PRTSYSDS JOB ACCT#,IBMUSER,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//PRTDTS EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
ADDSD 'SYS1.**' OWNER(TSTGRP) UACC(READ) -
AUDIT(SUCCESS(UPDATE)) GEN
PE 'SYS1.**' ACCESS(READ) ID(TSTGRP) GEN
//*
报错IKJ56702I INVALID DATASET NAME, 'SYS1.**'
原因如下:
下表
shows the availability of generic characters.
The use of the generic character % is not changed by the EGN setting.
Depending on whether or not EGN is active, the ending * has different meanings.
These are explained in more detail later in this section.
EGN status | Ending .** Allowed | Middle .**. Allowed | Beginning * Allowed | Middle * Allowed | Ending * Allowed |
---|---|---|---|---|---|
EGN on | Yes | Yes | No | Yes | Yes |
EGN off | No | No | No | Yes | Yes |
打开/关闭EGN的方式:
- RACF =>5 SYSTEM OPTIONS=>5 OTHER OPTIONS=> ENHANCED GENERIC NAMING
- 然后根据提示选择参数后提交执行。
删除
- 删除对数据集的保护
DELDSD 'TST001.**'
- 删除用户
DELUSER TST001
- 删除别名
DEL TST001 ALIAS
- 删除组
DELGROUP TSTGRP
- 删除LOGON过程
- 删除对应的数据集