Chaque fois qu'un utilisateur est créé, un noeud limite correspondant doit être créé, et ses limites et privilèges définis. L'utilisateur ne peut ouvrir une session tant que son noeud limite n'est pas créé. Lorsqu'il utilise Solaris Resource Manager, l'administrateur doit assurer la maintenance de la base de données en parallèle avec la base de données de mots de passe Solaris habituelle. 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.
Dans cette version, 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. Pour plus de détails, voir "Sous-système PAM".
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).
Si une UID est changée, le contenu de son noeud limite doit être copié vers le nouveau noeud correspondant au nouveau numéro, puis le noeud d'origine doit être supprimé. Reportez-vous à la section "Copie et déplacement de noeuds limites".
Les noeuds enfants doivent être reliés au nouveau noeud ou à un autre noeud 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ée :
# limreport 'iud==X' - lname preserve > /var/tmp/savelnodes.X |
Remplacement de l'ancienne UID (X) correspondant à cet utilisateur par la nouvelle UID (Y) dans la table des mots de passe.
Création d'un noeud limite pour la nouvelle 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. Voir "Création et suppression de noeuds limites".
Utilisez la commande chown(2) pour remplacer le propriétaire de tous les fichiers de l'UID d'origine par celui de la nouvelle 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. 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'usage sont fixés à zéro.
Le groupe d'ordonnancement du nouveau noeud limite est réglé à celui de l'appelant de limadm s'il s'agit d'un sous-administrateur ; sinon (si l'appelant est root ou que son indicateur uselimadm est défini), il est réglé à l'utilisateur Autre 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. Il doit s'agir du superutilisateur, avoir un indicateur uselimadm activé, ou s'agir d'un sous-administrateur modifiant uniquement les attributs des membres de son groupe d'ordonnancement. Certaines restrictions s'appliquent à l'utilisation de limadm par un sous-administrateur : --
il ne peut changer la valeur de ses propres attributs, à l'exception de ceux dotés de la condition selfadmin (par exemple, l'attribut cpu.myshares) ;
l'attribut sgroup peut être affecté uniquement à un chef de groupe membre du groupe d'ordonnancement de l'appelant ou à l'appelant même ;
il ne peut changer les attributs des utilisateurs d'autres groupes d'ordonnancement ;
il ne peut modifier la valeur de tout attribut utilisé pour stoker les usages. Si cette restriction n'était pas établie, le sous-administrateur pourrait contourner les limites de groupe dans son propre noeud limite en diminuant l'usage de l'un de ses enfants, réduisant ainsi l'usage du groupe ;
si la valeur d'un indicateur est contraire à sa valeur par défaut, il ne peut modifier cette valeur pour un membre du groupe, sauf pour la fixer à la même valeur contraire. Cette mesure assure que les sous-administrateurs 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 pouvoir utiliser limadm, l'appelant doit être le superutilisateur, ou avoir un indicateur uselimadm ou admin activé. Si seul l'indicateur admin de l'appelant est activé, il peut supprimer uniquement les noeuds limites des utilisateurs dont il est le chef de groupe.