Service SQL IBM i (AS/400) · Fonction table
QSYS2.IFS_OBJECT_PRIVILEGES
Droits sur les objets de l'IFS
Liste les droits accordés sur un objet de l'IFS : propriétaire, groupe principal, liste d'autorisation et droits de chaque profil.
À quoi ça sert
La fonction de table prend un chemin (PATH_NAME) et renvoie les droits de l'objet : type, propriétaire, groupe principal, liste d'autorisation, puis une ligne par profil (AUTHORIZATION_NAME) avec ses droits sur les données (DATA_AUTHORITY) et le détail : droits sur l'objet (opération, gestion, existence, modification, référence) et sur les données (lecture, ajout, mise à jour, suppression, exécution).
Elle sert à l'audit : vérifier qui peut lire ou modifier un répertoire sensible, repérer les accès trop larges accordés à *PUBLIC. Comme elle prend un seul chemin, on l'appelle en jointure avec IFS_OBJECT_STATISTICS pour parcourir tout un arbre, comme dans l'exemple d'IBM sur /usr.
Le paramètre IGNORE_ERRORS (défaut YES) évite qu'un objet inaccessible n'interrompe la requête.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(QSYS2.IFS_OBJECT_PRIVILEGES('/tmp/jobisql/bonjour.txt'))
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| PATH_NAME Chemin | OBJECT_TYPE Type de l'objet | OWNER Propriétaire | PRIMARY_GROUP Groupe principal | AUTHORIZATION_LIST Liste d'autorisation | AUTHORIZATION_NAME Profil utilisateur | DATA_AUTHORITY Droits sur les données | OBJECT_OPERATIONAL Droit d'exploitation de l'objet (*OBJOPR) | OBJECT_MANAGEMENT Droit de gestion de l'objet (*OBJMGT) | OBJECT_EXISTENCE Droit d'existence sur l'objet (*OBJEXIST) | OBJECT_ALTER Droit de modification de l'objet (*OBJALTER) | OBJECT_REFERENCE Droit de référence sur l'objet (*OBJREF) | DATA_READ Droit de lecture des données | DATA_ADD Droit d'ajout de données | DATA_UPDATE Droit de mise à jour des données | DATA_DELETE Droit de suppression de données | DATA_EXECUTE Droit d'exécution sur les données |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /tmp/jobisql/bonjour.txt | *STMF | UTIL232 | NULL | NULL | *PUBLIC | *RWX | YES | YES | YES | YES | YES | YES | YES | YES | YES | YES |
| /tmp/jobisql/bonjour.txt | *STMF | UTIL232 | NULL | NULL | UTIL232 | *RWX | YES | YES | YES | YES | YES | YES | YES | YES | YES | YES |
| /tmp/jobisql/bonjour.txt | *STMF | UTIL232 | NULL | NULL | UTIL187 | *RWX | YES | NO | NO | NO | NO | YES | YES | YES | YES | YES |
| /tmp/jobisql/bonjour.txt | *STMF | UTIL232 | NULL | NULL | QDIRSRV | *RWX | YES | YES | YES | YES | YES | YES | YES | YES | YES | YES |
| /tmp/jobisql/bonjour.txt | *STMF | UTIL232 | NULL | NULL | DUPONT | *RWX | YES | YES | YES | YES | YES | YES | YES | YES | YES | YES |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Lister tous les droits sur les objets du répertoire /usr.
-- Description: List all the authorities for objects in /usr
WITH OBJS AS (SELECT PATH_NAME
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => '/usr')))
SELECT * FROM OBJS, TABLE(QSYS2.IFS_OBJECT_PRIVILEGES(PATH_NAME));
Bon à savoir
Sur un grand arbre, la jointure avec IFS_OBJECT_STATISTICS parcourt chaque objet un par un et peut être longue. Limite le répertoire de départ et filtre les types d'objets.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
PATH_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | obligatoire | Chemin |
IGNORE_ERRORS |
VARCHAR(3) | 'YES' | Ignorer les erreurs |
Colonnes renvoyées (17)
Afficher les 17 colonnes
| Colonne | Type | Signification |
|---|---|---|
PATH_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Chemin |
OBJECT_TYPE |
VARCHAR(8) | Type de l'objet |
OWNER |
VARCHAR(10) | Propriétaire |
PRIMARY_GROUP |
VARCHAR(10) | Groupe principal |
AUTHORIZATION_LIST |
VARCHAR(10) | Liste d'autorisation |
AUTHORIZATION_NAME |
VARCHAR(10) | Profil utilisateur |
DATA_AUTHORITY |
VARCHAR(12) | Droits sur les données |
OBJECT_OPERATIONAL |
VARCHAR(3) | Droit d'exploitation de l'objet (*OBJOPR) |
OBJECT_MANAGEMENT |
VARCHAR(3) | Droit de gestion de l'objet (*OBJMGT) |
OBJECT_EXISTENCE |
VARCHAR(3) | Droit d'existence sur l'objet (*OBJEXIST) |
OBJECT_ALTER |
VARCHAR(3) | Droit de modification de l'objet (*OBJALTER) |
OBJECT_REFERENCE |
VARCHAR(3) | Droit de référence sur l'objet (*OBJREF) |
DATA_READ |
VARCHAR(3) | Droit de lecture des données |
DATA_ADD |
VARCHAR(3) | Droit d'ajout de données |
DATA_UPDATE |
VARCHAR(3) | Droit de mise à jour des données |
DATA_DELETE |
VARCHAR(3) | Droit de suppression de données |
DATA_EXECUTE |
VARCHAR(3) | Droit d'exécution sur les données |