使用一个命令退出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 -
一段时间并且有相同的问题);
- [登录系统]
-
$ sudo su -;exit
-
# echo "do things"
-
# 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