Sometimes we need to take on someone else's identity to carry out a specific task.
Let's begin by looking at
su, which is used to assume the identity of another user. Then we'll discuss
sudo, which is used to execute a single authorized command.
su command (aka switch user), allows you to switch to any user account, as long as you know the password.
For example, to switch to the user bob, simply pass
bob as the argument to
$ su bob Password:
Don't worry if the password isn't showing any characters as you type - the shell is still reading what you type into the buffer.
If you'd like to load the user's entire environment, you can do so with the
$ su -l bob Password: # Environment gets loaded # Working directory is bob's home directory
To switch to the superuser, simply use a single hyphen
$ su -
-l option is interchangable with using
-. Keep in mind that with no argument after the hyphen, the shell assumes the superuser.
In case you just want to execute a single command as the user, use the
$ su bob -c 'dougie'
This code will execute the command
dougie under the user
bob. Make sure to enclose your command in single quotes to prevent expansion!
To exit and return to your account, use the
sudo command allows a permitted user to execute a command that he or she is entitled to.
The list of who can perform what is kept in a file called /etc/sudoers, and is maintained only by the root adminstrator.
The administrator is able to use this file to allow access to different users in a controlled way. With this, users may be restricted to one or more specific commands and no others.
sudo does not start a new session or load any environmental configurations, and when using sudo, the user enters his own password - not the superusers's.
sudo, simply pass in the command after the
$ sudo vim /etc/hosts Password: # Now you can edit this secure file
Many times you'll input a command that the shell will complain that you don't have sudo permissions. Instead of typing the command again, you can simply call
sudo !! to run the same command with sudo permissions.
su switches you to the root user account (or another user's) and requries a specific password.
sudo, on the other hand, runs a single command with root priveleges and does not require a root user password.
The /etc/sudoers file defines who can perform what commands with
sudo. To access this file, use the
# Defines users User_Alias ADMINS = user1, user2 # Users with ADMINS alias can use sudo to execute commands as root # First ALL = any host, Second ALL = any command ADMINS ALL = NOPASSWD: ALL # superuser may also use sudo to run any command on any host. # (ALL) means superuse may also run commands as any other user. root ALL = (ALL) ALL
The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more.$ Check price
Stretch out your back and relieve your back muscles with inversion therapy. This device counteracts the forces of gravity on the body by decompressing and elongating the spine. By using this product just ten minutes a day, you can be well on your way to improved circulation and posture while relieving muscle aches, back pain and stress.$$ Check price