Forum Programmation.shell Sudo/Scp

Posté par  .
Étiquettes : aucune
0
7
juil.
2009
Bonjour,


Je n'arrive pas à lancer un scp d'un fichier entre 2 machines en utilisant pourtant le sudo, si vous avez des idées :

Voila ma ligne de code :

/usr/local/bin/sudo /usr/bin/scp -p host1:/var/tmp/file1 /tmp



Et la conf du sudo sur host1 :

Cmnd_Alias SCP_DEST = /usr/bin/scp -p host1\:/var/tmp/file1 /tmp

user host1 = NOPASSWD : SCP_DEST


Mon script est lancé depuis host2 avec le compte user. Mon fichier se trouve sur host1 avec les droits root:root.


Merci!
  • # sudo est local à ta machine

    Posté par  . Évalué à 7.

    Sudo ne sert que pour ta machine locale : en l'occurrence, ici, ce serait juste pour avoir le droit d'écrire dans /tmp, ce qui ne doit pas servir à grand chose.

    Si tu as besoin de droits spéciaux sur un fichier sur la cible pour le copier, il faudra que ton utilisateur _sur la cible_ (host1) ait le droit d'y accéder directement, sans passer par sudo. Tu peux utiliser les groupes unix, par exemple. Tout cela à cause du fait que scp lance une commande de copie directement sous l'utilisateur qui s'est connecté à la machine.

    Sinon, si tu copies seulement un fichier, tu peux essayer un truc du genre :
    ssh host1 sudo cat /var/tmp/file1 > /tmp/file1
    Là, sudo est bien exécuté sur la machine distante, et tiens donc compte de la configuration locale à cette machine.
    • [^] # Re: sudo est local à ta machine

      Posté par  . Évalué à 1.

      En fait avec ta commande je copie le contenu du fichier dans le /tmp/ de la machine distante, alors que je voudrais qu'il soit copié dans le /tmp/ de la machine exécutant la commande.

      A la base dans mon script j'avais ça :


      su - user1 -c "scp -p host1:/var/tmp/destination /tmp"


      Ce qui fonctionnait mais cela demandait de rentrer manuellement le mot de passe. Je cherche en fait à remplacer cette commande avec des sudo pour pouvoir tout automatiser.

      Petite précision, le user1 du host2 existe également sur host1.
      • [^] # Re: sudo est local à ta machine

        Posté par  . Évalué à 2.

        T'aurais pu essayer la commande avant de me faire la morale : non, c'est bien le /tmp local dont je parle ; ce qui est exécuté sur la machine distante est tout ce qu'il y a avant la redirection. Ton shell intercepte la redirection comme une redirection locale (de ce qui va sortir sur stdout du "sudo cat" par ssh). Et ça marche.
  • # Manque de précision

    Posté par  . Évalué à 3.

    Que se passe-t-il quand tu lances ton script? Message d'erreur?
    • [^] # Re: Manque de précision

      Posté par  . Évalué à 1.

      Pas de message d'erreur, il me demande le mot de passe administrateur, ce qui se passe lorsqu'on ne déclare pas la commande dans la conf du sudo.

      Le problème comme évoqué précédemment c'est que la conf du sudo se fait en local. C'est un peu compliqué pour le scp car il faudrait pourvoir autoriser le ssh puis sur la machine distante le cp, mais ça ne marche pas comme ça...

Suivre le flux des commentaires

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