Chaque fois qu'un utilisateur est créé, un noeud limite correspondant doit être créé, et ses limites et privilèges définis. Lors de l'utilisation de Solaris Resource Manager, l'administrateur doit maintenir la base de données des limites en parallèle avec la correspondance normale des mots de passe Solaris. La commande
# limreport \!flag.real - uid lname |
peut être utilisée pour imprimer la liste des UID et des noms de compte des utilisateurs n'ayant pas de noeud limite correspondant.
Les noeuds limites ne sont pas créés et supprimés automatiquement par les commandes système utilisées pour créer et supprimer des comptes. Ces opérations doivent être effectuées par l'administrateur. Cependant, il est possible de créer des noeuds limites sur demande lorsque l'utilisateur établit une connexion. Reportez-vous à la rubrique Sous-système PAM pour de plus amples informations.
De même, juste avant de supprimer un compte dans la table des mots de passe, le noeud limite correspondant doit être effacé de la base de données des limites avec la commande limadm(1MSRM).
pour supprimer des noeuds limites, on doit s'assurer que les sous-arbres sont supprimés à partir du dernier noeud limite en remontant. Si vous commencez au sommet du sous-arbre à supprimer, vous perdrez le contrôle des enfants des noeuds limites qui ont été supprimés, car ils deviendront orphelins lorsque leurs parents seront effacés.
Si l'UID d'un utilisateur est modifié, le contenu de son noeud limite doit être copié vers le nouveau noeud correspondant au nouvel UID, puis le noeud d'origine doit être supprimé. Pour de plus amples informations, reportez-vous à la rubrique Copie et déplacement de noeuds limites.
Les noeuds enfants doivent être reliés au nouveau noeud limite ou à un autre noeud limite père approprié. La commande
# limreport 'sgroup==X' '%u\tsgroup=Y\n' uid | limadm set -u -f - |
permet de détecter tous les noeuds limites ayant un groupe d'ordonnancement père dont l'UID est X et d'en faire les enfants du noeud ayant l'UID Y.
Les étapes ci-après illustrent le changement d'UID d'un noeud limite de X à Y.
Enregistrement de l'état du noeud limite dont l'UID doit être changé :
# limreport 'uid==X' - lname preserve> /var/tmp/savelnode.X |
Remplacement de l'ancien UID (X) correspondant à cet utilisateur par le nouvel UID (Y) dans la table des mots de passe.
Création d'un noeud limite pour le nouvel UID et restauration de l'état enregistré au préalable :
# limadm set -f /var/tmp/savelnode.X |
Remplacement du groupe d'ordonnancement de tous les noeuds limites enfants du noeud à modifier (UID X) par le nouveau noeud limite (UID Y) :
# limreport 'sgroup==X' '%u\tsgroup=Y\n' uid | limadm set -u -f - |
Assurez-vous qu'aucun processus n'est relié à l'ancien noeud limite.
Utilisez la commande chown(2) pour remplacer le propriétaire de tous les fichiers de l'UID d'origine par celui du nouvel UID. Par exemple :
# find / -user X -print | xargs chown Y |
Supprimez l'ancien noeud limite :
# limadm delete X |
La commande limadm est le principal outil de maintenance des noeuds limites dont les administrateurs disposent. Elle permet de changer les valeurs d'attribut de Solaris Resource Manager pour une liste de comptes utilisateur. Si aucun noeud limite n'existe pour un utilisateur, un noeud vide est d'abord créé par défaut. Voici les propriétés des nouveaux noeuds limites :
flag.real est activé ;
les attributs cpu.shares et cpu.myshares sont fixés à 1 ;
les indicateurs uselimadm et admin sont fixés à "clear" ;
tous les autres indicateurs sont fixés à inherit ;
tous les attributs de limite et d'utilisation sont fixés à zéro.
Le groupe d'ordonnancement du nouveau noeud limite est réglé à l'utilisateur Autre (srmother) si un noeud limite existe pour ce compte d'utilisateur, ou au noeud limite racine si ce n'est pas le cas.
L'appelant de limadm doit disposer de privilèges d'administration suffisants pour effectuer les changements indiqués. L'appelant doit être le superutilisateur, doit avoir un indicateur uselimadm activé, ou être un sous-administrateur qui change uniquement les attributs des membres du groupe d'ordonnancement auquel l'appelant appartient. Des restrictions s'appliquent pour l'utilisation de limadm par les administrateurs de groupe.
Ils ne peuvent pas changer la valeur de leurs propres attributs.
L'attribut sgroup d'un utilisateur peut uniquement être affecté à l'appelant ou à un membre du groupe d'ordonnancement de l'appelant.
Les administrateurs de groupe ne peuvent pas changer les attributs des utilisateurs hors de leur groupe d'ordonnancement.
Ils ne peuvent pas modifier la valeur d'aucun attribut utilisé pour stocker des usages autres que des utilisations de terminal. Sans cette restriction, les administrateurs de groupe pourraient outrepasser les limites de groupe dans leurs noeuds limites en réduisant l'utilisation de l'un de leurs enfants, réduisant ainsi l'utilisation du groupe.
S'ils ont un indicateur ayant une valeur différente de la valeur par défaut, les sous-administrateurs ne peuvent modifier la valeur de cet indicateur pour un autre membre de leur groupe que s'ils lui donnent cette même valeur, différente de la valeur par défaut.
Cette mesure assure que les administrateurs de groupe dont des privilèges ont été explicitement interdits ne peuvent accorder ces privilèges à des utilisateurs sous leur contrôle.
La commande limadm permet à un administrateur de supprimer un noeud limite sans effacer le compte correspondant dans la table des mots de passe. Pour utiliser limadm, l'appelant doit être le superutilisateur ou avoir un indicateur uselimadm activé. Si l'appelant a seulement un indicateur admin activé, il peut uniquement modifier les noeuds limites des utilisateurs sous les groupes d'ordonnancement pour lesquels il est le chef de groupe.