我正在尝试使用我的普通用户登录 Linux 机器,然后使用 bash 脚本成为 root。我的用户在 sudoers 文件中,因此它可以成为 root。
正常的过程如下:
$ssh regularuser@machine
regularuser@machine's password:
[regularuser@machine ~]$
[regularuser@machine ~]$ sudo su -
[sudo] password for regularuser:
[root@machine ~]$
我到处搜索以做到这一点,但我能找到的一切都不能完全满足我的需要。我也尝试使用 #!/usr/bin/expect 但它不起作用。
===========================================================================
我的工作 bash (access.sh) 如下,但它在发出“sudo su -”命令后要求我输入密码:
#!/bin/bash
machine=$1
ssh -t regularuser@$machine "sudo su -"
$ sh access.sh machine
regularuser@machine's password:
[sudo] password for regularuser:
[root@machine ~]# exit
logout
Connection to machine closed.
===========================================================================
尝试 #1 - 当我尝试以下操作时,我得到“ /usr/bin/expect: No such file or directory ”
#!/bin/bash
machine=$1
echo "Password?"
read -s password
expect -c '
spawn ssh regularuser@'"$machine"'
expect "Password: "
send '"$password\r"'
'
尝试 #2 - 结果相同
#!/bin/bash
machine=$1
echo "Password?"
read -s password
/usr/bin/expect << EOF
spawn ssh regularuser@$machine
expect "Password: "
send "${password}\r"
EOF
尝试#3 - 也不起作用。它在寻找匹配的 `'' 时给了我“意外的 EOF ”
#!/bin/bash
machine=$1
echo "Password?"
read -s password
ssh -t regularuser@$machine "echo $password | sudo -S su -"
$ sh access.sh machine
Password?
regularuser@machine's password:
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file
Connection to vm-all-all-ad-test-packages closed.
我也不能做 "sshpass -p "$password" ssh root@$machine" 因为我的普通用户的密码与 root 的不同
我尝试了几乎所有的东西,但没有成功。
有任何想法吗?!!