Archive

Posts Tagged ‘smf’

Les variables dans un manifest SMF

March 6th, 2009 No comments

Toujours à propos de SMF, voici un petit exemple pour utiliser une variable (définie via une propriété du manifest) dans une méthode :

La définition des propriétés :

 
        <property_group name='application' type='application'>
                <propval name='port' type='integer' value='3000' />
                <propval name='root' type='astring' value='/opt/jkstat' />
        </property_group>

Attention, il faut que le nom du property_group soit application ! Et finalement un petit exemple pour utiliser ces variables :

       <exec_method
                type='method'
                name='start'
                exec='%{root}/jkstat server -p %{port} &amp;'
                timeout_seconds='60'>
                <method_context>
                        <method_credential user='root' group='root' />
                </method_context>
        </exec_method>

Encore une fois, merci SMF ! (et à Fabrice aussi pour le coup)

Categories: OpenSolaris, Sysadmin Tags:

Bien gérer ses services sous Solaris

February 26th, 2009 3 comments

Maintenant que tout le monde utilise SMF (enfin je l’espère ! ), voici quelques informations qui pourront vous être utiles, autour du cas d’utilisation suivant :

Soit un glassfish (serveur d’application) qui – pour une obscure raison qui n’a pas d’intérêt ici – doit écouter sur les ports 80 et 443, mais ce service étant administré par un consultant métier, je ne veux en aucun cas donner le moindre droit root à cette personne, que ce soit pour démarrer ou arrêter glassfish, ou même encore pour son exécution. Cela semble difficile à réaliser au premier abord, mais SMF va nous sauver !

La gestion des privilèges

SMF permet d’assigner des priviléges (vous pouvez obtenir la liste des privilèges ainsi qu’une courte description en utilisant la commande ppriv -l -v) à un service. Pour cela, il faut éditer son manifest, puis rajouter la portion de code suivant :

<method_context user='glassfish' group='glassfish' privileges='basic,net_privaddr' />

Administration du service

Maintenant que nous avons notre glassfish qui écoute sur le port 80 et 443 sans avoir besoin du moindre processsus root, il nous reste à déléguer l’administration du service à l’utilisateur approprié. Pour cela, effectuer les modifications suivantes :


# echo 'solaris.smf.manage.glassfish:::Manage Glassfish::help=nohelp.html' >>/etc/security/auth_attr
# svccfg -s glassfish setprop general/value_authorization = astring: solaris.smf.manage.glassfish
# svccfg -s glassfish setpprop general/action_authorization = astring: solaris.smf.manage.glassfish
# svcadm refresh glassfish
# usermod -A solaris.smf.manage.glassfish glassfish

Quelques explications :

  • le fichier auth_attr définit la liste des attributs étendus qu’un utilisateur, dans ce cas, on créer un nouveau attribut que l’on nomme solaris.smf.manage.glassfish
  • Les deux lignes suivantes autorise les utilisateurs disposant de l’attribut solaris.smf.manage.glassfish à administrer le service (vous pouvez consulter la page de manuel smf_security pour avoir plus de détails)
  • Et finalement, on assigne le privilège solaris.smf.manage.glassfish à l’utilisateur glassfish

Désormais, l’utilisateur glassfish peut démarrer et éteindre le serveur d’application sans jamais disposer du moindre droit root (pas de sudo ou équivalent nécessaire). Dites merci SMF !

Categories: Security, Solaris Tags: