Unix & Linux: How to switch between users on one terminal?
The Question: I'd like to log in as a different user without logging out of the current one
(on the same terminal). How do I do that?
Solutions: Please watch the whole video to see all solutions, in order of how many people found them helpful
== This solution helped 51 people ==
Generally you use sudo to launch a new shell as the user you want; the -u flag
lets you specify the username you want:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
There are more circuitous ways if you don't have sudo access, like ssh
username@localhost, but I think sudo is probably simplest if it's installed and
you have permission to use it
== This solution helped 646 people ==
How about using the su command?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
If you want to log in as root, there's no need to specify username:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
Generally, you can use sudo to launch a new shell as the user you want; the -
u flag lets you specify the username you want:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
There are more circuitous ways if you don't have sudo access, like ssh
username@localhost, but sudo is probably simplest, provided that it's installed
and you have permission to use it.
== This solution helped 28 people ==
$ whoami
This command prints the current user. To change users, we will have to use this
command (followed by the user's password):
$ su secondUser
Password:
After entering the correct password, you will be logged in as the specified
user (which you can check by rerunning whoami.
== This solution helped 9 people ==
To switch the terminal session to a different user, where that user can't exit
back into the original user, use exec:
$|# exec su - [username]
This will technically login the new user in a new term process, and close out
the current one. That way when the user attempts exit or Ctrl-D, the terminal
will close as though that user was the one who instantiated it, i.e., the user
can't exit back into the original user's term. Kind of pointless, considering
they can still just start a new terminal session and automatically be in the
original user term login, but there it is.
EDIT: For what it's worth, you can use linux vlock command in your ~/.bashrc to
lock terminal sessions by default, requiring the password of the term session
user to unlock. This would somewhat prevent the aforementioned term restart
under the original user context, given the term isn't instantiated using the
non-default ~/.bashrc of the user, as configured.
== This solution helped 18 people ==
If you're running Ubuntu, and if the user you want to login as doesn't have a
password set:
sudo su - username
Enter your own password and you should be set. Of course, this requires that
your user has rights to gain root privileges with sudo.
With thanks & praise to God, and with thanks to the many people who have made this project possible! | Content (except music & images) licensed under cc by-sa 3.0 | Music: https://www.bensound.com/royalty-free-music | Images: https://stocksnap.io/license & others | With thanks to user tshepang (https://unix.stackexchange.com/users/688), user SYANiDE (https://unix.stackexchange.com/users/83995), user Sundae (https://unix.stackexchange.com/users/26196), user Pratt (https://unix.stackexchange.com/users/2458), user Michael Mrozek (https://unix.stackexchange.com/users/73), user Maksim Luzik (https://unix.stackexchange.com/users/235665), user Hopping Bunny (https://unix.stackexchange.com/users/79890), user HalosGhost (https://unix.stackexchange.com/users/65525), user azatar (https://unix.stackexchange.com/users/87082), user Ashish Saini (https://unix.stackexchange.com/users/78885), user andilabs (https://unix.stackexchange.com/users/50381), and the Stack Exchange Network (http://unix.stackexchange.com/questions/3568). Trademarks are property of their respective owners. Disclaimer: All information is provided "AS IS" without warranty of any kind. You are responsible for your own actions. Please contact me if anything is amiss at Roel D.OT VandePaar A.T gmail.com.
4 Comments