Useful RACF, ACF2 and Top Secret Commands for Security Administrators

In this article we will look at common user administration, data set protection and resource access tasks, with an example for each command. Note that these are simplified examples. The manuals linked throughout the article provide the complete syntax and authority requirements.

Although the three products perform similar functions, their commands and access control rules work differently. These differences are important when moving between products.

The following tables contain useful IBM RACF, Broadcom ACF2 and Broadcom Top Secret (TSS) commands for Security Administrators working in a z/OS environment.

Product versions

The reference levels used for this article are:

ProductDocumentation level
IBM RACFz/OS Security Server 3.2
Broadcom ACF2 for z/OS, formerly CA ACF217.0
Broadcom Top Secret for z/OS, formerly CA Top Secret17.0

ACF2 and Top Secret 17.0 became generally available in March 2026. The examples below use the current product documentation available on 20 October 2026. Individual functions can also depend on installed maintenance. See the Broadcom release announcements for ACF2 17.0 and Top Secret 17.0, and IBM’s z/OS 3.2 RACF changes.

Before using the examples

The commands are deliberately simplified. They assume that the administrator has the required authority and scope, and that any referenced groups, departments, profiles and resources already exist unless the example creates them.

USER01, APPGRP, APPDEPT and APPPROF are example names. Replace NEWPASS with a temporary password that meets your installation’s requirements. Protect any command logs and output containing passwords or password phrases.

These are individual examples, not a script to execute from beginning to end. Creating a base user definition does not complete TSO, CICS, USS or application provisioning.

IBM RACF

RACF administration is based on user, group, data set and general resource profiles. The examples use the full command names and assume execution through the RACF TSO command interface. Operator commands have additional issuing requirements. See IBM’s summary of command issuing options.

User profiles and group connections

TaskCommand exampleDescription
Create a userADDUSER USER01 NAME('EXAMPLE USER') DFLTGRP(APPGRP) OWNER(APPGRP) PASSWORD(NEWPASS) REVOKECreates the user and connects it to its default group. The ID is initially revoked while provisioning is completed. The initial password is expired.
List a userLISTUSER USER01Displays the user’s base profile and group connection information, subject to the issuer’s authority.
Change the user’s nameALTUSER USER01 NAME('UPDATED USER')Changes the NAME field.
Reset a passwordALTUSER USER01 PASSWORD(NEWPASS)Sets an expired password, requiring a change when the user next authenticates with it through an interface supporting password changes.
Revoke a userALTUSER USER01 REVOKE NORESUMERevokes the ID and clears a pending RESUME date. Ordinary revocation takes effect at the next logon; it does not provide the active-session protection of containment.
Resume a userALTUSER USER01 RESUMEResumes an ordinarily revoked ID. Additional action is needed if it is contained or has a revoke date that must be cleared.
Connect a user to another groupCONNECT USER01 GROUP(APPREAD) AUTHORITY(USE)Connects the user to the existing APPREAD group with USE group authority.
Remove a group connectionREMOVE USER01 GROUP(APPREAD)Removes the connection to APPREAD. Do not use this to remove the user’s current default group without first changing the default group.
Delete a userDELUSER USER01Deletes the user profile. Review ownership, resource access lists and application dependencies as part of the removal procedure.

Notes:

  • NOREVOKE clears a revoke date. It is not a substitute for RESUME when the ID is already revoked.
  • Group connections can affect the authority held in an existing security environment. Account for a new logon or the application’s supported security refresh procedure when verifying a change.
  • A password reset does not reset a separately defined password phrase. Use the appropriate PHRASE operand when administering a phrase.
  • IBM warns that issuing ADDUSER from ISPF can write the command buffer, including the password, to ISPLOG. Issuing it as an operator command can expose the password in the system log. Use a suitable TSO administration session and protect its output.
  • Before DELUSER, resolve user data set profiles, user ID associations and ownership dependencies. Deletion removes group connections but does not remove every reference to the ID from other profiles and access lists. See IBM DELUSER.

References: IBM ADDUSER, ALTUSER and LISTUSER, in the z/OS Security Server RACF Command Language Reference.

User ID containment

RACF provides containment for situations where ordinary revocation is insufficient. Containment causes subsequent RACF-protected access requests to fail, including requests from active sessions. It does not undo work already performed or terminate every running process.

ALTUSER USER01 CONTAIN

To inspect the user:

LISTUSER USER01

After the incident has been investigated and reinstatement approved:

ALTUSER USER01 NOCONTAIN RESUME

NOCONTAIN removes containment but does not clear the REVOKE setting; RESUME is also needed. The RACF address space must be active to add or remove IDs from containment. IBM documents this function for z/OS 3.2 and z/OS 3.1; verify the applicable maintenance for APAR OA67286. See RACF user ID containment.

Group profiles

TaskCommand exampleDescription
Create a groupADDGROUP APPGRP SUPGROUP(SYS1) OWNER(SYS1)Creates APPGRP under the existing SYS1 group. Use the superior group appropriate for your organisation.
List a groupLISTGRP APPGRPLists the group and its connected users.
Change installation dataALTGROUP APPGRP DATA('APPLICATION SUPPORT')Updates the group’s installation-defined information.
Delete a groupDELGROUP APPGRPDeletes the group after its connections, subgroups and ownership dependencies have been resolved.

Group authority, such as USE or CONNECT, and group attributes, such as group-SPECIAL, serve different purposes. Membership alone does not give an administrator unrestricted authority over the group’s users and resources. See IBM ADDGROUP and ALTGROUP.

Data set profiles

The following examples use a fully qualified generic profile for APPTEST.DEMO.DATA. The explicit GENERIC operand distinguishes it from a discrete profile even though the name contains no wildcard characters. Generic data set processing must already be enabled.

A fully qualified generic profile protects a single data set name and remains defined if the data set is deleted and recreated. This differs from a discrete profile. See IBM Choosing between discrete and generic data set profiles.

TaskCommand exampleDescription
Define protectionADDSD 'APPTEST.DEMO.DATA' GENERIC UACC(NONE) OWNER(APPGRP)Creates the profile with no universal access.
List the profileLISTDSD DATASET('APPTEST.DEMO.DATA') GENERIC ALLLists the generic profile and its access list.
Change universal accessALTDSD 'APPTEST.DEMO.DATA' GENERIC UACC(NONE)Sets UACC to NONE. Existing access list entries are retained.
Grant READ accessPERMIT 'APPTEST.DEMO.DATA' GENERIC ID(APPREAD) ACCESS(READ)Adds or updates the APPREAD group’s access list entry.
Remove that entryPERMIT 'APPTEST.DEMO.DATA' GENERIC ID(APPREAD) DELETERemoves APPREAD from this access list. Other sources of authority can still apply.
Delete the profileDELDSD 'APPTEST.DEMO.DATA' GENERICDeletes the security profile, not the data set. Review the resulting protection before doing this.

After changing generic data set protection, refresh the cached generic profiles as required:

SETROPTS GENERIC(DATASET) REFRESH

Do not assume that UACC(NONE) means nobody can access the data set. Access lists, group membership, global access checking, WARNING and privileged authority can also affect the result. Always check the profile actually protecting the data set. References: IBM ADDSD, ALTDSD, LISTDSD and PERMIT.

General resources and RACF options

APPTEST.READ below is an illustrative FACILITY resource. Defining it does not make an application check it: the application must issue the corresponding security request.

TaskCommand exampleDescription
Define a resource profileRDEFINE FACILITY APPTEST.READ UACC(NONE) OWNER(APPGRP)Defines the FACILITY profile.
List a resource profileRLIST FACILITY APPTEST.READ ALLDisplays its base information and access list.
Change a resource profileRALTER FACILITY APPTEST.READ UACC(NONE)Changes the profile’s universal access.
Grant resource accessPERMIT APPTEST.READ CLASS(FACILITY) ID(APPREAD) ACCESS(READ)Grants READ to APPREAD.
Delete a resource profileRDELETE FACILITY APPTEST.READDeletes the profile.
Find user profilesSEARCH CLASS(USER) MASK(USER)Searches for user profile names beginning with USER.
Display RACF optionsSETROPTS LISTDisplays the options visible to the command issuer. Auditing information depends on the issuer’s attributes.

Where FACILITY is already active and SETROPTS RACLISTed, make relevant profile changes effective with:

SETROPTS RACLIST(FACILITY) REFRESH

This is different from SETROPTS GENERIC(DATASET) REFRESH. The appropriate action depends on the class and how its profiles are held in storage. References: IBM RDEFINE, general resource command examples and SETROPTS.

Broadcom ACF2

ACF2 commands depend on the current command setting. For example, DELETE USER01 under SET LID processes a logonid, while DELETE APPTEST under SET RULE processes an access rule set. Always establish the setting explicitly.

Enter the command processor from TSO READY:

ACF

Logonid administration

Start with:

SET LID
TaskCommand exampleDescription
Create a logonidINSERT USER01 NAME(EXAMPLE USER) PASSWORD(NEWPASS) PSWD-EXP SUSPENDCreates a basic logonid with an expired password, initially suspended while provisioning is completed.
List a logonidLIST USER01Displays its fields, privileges and restrictions within the issuer’s authority.
Change a nameCHANGE USER01 NAME(UPDATED USER)Updates the NAME field.
Reset a passwordCHANGE USER01 PASSWORD(NEWPASS) PSWD-EXPSets a password and marks it expired. Password phrase expiry is controlled separately.
Suspend a logonidCHANGE USER01 SUSPENDSets the SUSPEND attribute.
Remove suspensionCHANGE USER01 NOSUSPENDRemoves SUSPEND. A CANCEL attribute or another restriction can still prevent access.
Delete a logonid while retaining its matching access ruleDELETE USER01 NORULEDeletes the logonid without also deleting the access rule whose key matches the logonid. Associated user profile records are still subject to deletion.

Note: without NORULE, deletion of a logonid also deletes the access rule with the matching key by default. NORULE does not preserve the associated user profile records or remove references to the user from other rules. Review these dependencies and archive the definitions before deletion.

References: Broadcom ACF2 17.0 INSERT, CHANGE and DELETE. Broadcom also documents password expiry and the separate password phrase controls.

Data set access rules

ACF2 uses compiled access rules to control data set access. The following example creates a new rule set for APPTEST and allows users matching the UID mask FINPAY01 to read APPTEST.DEMO.DATA:

SET RULE
COMPILE
 $KEY(APPTEST)
 DEMO.DATA UID(FINPAY01) READ(ALLOW)
END
STORE

COMPILE enters the rule compiler. The first END finishes compiler input; STORE saves the compiled rule set. The leading spaces on the control statement and rule entry are intentional. Terminal prompts are not part of the input.

Note that UID(FINPAY01) is a mask. It also matches longer UID strings beginning with FINPAY01; a trailing dash is not required. It must not be read as an exact-user selection. An ACF2 UID string is not automatically the logonid and is not a USS numeric UID.

Before using a UID mask, check which logonids it matches within your administrative scope. The LIST example uses an explicit trailing mask character:

SET LID
LIST UID(FINPAY01-)

Return to SET RULE before continuing rule administration. Do not substitute UID(-) unless the rule is intended to apply to all users. See Broadcom UID mask matching and the ACF2 17.0 LIST subcommand.

$KEY(APPTEST) supplies the high-level qualifier. DEMO.DATA supplies the remaining qualifiers. READ(ALLOW) does not grant WRITE or ALLOCATE, but it also permits EXECUTE: ACF2 uses the more permissive of the READ and EXECUTE settings for execute access. Adding EXECUTE(PREVENT) would not override READ(ALLOW).

These settings describe the rule’s permissions. Actual data set access also depends on the active security mode, other applicable rules and privileges such as SECURITY or NON-CNCL. Test the result with an ordinary user, not just an administrator. See Broadcom data set security modes and the limits of rule simulation for privileged users.

Use this as a new rule set example. Compiling and storing a replacement for an existing key can replace rules protecting other data sets under that key. Decompile and preserve the complete existing rule set before editing it.

TaskCommand exampleDescription
Select access rule processingSET RULEEstablishes the data set access rule setting.
Display a rule setDECOMP APPTESTDecompiles the stored APPTEST rule set for inspection.
Compile rule source from a PDS memberCOMPILE 'SECADMIN.RULESRC(APPTEST)'Compiles rule text from the named member. Review the compiler result before storing.
Store a compiled rule setSTORESaves the current compiled rule set.
Delete a rule setDELETE APPTESTDeletes the entire APPTEST access rule set, not just one rule entry.

If APPTEST is a globally resident data set access rule, reload it using the operator command:

F ACF2,RELOAD(APPTEST)

ACF2 is the assumed started task name. This is an MVS operator command, not input to the rule compiler. See ACF2 17.0 Create Access Rule Sets, Access Rule Entries and Process Access Rules.

Global options and command help

To inspect the GSO password options record:

SET CONTROL(GSO)
LIST PSWD

This displays the stored record. It should not be confused with a complete display of every active authentication control.

To display operating state information:

SHOW STATE

To obtain help for the current command setting:

HELP

To leave the ACF command processor, outside compiler input:

END

See the ACF2 17.0 Command Reference and ACF Subcommands.

Broadcom Top Secret (TSS)

Top Secret uses Accessor IDs (ACIDs). ACID types include USER, PROFILE, DEPARTMENT and DIVISION. A PROFILE ACID is commonly used to collect permissions for assignment to users; it should not be confused with a RACF resource profile.

ACID administration

TaskCommand exampleDescription
Create a user ACIDTSS CREATE(USER01) TYPE(USER) NAME('EXAMPLE USER') DEPARTMENT(APPDEPT) PASSWORD(NEWPASS,,EXP) SUSPENDCreates a user in the existing department, with an expired password and an initial administrative suspension. The omitted password interval uses the installation default.
List a userTSS LIST(USER01) DATA(ALL)Lists the user’s security data.
Include connected profile dataTSS LIST(USER01) DATA(PROFILE,ALL)Includes the contents of the profiles connected to the user.
Change a nameTSS REPLACE(USER01) NAME('UPDATED USER')Replaces the NAME field.
Reset a passwordTSS REPLACE(USER01) PASSWORD(NEWPASS,,EXP)Issues an expired password. On REPLACE, omitting the interval retains the existing interval.
Suspend a user administrativelyTSS ADDTO(USER01) SUSPENDAdds an administrative suspension.
Remove an administrative suspensionTSS REMOVE(USER01) ASUSPENDRemoves the administrative suspension. Other suspension causes must be checked separately.
Remove a password or violation suspensionTSS REMOVE(USER01) SUSPENDRemoves the suspension types documented for SUSPEND. It is not the replacement for ASUSPEND when clearing an administrative suspension.
Delete a user ACIDTSS DELETE(USER01)Deletes the ACID. Resource ownership and dependent ACIDs can prevent deletion and must be reviewed first.

For a temporary administrative suspension created with FOR or UNTIL, use the corresponding form when removing it. For example:

TSS ADDTO(USER01) SUSPEND FOR(5)
TSS REMOVE(USER01) ASUSPEND FOR

References: Top Secret 17.0 Command Functions, administrator PASSWORD keyword, SUSPEND and ASUSPEND.

Profiles, ownership and access

The following examples use the data set prefix APPTEST.. This scope is deliberately broader than the individual data set used in the RACF and ACF2 examples.

TaskCommand exampleDescription
Create a profile ACIDTSS CREATE(APPPROF) TYPE(PROFILE) NAME('APPLICATION READERS') DEPARTMENT(APPDEPT)Creates a profile to hold application permissions.
Connect the profileTSS ADDTO(USER01) PROFILE(APPPROF)Connects APPPROF to USER01.
Disconnect the profileTSS REMOVE(USER01) PROFILE(APPPROF)Removes this profile connection.
Assign data set ownershipTSS ADDTO(APPDEPT) DSNAME(APPTEST.)Assigns ownership of the prefix to the department. Review existing ownership first.
Permit accessTSS PERMIT(APPPROF) DSNAME(APPTEST.) ACCESS(READ)Gives the profile READ access to data sets matching the prefix. The resource must already be owned.
Revoke that permissionTSS REVOKE(APPPROF) DSNAME(APPTEST.) ACCESS(READ)Revokes the simple READ permit shown above. For a permit with additional restrictions, reproduce the relevant criteria from its XAUTH listing.
Find the ownerTSS WHOOWNS DSNAME(APPTEST.)Displays matching ownership information within the administrator’s scope.
Find access assignmentsTSS WHOHAS DSNAME(APPTEST.)Displays matching ownership and permit information within the administrator’s scope.

Notes:

  • Resource ownership and resource access are different operations. ADDTO assigns ownership; PERMIT authorises access to an owned resource.
  • If a resource is already owned, ADDTO can transfer ownership and leave the previous owner with full access through a permit. Check WHOOWNS before changing ownership and review the resulting permissions afterwards.
  • Ownership on an individual user or profile gives that ACID ALL access. Assigning ownership to the appropriate department or division avoids using ownership as a routine user permission.
  • REMOVE removes ownership or attributes. REVOKE removes permissions. Do not interchange them.
  • A REVOKE containing only the resource, with no additional criteria, can remove multiple matching permits. Inspect the access authorisation data before constructing a selective revocation.
  • Removing a permit from APPPROF affects users receiving access through that profile. It does not remove access provided by another connected profile, a direct permit or resource ownership.
  • WHOHAS output must be interpreted alongside connected profiles, matching rules, security mode and administrative scope. It is not a substitute for testing the actual access request.

References: Top Secret 17.0 ADDTO, PERMIT, REVOKE and PROFILE.

Display the security environment

TSS MODIFY STATUS

This displays the status of the security environment. Other uses of MODIFY can change control options. Dynamic control option changes generally revert to the startup parameter values at the next IPL or Top Secret recycle unless the startup parameters are also updated. See the Top Secret 17.0 MODIFY function.

Some considerations when working across the three products

AreaRACFACF2Top Secret
User definitionUser profileLogonid record, with associated profile records where applicableUSER ACID
Common shared access mechanismGroup membership and profile access listsUID-based rules or the installation’s role-based rulesPermissions on connected PROFILE ACIDs
Data set accessMatching data set profile and its access listCompiled access rule entriesResource ownership and permits
Example storage updateGENERIC or RACLIST refresh, as appropriateRELOAD for globally resident data set rules; other record types have their own activation proceduresFollow the applicable security record and cache refresh procedure

Access levels also need care. RACF UPDATE includes READ, whereas ACF2 WRITE does not imply READ. However, ACF2 READ can also permit EXECUTE, as explained above. We should therefore check the documented behaviour of each access type instead of assuming that the levels map directly between products. See the ACF2 17.0 Access Rule Entries reference.

After making a change, list the updated definition, refresh the relevant in-storage records where required, and test the result. Confirm that the user can perform the intended action and is denied actions outside that requirement. Existing sessions and application security caches also need to be taken into account.

For the complete syntax, authority requirements and restrictions, refer to the IBM and Broadcom manuals linked throughout this article.

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.