I am able to connect to remote machine using public/private keys (without password) as user wakatana. On remote machine I am able to issue: sudo /usr/bin/rootsh -i -u root then I type root's password and I get root's permissions. Now I would like to "semi-automate" this process. By semi-automation I mean that I will still need pass root's password but also I will be able to pass another commands which will be executed under root permissions e.g. cat /etc/shadow

I have tried following command: ssh -t targetmachine "sudo /usr/bin/rootsh -i -u root; cat /etc/shadow" but this gives me the interactive root's prompt (after I type the password), and I was able to use the remote machine as if I was logged as root. Only after pressing ctrl+d it seems that it tries to open /etc/shadow because I get the message:

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

What I need is to somehow pass the cat /etc/shadow command to rootsh. But the problem is that I am not able to soduo any other command than /usr/bin/rootsh -i -u root

For example when I tried sudo /usr/bin/rootsh -i -u root -- cat /etc/shadow I get the:

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

To sum it up, what I need is

  1. access the target machine:
  2. switch user to root on remote server (type password)
  3. execute command under this switched user
  4. close connection to remote server

Please note that I am not allowed to:

  1. edit sudoers file
  2. adding public/private keys to root
  3. allowing direct root login

Thank you


also I have tried suggested:

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

but it returns:

no tty/pty on stdin: Invalid argument

1 Answer 1


Most shells will read from standard input even if it isn't a keyboard. See if this works on targetmachine:

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

If so, you can see if using stdin works over ssh:

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

Or maybe send the commands directly into the remote sudo:

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

Be careful to get the single/double quotes nested correctly. (My tests show that sudo doesn't work in the above examples because it can't read my local tty to get a password.)

  • Unfortunately this did not work for me Oct 15, 2013 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.