Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Linux.general : commande reboot

Posté par steven51 () le 28 novembre 2007
bonjour,



je souhaite pouvoir donner la possibilité à un utilisateur (autre que root) de pouvoir redémarrer Linux...en saisissant la commande "reboot" par exemple.

l'utilisateur pour info se connecte via un telnet...mais ca ne change rien au problème...

Bien évidement, je ne souhaite pas donner le mot de passe de root...par contre je veux bien claquer en dur le mot de passe pour pouvoir l'utiliser dans un script ou un petit programme.



J'ai essayé "su -c reboot < root.pw" root.pw étant un fichier contenant le mot de passe de root....mais ça ne fonctionne pas.



Comment faire?



merci.

> Lire le message (10 commentaires, moyenne: 2,4).  

Vous avez demandé le commentaire #885894.

expect...

Posté par Gyro Gearllose () le 28/11/2007 à 12:52. (lien). Évalué à 1.

Évidement, sudo est certainement un bon utilitaire, mais il y en a un autre qui propose une alternative se rapprochant de ta démarche initiale : expect.
Si tu veux en savoir plus, tu peux aller regarder les pages ici :
http://expect.nist.gov/FAQ.html
Voilà, en espérant que ça aide, comme on dit.

--
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
  • [^]Re: expect...

    Posté par Gyro Gearllose () le 28/11/2007 à 13:35. (lien). Évalué à 1.

    Je me répond à moi-même, car j'ai fouillé un peu plus, et on peut effectivement faire ce qui est demandé avec expect.
    J'ai utilisé le lien [1] pour faire un pauvre essai dont voici le code :


    #!/usr/bin/expect
    puts "Getting root listing"

    spawn su - -c "ls"

    expect ":"

    send "mdpderoot\r"

    expect eof
    puts "Done."



    Il faut évidement mettre le vrai mot de passe de root à la place de mdpderoot.
    Et pour répondre à la question posée, remplacer ce qui est après l'appel à spawn par reboot.

    [1] http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/scripting/5.(...)

    P.S. : Au moment où je frappe ces quelques lignes, je constate que mon message précédent a été "moinsé", j'aimerai bien savoir pourquoi.

    --
    All articles which are excluded shall be deemed included
    Tous les articles exclus sont considérés inclus
    --Brian de Palma in Phantom of the Paradize
    • [^]Re: expect...

      Posté par NeoX () le 28/11/2007 à 14:52. (lien). Évalué à 5.

      aucune idée pour le moinssage.

      expect, c'est surement bien, mais ca veut aussi dire que la personne qui peut lire le script, connait le mot de passe root

      si elle connait le mot de passe root, alors elle peut etre root
      et tu ne pourras pas la limiter à seulement la commande reboot.

      idem pour le coup du fichier que tu redirige vers le su -c

      je penses donc serieusement que le sudo reste le meilleur outil pour autoriser une seule commande (reboot) habituellement lancée par root à un utilisateur ou un groupe d'utilisateur.

      --
      Apprendre par les autres, c'est bien.
      Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
      • [^]Re: expect...

        Posté par Gyro Gearllose () le 28/11/2007 à 14:56. (lien). Évalué à 1.

        Entièrement d'accord avec toi, tes remarques sont très pertinentes. Ceci étant je m'étais basé sur la phrase suivante dans le message d'origine :
        "J'ai essayé "su -c reboot < root.pw" root.pw étant un fichier contenant le mot de passe de root....mais ça ne fonctionne pas."

        Et c'est en me basant là dessus que j'ai formulé une solution collant au plus près à la demande, même si elle n'est pas parfaite...

        Ceci étant, il y a aussi d'autres mécanismes comme le suid-bit par exemple, qui sont beaucoup plus simples que celles proposées...

        --
        All articles which are excluded shall be deemed included
        Tous les articles exclus sont considérés inclus
        --Brian de Palma in Phantom of the Paradize
        • [+] [^]Re: expect...

          Posté par NeoX () le 28/11/2007 à 15:39. (lien). Évalué à -1.

          +1 pour le suid-bit

          mais alors tous les utilisateurs pourront faire reboot

          --
          Apprendre par les autres, c'est bien.
          Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
          • [^]Re: expect...

            Posté par daggett () le 28/11/2007 à 16:34. (lien). Évalué à 2.

            En fait il suffit que le binaire 'reboot' et l'utilisateur appartiennent à un groupe spécifique (et personne d'autre), et restreindre l'exécution à owner+group et pas other.

            • [^]Re: expect...

              Posté par NeoX () le 28/11/2007 à 17:08. (lien). Évalué à 2.

              ce qui revient alors à
              - faire un groupe qui à les droits sudo sur reboot
              - ajouter la personne dans ce groupe

              --
              Apprendre par les autres, c'est bien.
              Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux

      [^]Re: expect...

      Posté par B. franck () le 29/11/2007 à 00:45. (lien). Évalué à 5.

      P.S. : Au moment où je frappe ces quelques lignes, je constate que mon message précédent a été "moinsé", j'aimerai bien savoir pourquoi.

      peut-être parce que la solution d'expect oblige à laisser le fichier en lecture et qu'il contient le mdp de root, donc le donne à quiconque peut lire (exécuter) le script.
      Le pré-requis de départ étant "ne pas donner le mdp root" c'est donc une fausse route.

      (Sans parler du gigantesque trou de sécurité que l'on ouvre avec cette méthode, mais passons...)