Jos*_*ing 10 ssh command-line bash root sudo
我知道“不使用sudo su -
”等。但老实说,几乎我们所有人都这样做。
所以,这就是问题所在。我们不能启用 root 登录,所以我们必须以我们的用户身份 ssh 进入,然后 su 到 root。
这是进程树:
1 7897 7826 7826 ? -1 S 1000 0:00 sshd: josh@pts/0
7897 7898 7898 7898 pts/0 8182 Ss 1000 0:00 \_ -bash
7898 7990 7990 7898 pts/0 8182 S 0 0:00 \_ sudo su -
7990 7991 7990 7898 pts/0 8182 S 0 0:00 \_ su -
7991 7992 7992 7898 pts/0 8182 S 0 0:00 \_ -su
7992 8182 8182 7898 pts/0 8182 R+ 0 0:00 \_ ps axjf
Run Code Online (Sandbox Code Playgroud)
我想从 root 退出,然后用一个命令从我的用户退出。有没有办法做到这一点?
BTW exit && exit 不起作用,因为它退出了 shell 并且不处理命令的其余部分
josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$
Run Code Online (Sandbox Code Playgroud)
Rma*_*ano 14
做就是了
exec sudo -i
Run Code Online (Sandbox Code Playgroud)
现在 root shell 正在替换默认的 shell,当你退出时,你退出“both”(措辞不正确,因为第一个 shell 停止存在exec
)。
看:
[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)
* Documentation: https://help.ubuntu.com/
[romano@pern:~] % exec sudo -i
[sudo] password for romano:
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
??sshd,1140 -D
??sshd,17450
??sshd,17570,romano
??sudo,17571,root -i
??bash,17665
??pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] %
Run Code Online (Sandbox Code Playgroud)
我经常使用它来拥有一个ssh
-ed 终端:使用exec ssh whatever
,当您退出时,终端将关闭。
小智 9
从技术上讲,没有人回答你的问题。我很欣赏他们认为他们的方式更好(可能是),但这是另一种方法(以防您需要su -
一些时间并遇到相同的问题);
$ sudo su -;exit
# echo "do things"
# exit
当您从 root 退出时,原始用户也将注销,因为它继续执行最后一个命令。
干杯!