Exit from both root and user with one command
Solution 1
Technically, no one answered your question. I appreciate that they think their way is better (probably is), but here's another approach (in case you have to su -
some time and have the same issue);
- [Log into a system]
$ sudo su -;exit
# echo "do things"
# exit
When you exit from root, the original user will also log out since it's continuing it's last command.
Cheers!
Solution 2
Just do
exec sudo -i
Now the root shell is replacing the default one, and when you exit, you exit "both" (incorrectly worded, since the first shell stop existing with the exec
).
Look:
[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:~] %
I use it a lot to have a ssh
-ed terminal: use exec ssh whatever
and when you exit, the terminal closes.
Solution 3
when you are becoming root user just type::
sudo -s && exit
when you will exit from root you shell will automatically close. you can export this command to make it permanent.
echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
Related videos on Youtube
Joshua Zitting
Updated on September 18, 2022Comments
-
Joshua Zitting over 1 year
I know about "not using
sudo su -
" etc. But let's be honest, almost all of us do it.So, here is the issue. We can't have root logins enabled, so we have to ssh in as our user then su to root.
Here is the process tree: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
I would like to exit from root, then from my user with one command. Is there a way to do this?
BTW exit && exit does not work because it exits the shell and doesnt process the rest of the command
josh@ubuntu:~$ sudo su - root@ubuntu:~# exit && exit logout josh@ubuntu:~$
-
Rinzwind over 8 years"Almost all of us do it.. " I doubt that. I maintain several machines and have all the passwords and I never ever use "sudo su" on debian based systems. And I expect most of us to not use it.
-
terdon over 8 yearsDon't use
sudo su
, it's pointless and just launches an extra process. Usesudo -i
, if you have to, instead. -
Panther over 8 yearsI use
sudo -i
to obtain a root shell. As to ssh, you can configure ssh to allow root logins, personally I use the "without-password" options for root and either ssh keys er kerberos. This keeps the root account locked to passwords. -
Pilot6 over 8 yearsI do not quite get what does not work. First
exit
exitssu
, the second one logouts. Isn't it what you wanted to do? -
Joshua Zitting over 8 years@bodhi.zazen I know you can allow root login.. but "WE cant have root ssh access enabled"
-
Pilot6 over 8 yearsTry to run
exit
that anotherexit
. It does the same asexit && exit
. -
Joshua Zitting over 8 years@Pilot6 have you tested that code?? I just did and it does not work.. that is JUST what I want to do.. But it doesnt work..
-
Panther over 8 yearswe can allow root logins, your IT department may not allow this, you should be more specific in your questions and avoid such general terms. Us
killall --user $user
where user is your login user -
goo over 8 yearsOf course
exit && exit
fails - first&&
evaluates the LHS (Left Hand Side) of the expression and exits. Second, but it has already exited, and returned control to the parent. -
Malte Skoruppa over 8 years@JoshuaZitting You can also hit Ctrl+D instead of typing
exit
, which is a lot quicker in my opinion. In a situation such as the one you describe I would simply hit Ctrl+D twice to exit both shells. You don't even have to let go of the Ctrl key; simply hold it down and hit D twice. Super fast. :) -
Cyrus over 8 yearsHold Ctrl+d to exit.
-
-
Joshua Zitting over 8 yearsNICELY DONE!!! Thank you! I no longer have to type exit twice!!
-
Anwar over 7 yearsCleverly done! excellent