SYS : user *secadm et droit *public use

Une des failles de la sécurité est que l'on peut soumettre une commande pour un autre utilisateur si on est autorisé au profil.

Il faut donc croiser le fichier des profils avec le fichier des droits sur les profils.

pgm cl générant les 2 fichiers

PGM                                                                   
DCLF QADSPOBJ                                                         
             DSPOBJD    OBJ(*ALL) OBJTYPE(*USRPRF) OUTPUT(*OUTFILE) + 
                          OUTFILE(QTEMP/WADSPOBJ)                     
             OVRDBF     FILE(QADSPOBJ) TOFILE(QTEMP/WADSPOBJ) +       
                          LVLCHK(*NO)                                 
             CLRPFM          FILE(QTEMP/LSTAUT)                       
             MONMSG CPF0000                                           
BOUCLE:                                                               
RCVF                                                                  
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(SUITE))       
             DSPOBJAUT  OBJ(&ODOBNM) OBJTYPE(*USRPRF) +               
                          OUTPUT(*OUTFILE) OUTFILE(QTEMP/LSTAUT) +    
                          OUTMBR(*FIRST *ADD)                         
                          GOTO BOUCLE                                 
SUITE: 

FIN:                                                  
             DSPUSRPRF  USRPRF(*ALL) OUTPUT(*OUTFILE) +
                          OUTFILE(QTEMP/LSTPRF)       
ENDPGM                                                                                                                

la requête SQL

SELECT PRF.UPUPRF, AUT.OAOBJA FROM lstprf prf, lstaut aut WHERE   
PRF.UPUPRF = AUT.OANAME and AUT.OAUSR = '*PUBLIC' and AUT.OAOBJA <>
'*EXCLUDE' and UPSPAU  like('%*SECADM%')