Forum Linux.général commande reboot

Posté par  .
Étiquettes : aucune
0
28
nov.
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.
  • # sudo et sudoer

    Posté par  . Évalué à 7.

    te permet de donner le droit à un utilisateur, à un groupe, d'effectuer une ou plusieurs commande comme s'ils etaient root.

    man sudo
    man visudo
    • [^] # Re: sudo et sudoer

      Posté par  (site Web personnel) . Évalué à 1.

      Autre méthode possible : utiliser SSH et des clés autorisées pour partager l'accès root (limité aux commandes voulues) sans mot de passe.

      Le détail complet est dans le "Linux Security Cookbook" chez O'Reilly [1] en anglais.

      La recette détaillée est un peu longue, mais une partie est disponible sur le site web de l'éditeur [2] aux entrées "Sharing root Privileges via SSH" et "Running root Commands via SSH".

      En deux mots :

      - vérifier que la directive PermitRootLogin est à 'yes' dans le fichier sshd_config

      - ajouter les clés publiques des utilisateurs concernés au fichier /root/.ssh/authorized_keys

      - lancer une commande de la façon suivante : ssh -l root localhost commande

      [1] http://www.oreilly.com/catalog/linuxsckbk/index.html

      [2] http://www.oreilly.com/catalog/linuxsckbk/toc.html
  • # expect...

    Posté par  . É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.
    • [^] # Re: expect...

      Posté par  . É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.
      • [^] # Re: expect...

        Posté par  . É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.
        • [^] # Re: expect...

          Posté par  . É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...
          • [^] # Re: expect...

            Posté par  . Évalué à -1.

            +1 pour le suid-bit

            mais alors tous les utilisateurs pourront faire reboot
            • [^] # Re: expect...

              Posté par  . É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  . Évalué à 2.

                ce qui revient alors à
                - faire un groupe qui à les droits sudo sur reboot
                - ajouter la personne dans ce groupe
      • [^] # Re: expect...

        Posté par  . É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...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.