I do not have sudo su
over a username, however I have its password. I want to have an script that passes the password and gives me an interactive bash.
I have tried this:
echo mypassword | su - otherusr
Password: Last login: Wed Jul 25 12:09:38 COT 2018
[myuser@myserver ~]$
It returns me to myuser and I do not have an interactive bash with the other user.
I tried also:
echo mypassword | su -c "/bin/bash" - otherusr
echo mypassword | su -s "/bin/bash" - otherusr
echo mypassword | su -c "/bin/bash -i" - otherusr
Password: bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
bash-4.2$ exit
How can I do that? I want to create an script that returns me an interactive bash session with another user; not just execute a command with another user.
Best Answer
By default neither
sudo
norsu
reads a password from stdin. They try to use a terminal device directly (some implementations may even complain when used in a pipe). There issudo -S
option to change this behavior, but as far as I know there is no similar option forsu
.Solution: use
expect
.In your case the script may be:
I advise to make this script accessible only to you (
chmod go-rwx
). Other users shouldn't be allowed to read it because it containsmypassword
in plaintext; they shouldn't be allowed to run it, because it gives access tootherusr
's shell.