SSH: utilisateur de commutateur distant et commande d'exécution sous ce nouvel utilisateur

2

Je peux me connecter à une machine distante à l'aide de clés publiques / privées (sans mot de passe) en tant qu'utilisateur wakatana. Sur une machine distante, je peux émettre: sudo /usr/bin/rootsh -i -u rootje tape alors le mot de passe de root et je reçois les autorisations de root. Maintenant, j'aimerais "semi-automatiser" ce processus. Par semi-automatisation, je veux dire que je vais toujours avoir besoin du mot de passe root, mais je pourrai également passer d'autres commandes qui seront exécutées sous les autorisations root, par exemplecat /etc/shadow

J'ai essayé de suivre la commande suivante: ssh -t targetmachine "sudo /usr/bin/rootsh -i -u root; cat /etc/shadow"mais cela me donne l'invite de la racine interactive (après avoir tapé le mot de passe), et j'ai pu utiliser la machine distante comme si j'étais connecté en tant que root. Ce n’est qu’après avoir appuyé ctrl+dqu’il semble que le logiciel essaie de s’ouvrir /etc/shadowcar je reçois le message suivant:

cat: /etc/shadow: Permission denied
Connection to targetmachine closed.

Ce dont j'ai besoin, c'est en quelque sorte de passer la cat /etc/shadowcommande à rootsh. Mais le problème est que je ne suis pas capable de soduocommander autre que/usr/bin/rootsh -i -u root

Par exemple, lorsque j'ai essayé, sudo /usr/bin/rootsh -i -u root -- cat /etc/shadowje reçois le:

Sorry, user wakatana is not allowed to execute '/usr/bin/rootsh -i -u root -- cat /etc/shadow' as root on targetmachine.

Pour résumer, ce dont j'ai besoin, c'est

  1. accéder à la machine cible:
  2. basculer l'utilisateur sur root sur le serveur distant (tapez mot de passe)
  3. exécuter la commande sous cet utilisateur commuté
  4. fermer la connexion au serveur distant

Veuillez noter que je ne suis pas autorisé à:

  1. éditer le fichier sudoers
  2. ajout de clés publiques / privées à la racine
  3. permettant une connexion root directe

Je vous remercie

MODIFIER:

aussi j'ai essayé suggéré:

echo date | sudo /usr/bin/rootsh -i -u root

mais ça revient:

no tty/pty on stdin: Invalid argument
Wakan Tanka
la source

Réponses:

1

La plupart des coques liront à partir d' une entrée standard, même s'il ne s'agit pas d'un clavier. Voir si cela fonctionne sur targetmachine:

$ echo date | sudo /usr/bin/rootsh -i -u root
[sudo] password for you: 
Mon Oct 14 13:29:09 EDT 2013

Si c'est le cas, vous pouvez voir si l'utilisation de stdin fonctionne avec ssh:

$ echo 'date ; whoami ; cat /etc/shadow' | ssh -t targetmachine 'sudo /usr/bin/rootsh -i -u root'

Ou peut-être envoyer les commandes directement dans la télécommande sudo:

$ ssh -t targetmachine "echo 'date ; whoami ; cat /etc/shadow' | sudo /usr/bin/rootsh -i -u root"

Veillez à bien imbriquer les guillemets simples / doubles. (Mes tests montrent que sudocela ne fonctionne pas dans les exemples ci-dessus car il ne peut pas lire mon tty local pour obtenir un mot de passe.)

Ian D. Allen
la source
Malheureusement, cela n'a pas fonctionné pour moi
Wakan Tanka