Bash - ssh - location clé privé - Shell/Batch - Programmation
Marsh Posté le 17-07-2010 à 10:02:53
ffomnislash a écrit : Bonjour, |
Salut
Déjà le setuid sur un script ne fonctionne pas. En effet, dans un script (par exemple shell), c'est le programme /bin/bash qui exécute ton script et donc il faudrait que ce soit /bin/bash qui ait le setuid. Essaye, par exemple, de faire créer par ton script un fichier quelconque dans le home de USER2, ça m'étonnerait que ça marche.
Sinon pour ton problème, tu peux encapsuler ton ssh dans un su - USER2 -c "ssh 'USER2@machin.com'" (le petit "-" signifie que le su doit aussi récupérer l'environnement de USER2) ou bien sudo USER2 "ssh 'USER2@machin.com'" (le sudo récupère l'environnement par défaut) et comme ça, plus besoin de setuid...
Marsh Posté le 19-07-2010 à 08:15:36
Désolé j'ai manqué de précision. Le setudi est sur un binaire (écrit en C) qui va exécuter un script qui va faire un ssh.
Pour su et sudo il est nécessaire de saisir un mot de passe et je n'ai pas accès à la configuration de la machine. L'avantage du setudi est que je peut le mettre en place sans demander d'autorisation )
Marsh Posté le 23-07-2010 à 19:32:21
ffomnislash a écrit : Désolé j'ai manqué de précision. Le setudi est sur un binaire (écrit en C) qui va exécuter un script qui va faire un ssh. |
Ok. Impossible d'appeler su ou sudo.
Donc tu crées un exécutable qui va appeler un script qui fait appel à ssh. Le problème, c'est que si tu exécutes cet exécutable, il sera exécuté avec ton environnement. Le setuid change le uid mais ne change pas l'environnement général et ne permet pas de te "faire passer" pour quelqu'un d'autre.
Tu vas donc modifier ton exécutable pour que le début ressemble à ceci
Code :
|
"Normalement" ça devrait fonctionner. Pour être vraiment béton il faudrait parser tout l'environnement et remplacer partout où il y a "user1" par "user2" (et non pas se contenter de LOGNAME) mais je pense que juste ça, ça suffit...
Marsh Posté le 16-07-2010 à 16:47:37
Bonjour,
J'ai un petit problème. J'exécute un script avec setuid afin de me faire passer pour USER2, ensuite mon script exécute un ssh "USER2@machin.com". Mon problème est que ssh n'utilise pas la clé privé de USER2. Il doit y avoir un problème d'environnement.
Vous avez une idée de comment résoudre ce problème ?