使用一个命令退出 root 和用户

使用一个命令退出 root 和用户

我知道“不使用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 权限,然后退出我的用户权限。有什么办法吗?

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

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

答案1

做就是了

exec sudo -i

现在,根 shell 正在替换默认 shell,并且当您退出时,您将退出“两者”(措辞不正确,因为第一个 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并且当你退出时,终端关闭。

答案2

从技术上讲,没有人回答你的问题。我很欣赏他们认为他们的方法更好(可能确实如此),但这里有另一种方法(以防你有su -时间并且遇到同样的问题);

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

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

干杯!

答案3

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

sudo -s && exit

当您退出 root 权限时,您的 shell 将自动关闭。您可以导出此命令以使其永久生效。

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

相关内容