/etc/init.d/nagios depuis une interface web

Résolu
Slyers -  
 slyers -
Bonjour,

Je travaille actuellement à la mise en place d'un petit script exécutable depuis l'interface web.
A terme, l'utilisateur pourra cliquer sur une icone pour lancer le script (jusque là, je n'ai pas de problème).
Là où j'ai un problème, c'est que mon utilisateur n'a pas le droit de lancer un /etc/init.d/nagios reload.
J'ai essayé de mettre ceci dans visudo:
www-data ALL=NOPASSWD: /etc/init.d/nagios * (même avec reload à la place de *)
ou
apache ALL=NOPASSWD: /etc/init.d/nagios * (même avec reload à la place de *)

Ca ne fonctionne pas...
Donc, je ne sais plus trop quoi modifier...

En vous remerciant.
Configuration: Debian Etch
Mozilla 1.8.1.16

7 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    dans /etc/sudoeurs on ne mets pas les paramètres passer au script

    tu peux essayer de mettra ça
    www-data ALL=NOPASSWD: /etc/init.d/nagios
    et créer un script qui sera lancer par le clic
    #!/bin/bash
    /etc/init.d/nagios reload


    1
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    affiche le contenu de /etc/init.d/nagios
    1
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    que l'utilisateur doit ensuite faire sudo <commande> pour que ça fonctionne....
    effectivement ;-)

    ton problème est alors résolu?!
    1
  4. Slyers
     
    Je te remercie d'avoir répondu.
    Cependant, ça ne fonctionne toujours pas.
    J'ai également essayé en ligne de commande avec l'user www-data de faire /etc/init.d/nagios reload, mais il n'est pas d'accord...
    Il me mets "CONFIG ERROR! Reload aborted. Check your nagios configuration".
    Avec l'utilisateur root, aucun soucis.
    J'ai essayé de mettre www-data dans le groupe nagcmd mais il y était déjà!
    Donc, d'après le message, cela viendrait plus de Nagios que de Debian, c'est bizarre.

    Merci.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Slyers
     
    Voila le script de /etc/init.d/nagios
    Je ne suis pas sûr qu'il soit très utile.
    En tout cas, je ne cache que j'ai pas mal de difficultés à comprendre toutes les commandes.

    # Description: Starts and stops the Nagios monitor
    # used to provide network services status.
    #

    killproc_nagios ()
    {

    kill $2 $NagiosPID

    }

    pid_nagios ()
    {

    if test ! -f $NagiosRunFile; then
    echo "No lock file found in $NagiosRunFile"
    exit 1
    fi

    NagiosPID=`head -n 1 $NagiosRunFile`
    }

    # Source function library
    # Solaris doesn't have an rc.d directory, so do a test first
    if [ -f /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
    elif [ -f /etc/init.d/functions ]; then
    . /etc/init.d/functions
    fi

    prefix=/usr/local/nagios
    exec_prefix=${prefix}
    NagiosBin=${exec_prefix}/bin/nagios
    NagiosCfgFile=${prefix}/etc/nagios.cfg
    NagiosStatusFile=${prefix}/var/status.dat
    NagiosRetentionFile=${prefix}/var/retention.dat
    NagiosCommandFile=${prefix}/var/rw/nagios.cmd
    NagiosVarDir=${prefix}/var
    NagiosRunFile=${prefix}/var/nagios.lock
    NagiosLockDir=/var/lock/subsys
    NagiosLockFile=nagios
    NagiosCGIDir=${exec_prefix}/sbin
    NagiosUser=nagioscommander
    NagiosGroup=nagioscommander

    # Check that nagios exists.
    if [ ! -f $NagiosBin ]; then
    echo "Executable file $NagiosBin not found. Exiting."
    exit 1
    fi

    # Check that nagios.cfg exists.
    if [ ! -f $NagiosCfgFile ]; then
    echo "Configuration file $NagiosCfgFile not found. Exiting."
    exit 1
    fi

    # See how we were called.
    case "$1" in

    start)
    echo -n "Starting nagios:"
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
    rm -f $NagiosCommandFile
    touch $NagiosRunFile
    chown $NagiosUser:$NagiosGroup $NagiosRunFile
    $NagiosBin -d $NagiosCfgFile
    if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
    echo " done."
    exit 0
    else
    echo "CONFIG ERROR! Start aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;

    stop)
    echo -n "Stopping nagios: "

    pid_nagios
    killproc_nagios nagios

    # now we have to wait for nagios to exit and remove its
    # own NagiosRunFile, otherwise a following "start" could
    # happen, and then the exiting nagios will remove the
    # new NagiosRunFile, allowing multiple nagios daemons
    # to (sooner or later) run - John Sellens
    #echo -n 'Waiting for nagios to exit .'
    for i in 1 2 3 4 5 6 7 8 9 10 ; do
    if status_nagios > /dev/null; then
    echo -n '.'
    sleep 1
    else
    break
    fi
    done
    if status_nagios > /dev/null; then
    echo ''
    echo 'Warning - nagios did not exit in a timely manner'
    else
    echo 'done.'
    fi

    rm -f $NagiosStatusFile $NagiosRunFile $NagiosLockDir/$NagiosLockFile $NagiosCommandFile
    ;;

    status)
    pid_nagios
    printstatus_nagios nagios
    ;;

    checkconfig)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    echo " OK."
    else
    echo " CONFIG ERROR! Check your Nagios configuration."
    exit 1
    fi
    ;;

    restart)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    echo "done."
    $0 stop
    $0 start
    else
    echo " CONFIG ERROR! Restart aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;

    reload|force-reload)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    echo "done."
    if test ! -f $NagiosRunFile; then
    $0 start
    else
    pid_nagios
    if status_nagios > /dev/null; then
    printf "Reloading nagios configuration..."
    killproc_nagios nagios -HUP
    echo "done"
    else
    $0 stop
    $0 start
    fi
    fi
    else
    echo " CONFIG ERROR! Reload aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;

    *)
    echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig}"
    exit 1
    ;;

    esac

    # End of this script

    Je te remercie de m'aider
    0
  7. Slyers
     
    Excuses moi de t'avoir pris du temps, je viens de comprendre quelque chose...
    En fait, c'est la première fois que j'utilise visudo, et j'avais pas compris que l'utilisateur doit ensuite faire sudo <commande> pour que ça fonctionne....
    Désolé.
    Merci de m'avoir aidé, bonne journée.
    0
  8. slyers
     
    Oui,
    il l'est, merci à toi lami20j.
    Mon script fonctionne maintenant comme je le souhaitais (et en plus, j'ai appris à utiliser visudo, voila une journée bénéfique...)
    0