Permissions du fichier de commandes externe


Notes

Toutes les manipulations décrites ici peuvent être effectuées automatiquement lors de l'installation : regardez ici.

Ces instructions supposent que vous avez installé Nagios sur une machine dédiée qui n'a aucun compte d'utilisateurs standards ( c.a.d qui n'est pas une machine accessible au public). Si Nagios est installé sur une machine publique/multi-utilisateurs, je vous suggère de mettre en place des permissions d'accès plus restrictives sur le fichier de commandes externes et d'utiliser, par exemple, CGIWrap pour exécuter les CGIs sous un utilisateur spécifique. Si vous ne le faites pas, vous pourriez ainsi permettre à des utilisateurs lambda de contrôler Nagios grâce aux commandes externes ! Je suppose que vous ne le voulez pas. Vous trouverez plus d'informations sur la sécurisation de Nagios ici

Introduction

Un des problèmes les plus communs que les utilisateurs rencontrent semble être la configuration correcte des permissions pour le fichier de commande externe. Vous devez paramétrer correctement les permissions dans le répertoire /usr/local/nagios/var/rw (ou tout autre chemin défini par la directive fichier de commande dans votre fichier de configuration principal). Je vais vous montrer comment le faire. Note : Vous devez être root pour pouvoir exécuter certaines étapes...

Utilisateurs et Groupes

Tout d'abord, trouvez l'utilisateur sous lequel le serveur web fonctionne. Sur de nombreux systèmes, c'est l'utilisateur nobody ou apache bien que cela dépende de l'OS ou de la distribution que vous utilisez. Vous aurez aussi besoin de savoir sous quel utilisateur tourne Nagios - cela est défini par la variable nagios_user du fichier de configuration principal.

Puis, créez un nouveau groupe qui va inclure l'utilisateur qui fait tounrer le serveur web, ainsi que l'utilisateur qui fait tourner Nagios. Appelons ce groupe 'nagiocmd' (appelez le autrement si vous le souhaitez). Sur la RedHat, vous pouvez utiliser la commande suivante pour ajouter un nouveau groupe (elle peut être différente sur d'autres systèmes) :

/usr/sbin/groupadd nagiocmd

Ensuite, ajoutez au nouveau groupe l'utilisateur du serveur web (nobody ou apache, etc ..) et l'utilisateur de Nagios (nagios) à l'aide de la commande suivante :

/usr/sbin/usermod -G nagiocmd nagios
/usr/sbin/usermod -G nagiocmd nobody

Création du répertoire

Ensuite, créez le répertoire dans lequel le fichier de commande devra être stocké. Par défaut, c'est /usr/local/nagios/var/rw, bien qu'il puisse être changé en modifiant le chemin spécifié dans le répertoire command_file.

mkdir /usr/local/nagios/var/rw

Configuration des permissions du répertoire

Ensuite, changez le propriétaire du répertoire qui va être utilisé pour garder le fichier de commande...

chown nagios:nagiocmd /usr/local/nagios/var/rw

Assurez-vous que l'utilisateur Nagios dispose de toutes les permissions sur ce répertoire...

chmod u+rwx /usr/local/nagios/var/rw

Assurez-vous que le groupe que vous avez créé a les permissions de lecture et d'écriture sur le répertoire.

chmod g+rw /usr/local/nagios/var/rw

Pour forcer les fichiers nouvellement créés dans le répertoire à hériter des permissions de groupe du répertoire, il nous faut activer le bit de rappel [sticky bit] du groupe sur le répertoire...

chmod g+s /usr/local/nagios/var/rw

Vérification des permissions

Vérifiez les permissions sur le sous-répertoire rw/ en tapant 'ls -al /usr/local/nagios/var'. Vous devriez voir quelque chose ressemblant à :

drwxrws---   2 nagios nagiocmd     1024 Aug 11 16:30 rw

Notez que l'utilisateur nagios est le propriétaire du répertoire et que le groupe nagiocmd est le groupe propriétaire du répertoire. L'utilisateur nagios a les permissions rwx et le groupe nagiocmd a les permissions rw sur le répertoire. Notez également que le bit de rappel du groupe est activé. C'est ce que nous voulons...

Redémarrez votre serveur Http

Une fois que vous avez mis des permissions correctes sur le répertoire contenant les fichiers de commande externe, assurez vous que vous avez redémarré votre serveur http. Si vous ne le faites pas, apache ne sera pas autorisé à écrire dans le fichier de commandes externes, même si l'utilisateur qui fait tourner celui-ci est membre du groupe nagiocmd.

Notes...

Si vous avez précisé l'option --with-command-grp=somegroup lors du lancement du script de configuration, vous pouvez créer le répertoire qui gardera automatiquement le fichier de commande et configurera les permissions correctes en tapant 'make install-commandmode'.