PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Manu Absolacom : rsync par Cron: permission denied

vendredi 26 juillet 2013 à 22:45

J’ai été confronté à un étrange problème sur certaines machines en Ubuntu 12.04 (precise) pour lequel je vous livre ma solution de contournement. Ce n’est pas transcendant, mais ça fonctionne en attendant d’en savoir plus ou de trouver une autre solution.An_rsync_Primer

S.O.S.s.h.

J’ai des dossiers que je synchronise avec ou depuis un serveur distant en utilisant rsync, principalement pour faire des sauvegardes. Ces commandes rsync sont intégrées dans des scripts que j’utilise depuis plusieurs années sans problème. Pour pouvoir éviter les problèmes de droits, ces scripts sont lancés par le cron du root.
La commande qui nous intéresse est de cette forme:
rsync -avP dossier/local manu@serveur:/dossier/distant/ > /tmp/monlog.log 2>&1

Et le root peut se connecter au serveur sans mot de passe par échange de clef ssh.

Or, depuis quelques temps, impossible de faire la sauvegarde. Les logs contiennent quelque chose comme ceci:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]

Alors que lorsque le programme est lancé en root depuis un terminal, il fonctionne sans erreur! (Donc pas de problème de droits d’accès aux dossiers/fichiers)

Environnement variable ou Variables d’environnement

Le cron n’ouvre pas un véritable shell lorsqu’il lance une action programmée, et les variables d’environnement utilisées dans une console ne sont pas toutes présentes. C’est peut être l’une des raisons du problème.

Sur certains forums, on a parlé de SSH_AUTH_SOCK et de SSH_AGENT_PID, mais je n’ai pas réussi à les faire prendre en compte pour résoudre le problème…

Où est la clef?

Qu’importe, indiquons à ssh qu’on veut utiliser la clef qui nous permet de s’identifier sur le serveur

rsync -avP -e "ssh -l root -i /root/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/ > /tmp/monlog.log 2>&1

Et? Pas mieux, toujours rejeté par le serveur…

Qui me parle ?

Comme les logs du serveur n’indiquaient pas d’informations utiles, il faut demander à rsync d’être plus bavard

rsync -avvvv -e "ssh -l root -i /root/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/  > /tmp/monlog.log 2>&1

Du coup, ça donne quelques indications dans le log:

opening connection using: ssh -l root -i /root/.ssh/id_rsa -l manu serveur rsync --server -vvvvue.Lsf . /dossier/distant/
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

Ahhhh! Pourquoi il me met un -l manu alors que je lui ai spécifié -l root ?
Eh bien je ne sais pas, mais c’est la source du problème: identifié en tant que manu, il ne peut donc plus accéder à la clef ssh du root.

Comme je suis vicieux et mauvais perdant, j’ai essayé d’accéder à la clef de manu:

rsync -avvvv -e "ssh -l root -i /home/manu/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/  > /tmp/monlog.log 2>&1

Et ça marche! Parce que le root peut entrer partout et lire les clefs de tous les utilisateurs (et surtout parce que manu aussi peut s’identifier en ssh sur le serveur sans mot de passe)

Et les droits d’accès aux dossiers ? Pas de problème, c’est toujours root (par l’intermédiaire du cron) qui lit les fichiers, mais il n’utilise pas sa propre clef et se fait passer pour manu dans le rsync.

Carpe diem

Pour résumer:

En tous cas, si vous avez des infos sur ce changement de comportement, ou sur le moyen de fonctionner à l’ancienne mode, n’hésitez pas à laisser une bafouille.

Gravatar de Manu Absolacom
Original post of Manu Absolacom.Votez pour ce billet sur Planet Libre.

Articles similaires

Yannig : Installation d'application Ruby on Rails sans connexion internet

vendredi 26 juillet 2013 à 15:43
Bizarrement, je n'avais jamais trop travaillé sur les applications écrit en rails et par conséquent, je n'avais jamais eu affaire aux désagréments qui vont avec. Bien sûr, je ne parle pas du langage en lui-même ni des frameworks qui vont avec. Non, c'est plutôt dans la gestion des gems avec le fameux utilitaires bundler.

Oui, parce qu'il faut savoir c'est que, si vous avez une connexion internet, ce brave ruby va gérer tout seul ses dépendances et compagnie. Par contre, si vous êtes comme moi dans une DMZ dans laquelle il n'est même pas question d'entendre parler de flux sortant sur un proxy, vous allez vite vous sentir seul.

C'est donc après avoir bien galéré que je me suis dit qu'une petite entrée sur mon blog aurait un double bénéfice (au delà de l'aspect purement narcissique) : me servir de pense bête et vous servir à vous les nombreux lecteurs de ce blog.

Par la suite, nous travaillerons sur l'installation de l'application Kibana (pour faire de la recherche de grosses données dans le nuage, euh, je veux dire, du scoring de big data dans le cloud).

Au début il vous faut quand même une connexion internet

Pour l'installation initiale de votre application, il vous faudra au moins une connexion internet pour commencer. Si vous n'avez pas accès directement à internet, vous pouvez toujours passer par un proxy. Pour cela, il faut exporter la valeur du proxy dans la variable http_proxy :

export http_proxy=http://user:mdp@proxy:port

Une fois ceci fait, vous pouvez lancer le bundle de votre application. Mais vous vous en doutez, avant de le faire il faut installer bundler. A noter que vous devrez installer les packages ruby et rubygems (si vous êtes sous Redhat, ça se fait très rapidement avec la commande yum install ruby rubygems). L'installation de bundler se fait simplement avec la commande suivante :

gem install bundler

Une fois que bundler est installé, nous allons pouvoir maintenant récupérer les gems pour notre application. Prenons le cas de l'application Kibana. Pour se faire, il vous faudra :
  • Décompresser votre application ;
  • Se rendre dans le répertoire décompressé et lancer la commande suivante :
bundle install

De là, l'ami bundle va se connecter sur internet et récupérer toutes les dépendances dont nous avons besoin.

Création d'un bundle

Maintenant que notre application tourne, nous allons maintenant pouvoir faire un bundle de nos dépendances afin de les recopier sur nos serveurs de production qui n'ont pas du tout de connexion internet (les pauvres ...). L'opération est très simple et se fait avec la commande suivante :

bundle package
Your Gemfile contains path and git blablabla.
Resolving dependencies...
Using rake (10.1.0)
Using daemons (1.1.9)
[...]
Your bundle is complete! blablabla.
Updating files in vendor/cache

De là, l'ami bundle devrait vous faire un répertoire vendor/cache avec les fameux gems à installer.

Installation en production

Il ne vous reste plus qu'à faire un transfert de ce répertoire dans le répertoire de l'application sur vos serveurs de production et de lancer la commande suivante :

bundle install --local

Là, bundle devrait comprendre qu'il faut qu'il utilise le contenu du répertoire vendor/cache. Il ne vous restera plus qu'à prendre un café à ma santé.

Gravatar de Yannig
Original post of Yannig.Votez pour ce billet sur Planet Libre.

K-Tux : Back to Basis : Make

vendredi 26 juillet 2013 à 11:50

Dans la vie d’un Nuxien, ça arrive souvent qu’on se mette à ./configure && make && make install.

Le petit tip d’aujourd’hui consiste à accélérer le make, qui peut être assez long suivant ce que vous compilez. Pour cela, il suffit de demander à make de se faire sur plusieurs jobs. Ici, 3 par exemple :

# make -j 3

And voilà…

Gravatar de K-Tux
Original post of K-Tux.Votez pour ce billet sur Planet Libre.

Noireaude : Les variantes d’Ubuntu 13.10 disponibles en version Alpha2

vendredi 26 juillet 2013 à 07:30

ubuntu-1310-saucy-salamander

Si vous avez l’âme d’un Alpha testeur et que vous avez envie de tester les prochaines versions de votre variantes préférées d’Ubuntu, vous allez être content d’apprendre que celles-ci sont désormais disponibles au téléchargement et peuvent dès à présent envahir vos Vbox ou vos machines test.  Alors nous allons la faire courte et ne pas nous attarder sur les changements relatifs à toutes les variantes, car le mieux est encore que vous le découvriez en live.

Si ça vous intéresse je vous ai mis les liens qui vont bien.

Amusez-vous bien et bon test.

source

flattr this!

Gravatar de Noireaude
Original post of Noireaude.Votez pour ce billet sur Planet Libre.

alterlibriste : Ubuntu Edge n'est-il pas le véritable objectif de l'évolution d'Ubuntu ?

jeudi 25 juillet 2013 à 21:54

Je suis désolé de venir mettre une nouvelle couche dans le buzz lancé autour d’Ubuntu Edge car ce n’était pas l’objet de mon blog et que ce genre de "gadget" ne m’attire pas vraiment puisque je n’ai même pas de smartphone (ni de tablette d’ailleurs).

Cependant, je voulais tout de même faire un petit billet non pas sur la technologie de l’objet, ni même sur sa viabilité, mais plutôt sur son existence même. Car tout le monde s’épanche sur ses capacités, son prix, les délais, ce qu’il proposera de merveilleux ou ses potentiels défauts sans trop examiner son origine.

Ubuntu a su rassembler énormément de gens et rendre GNU/Linux accessible à ceux qui n’avaient pas forcément réussi à s’y mettre pour des problèmes matériels, de complexité d’installation, d’austérité ou d’offre logicielle facilement installable (je sais avec un peu d’habitude ou de ténacité, on peut venir à bout de chacun de ces problèmes mais lorsque l’on vient de Windows ou de Mac, on n’est pas prêt à compiler tout de suite pour avoir ce que l’on veut).
Il s’est ensuite créé une communauté très dynamique permettant d’accéder à de la doc ou de l’aide sur les forums.

Jusque là, tout le monde allait dans le même sens.

Puis on a vu l’interface changer sans que la demande ne vienne des utilisateurs.
Au début, ce n’étaient que des détails, comme les boutons en haut des fenêtres en nous expliquant qu’ensuite, les applets allaient occuper cette place.
Et d’un seul coup, on nous a mis Unity d’office parce que c’est le progrès mon bon Monsieur et que toutes les interfaces graphiques mobiles allaient dans ce sens ; en fait, on nous a proposé une interface mobile sur des ordinateurs de bureau avant que les objets mobiles supportant cette interface n’existent ; c’est un peu le monde à l’envers.
Et puis, on nous a dit qu’Ubuntu aurait son propre serveur d’affichage contre l’avis de la communauté qui s’était accordée sur Wayland.

Canonical adopte aussi son propre bootloader compatible avec le Secureboot de Microsoft

J’arrêterai là pour les coups bas à la communauté du libre.

Pour le moment, le code est ouvert et ceux qui ne sont pas content des choix peuvent encore adapter leur distribution ou choisir une distribution dérivée pour profiter des avancées.

Mon propos ici n’est pas de critiquer Canonical ou de conseiller une autre distribution mais bien de dire que toutes ces évolutions avaient pour seul et unique but le projet Ubuntu Edge. Et si comme beaucoup semblent le penser (ici, ou encore ), le projet est voué à se casser la figure, maintenant que tout le monde est remonté par rapport au comportement pas très consensuel des choix faits par Canonical, que deviendra Ubuntu si cela arrive ?

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.