我知道“不使用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 -
时间并且遇到同样的问题);
- [登录系统]
$ sudo su -;exit
# echo "do things"
# exit
当您退出 root 权限时,原始用户也将注销,因为它正在继续执行最后一个命令。
干杯!
答案3
当您成为 root 用户时,只需输入::
sudo -s && exit
当您退出 root 权限时,您的 shell 将自动关闭。您可以导出此命令以使其永久生效。
echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc