Restriction: The following procedure cannot be used to delete
classes from the static CDT (modules ICHRRCDX or ICHRRCDE). To modify
the static CDT, consult your system programmer and see z/OS Security Server RACF System Programmer's Guide.
Before you begin:
- If you have applications that use resources in the dynamic class,
those applications, such as those issuing RACROUTE REQUEST=LIST,GLOBAL=YES
for the class, should be changed or removed. Otherwise, the applications
could fail after you remove the class from the dynamic CDT.
- Evaluate the uniqueness of the POSIT value of the class to be
deleted.
- If the POSIT value is unique, follow the steps below to
deactivate all SETROPTS options.
- If the POSIT value is shared, some of the steps below should not be
executed and they are so noted. If those steps were executed, the
SETROPTS options for all classes that share the POSIT value with the
deleted class would be deactivated. This would have unintended effects
on those classes.
Perform the following steps to delete an existing class from the
dynamic CDT.
- Delete all profiles in the class to be deleted.
- Execute a SEARCH command to create a CLIST with a
command to delete each profile in the class.
Example:
SEARCH CLASS(HORSES8) CLIST('RDELETE HORSES8 ')
_________________________________________________________________
- Execute the CLIST created in Step 1.a.
Example:
EXEC EXEC.RACF.CLIST LIST
_________________________________________________________________
- Verify no profiles remain in the class.
Example:
SEARCH CLASS(HORSES8)
_________________________________________________________________
- Issue the following command and note every occurrence
of the class you want to delete.
_________________________________________________________________
- If the class to be deleted does not share a POSIT value
with other existing classes, deactivate the class.
Example:
SETROPTS NOCLASSACT(HORSES8)
Do
not deactivate this class when it shares a POSIT value with other
classes that are active. (See the
"Before you begin" topic
of this procedure.)
_________________________________________________________________
- If you are using global access checking for the class and the
class to be deleted does not share a POSIT value with other
existing classes, deactivate the GLOBAL option for the class.
Example:
SETROPTS NOGLOBAL(HORSES8)
Do
not deactivate the GLOBAL option for this class when it shares a POSIT
value with other classes that are active. (See the
"Before you
begin" topic of this procedure.)
_________________________________________________________________
- If you have a GLOBAL profile for the class, delete it.
Example:
RDELETE GLOBAL HORSES8
_________________________________________________________________
- If you have a RACGLIST profile for the class, delete it.
Example:
RDELETE RACGLIST HORSES8
_________________________________________________________________
- If the class to be deleted does not share a POSIT value
with other existing classes, deactivate the other active system options
for your class, using the SETROPTS LIST command output from Step 2.
Example:
SETROPTS NOAUDIT(HORSES8) LOGOPTIONS(DEFAULT(HORSES8)) NORACLIST(HORSES8)
NOGENERIC(HORSES8) NOGENCMD(HORSES8) NOSTATISTICS(HORSES8)
Do
not deactivate the active system options for this class when it shares
a POSIT value with other classes that are active. (See the
"Before
you begin" topic of this procedure.)
_________________________________________________________________
- If you are using GENLIST processing for the class to be deleted
and the class does not share a POSIT value with other existing
classes, deactivate GENLIST processing.
Example:
SETROPTS NOGENLIST(HORSES8)
Do
not deactivate GENLIST processing for this class when it shares a
POSIT value with other classes that are active. (See the
"Before
you begin" topic of this procedure.)
_________________________________________________________________
- Delete the class from the CDT class.
Example:
RDELETE CDT HORSES8
If
you receive message ICH12304I indicating that the class cannot be
deleted because there are profiles in the class, your RACF® database might contain generic profiles
in this class that are hidden from the SEARCH and RLIST commands.
This can happen when a generic profile is defined in a class that
is subsequently disabled for generics with the SETROPTS NOGENCMD or
NOGENERIC command. To resolve this, schedule an appropriate time to
issue the SETROPTS GENCMD command and then repeat Step 1 to find and delete such profiles. After
you successfully delete the profiles, issue the SETROPTS NOGENCMD
command. Be sure to carefully plan when to enable the GENCMD option
because it will affect other classes that share the same POSIT value.
_________________________________________________________________
- Refresh the dynamic CDT.
SETROPTS RACLIST(CDT) REFRESH
_________________________________________________________________
- If you have users with class authority (CLAUTH) for the deleted
class, remove their authorities.
Example:
ALTUSER userid NOCLAUTH(HORSES8)
_________________________________________________________________