用一个命令从root和user退出


9

我知道“不使用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出口&&出口不起作用,因为它退出了外壳并且不处理命令的其余部分

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

5
“几乎我们所有人都这样做。”我对此表示怀疑。我维护着几台机器并拥有所有密码,并且我从未在基于debian的系统上使用“ sudo su”。我希望我们大多数人不要使用它。
Rinzwind 2015年

1
不要使用sudo su,它没有意义,只是启动了一个额外的过程。sudo -i如有必要,请使用。
terdon 2015年

sudo -i用来获取根外壳。对于ssh,您可以将ssh配置为允许root用户登录,就我个人而言,我对root用户使用“ without-password”选项,并且对任何ssh密钥都使用kerberos。这样可以将根帐户锁定为密码。

我不太明白什么是行不通的。第一个exit退出su,第二个退出。这不是你想做的吗?
飞行员

1
@ Pilot6您测试过该代码了吗?我只是这样做了,所以它不起作用..那只是我想做的..但是它不起作用..
Joshua Zitting

Answers:


9

从技术上讲,没有人回答您的问题。我很欣赏他们认为自己的方法更好(可能是这样),但是这是另一种方法(以防您需要su -一些时间并且遇到相同的问题);

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

当您从root退出时,原始用户也将注销,因为它继续执行上一个命令。

干杯!


14

做就是了

exec sudo -i

现在,根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并在退出时关闭终端。


2
做得很好!!!谢谢!我不再需要两次键入退出!
Joshua Zitting

巧妙地完成!优秀
Anwar

1

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

sudo -s && exit

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

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.