使用一个命令退出root和user

我知道“不使用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 

我想退出root,然后从我的用户退出一个命令。 有没有办法做到这一点?

BTW exit && exit不起作用,因为它退出shell并且不处理命令的其余部分

 josh@ubuntu:~$ sudo su - root@ubuntu:~# exit && exit logout josh@ubuntu:~$ 

从技术上讲,没有人回答你的问题。 我感谢他们认为他们的方式更好(可能是),但这是另一种方法(如果你需要su -一段时间并且有相同的问题);

  1. [登录系统]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

当您从root退出时,原始用户也将注销,因为它正在继续它的最后一个命令。

干杯!

做就是了

 exec sudo -i 

现在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:~] % 

我使用了很多ssh -ed终端:使用exec ssh whatever何时退出,终端关闭。

当你成为root用户时只需输入::

 sudo -s && exit 

当你从root退出时,你的shell会自动关闭。 您可以导出此命令以使其永久化。

 echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc