Question Lancer ipmitool en tant qu'utilisateur non root


Je souhaite surveiller certaines données liées au matériel sur un serveur CentOS6 sans tête. Plus spécifiquement, des choses comme les tensions, les vitesses de ventilation, les données thermiques ...

Étant donné que le serveur est sans tête, la meilleure façon de procéder consiste à utiliser un script php qui formaterait les résultats à partir de ipmitool de manière agréable.

Bien sûr, l'utilisateur du serveur web n'est pas root, ce serait mauvais. Malheureusement, il semble qu'un utilisateur non root ne dispose d'aucun droit d'accès. /dev/ipmi*, ce qui a également du sens.

Fonctionnement ipmitool -U "someUser" -P "somePassword" sdr me donne les lectures attendues en tant que root, mais renvoie

Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Get Device ID command failed
Unable to open SDR for reading

lorsque je suis connecté en tant que serveur Web.

J'ai cherché un peu ici et là et j'étais intéressé par devfs.rules, mais il semble que ce ne soit pas présent sur CentOS6, et je ne suis pas familier avec le montage /devles choses liées quand même.

Quelqu'un pourrait-il me diriger dans la bonne direction?


5
2018-02-08 20:22


origine




Réponses:


/dev/ipmi* est généralement limité à la racine uniquement comme vous l'avez trouvé. Vos options pour courir ipmitool en tant qu'utilisateur non root, êtes (dans l'ordre approximatif de mes préférences personnelles):

  1. Utilisation sudo (vous pouvez créer une entrée dans sudoers spécifiquement pour les personnes qui devraient être autorisées à exécuter simplement ipmitool si vous ne voulez pas leur donner également un accès sudo généralement illimité)

  2. Modifier votre udev règles afin que le périphérique soit accessible à un autre utilisateur / groupe (je ne sais pas où les règles udev sont conservées sur CentOS 6, mais recherchez sous quelque chose qui correspond à la facture). C'est la même approche que l'édition devfs.rules - La documentation CentOS vous guidera dans la bonne direction et cette page (ou un peu de google créatif) vous aidera avec la syntaxe udev. (Je vous donnerais des indications, mais je parle à peine moi-même: x)

  3. Connectez-vous à l'interface IPMI sur le réseau (si votre interface IPMI le prend en charge).
    Cela peut nécessiter de graver une interface réseau et un câble croisé, ou de connecter la carte IPMI à votre réseau, raison pour laquelle il figure si peu sur la liste.

  4. Faire ipmitool setuid-root.
    (Ouais. Ne fais pas ça. C'est généralement une mauvaise idée et un conseil terrible - fais comme si de rien n'était.)


6
2018-02-08 20:45



Merci pour votre réponse détaillée. Je pensais soudain mais ça semble soudain dans un script n'est pas trop facile. Même avec sudo -tt ipmitool blah et un fichier sudoers correctement défini (commenté Requiretty et ajouté ipmitool comme un NOPASSWD:-accessible command), il semble que je suis bloqué par l'ancien no tty present and no askpass program specified. Je vais fouiller un peu plus, mais j'essaierai la prochaine idée de la liste si je ne peux pas réussir :) - Silver Quettier
Peu importe mon commentaire. J'étais idiot et défini des autorisations sudo pour le mauvais utilisateur. C'est tout bon maintenant. Merci pour vos conseils :) - Silver Quettier