Fév 22 2016
Changer le Propriétaire d’Objets AS400 en Masse
Changer le Propriétaire Via le Terminal IBM i
Il existe de nombreuses façons de changer le propriétaire d’un object sur IBM i. Avec CHGOBJOWN pour un simple objet, ou WRKOBJOWN puis 9 pour chaque objet si vous voulez traiter tous les objets appartenant à quelqu’un.
Changer le propriétaire de milliers d’objets de cette façon risque de prendre énormément de temps!
Des sites web spécialisés comme itjungle proposent des solutions plus rapides comme:
CHGOWN OBJ('/qsys.lib/ma_lib.lib/*.*') NEWOWN(nouveau_proprio) RVKOLDAUT(*YES)
qui est un bon moyen de changer le propriétaire de tous les objets AS400 d’une bibliothèque donnée.
Mais il y a plus puissant si vous n’avez rien contre QSHELL/PASE (lancez QSH ou CALL QP2TERM), ou connectez-vous en SSH.
Commandes Avancées de Propriétaire sur QSH/PASE
Vous pouvez vous déplacer dans le répertoire d’une bibliothèque avec cd. Ajoutez toujours .LIB au nom de la bibliothèque
cd /QSYS.LIB/MABIB.LIB
Vous pouvez facilement compter le nombre d’objets:
$ ls -1 | wc -l
6228
Affichez le propriétaire de tous les objets avec ls et more pour afficher une page à la fois (peut être lent si vous avez beaucoup d’objets)
$ ls -l | more
total 190672
drwx---rwx 2 proprio 0 28672 Jan 5 10:37 $BUL100.FILE
drwx---rwx 2 proprio 0 20480 Jan 5 10:37 $BUL200.FILE
[...]
Changez le propriétaire de tous les objets avec chown:
chown nouveau_proprio *.*
Vous pouvez aussi être plus spécifique avec *.FILE ou MON_*.PRG.
Et voici où ca devient vraiment intéressant. Vous pouvez changer tous les objets qui n’ont pas de propriétaire
find . -nouser | xargs chown nouveau_proprio
A utiliser avec précaution, lisez la suite…
Vous pouvez aussi changer tous les objets appartenant à quelqu’un en particulier
find . -user ancien_proprio | xargs chown nouveau_proprio
Idéal pour réaffecter les objets des personnes ayant quitté la société avant de supprimer leur compte!
Longueur du Nom d’Utilisateur AS400 et Autres
find cherche aussi dans les sous-répertoires.
Il se peut que vous ayiez une erreur unknown username:
$ chown lgusername AABL01WC.PGM
chown: lgusername is an unknown username.
Vous devez alors récupérer l’id utilisateur dans le profil AS400 et utiliser ce numero à la place, si le nom d’utilisateur fait plus de 8 caractères:
$ chown 1073 AABL01WC.PGM
Voyez cette note sur le site d’IBM. Il vaut mieux donc n’avoir que des noms d’utilisateurs de 8 caractères ou moins sur iSeries.
Sachant le problème de longueur de nom d’utilisateur, la commande « find . -nouser » retourne aussi les fichiers/objets appartenant à des profils faisant 9 ou 10 caractères! Dommage qu’IBM n’aient pas paramétré la longueur maxi des utilisateurs à 10 aussi pour PASE.
Un dernier conseil: connectez-vous via SSH pour avoir ainsi un terminal dans une fenêtre plus grande.