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
Ever feel achy from sitting crunched up on your computer table? Try lying down with these optical glasses that allow you to work on your laptop while lying flat on your back. This is the perfect solution with those with limited mobility or those who wish to prevent neck cramps and back strains.$ Check price
In this completely revised second edition of the perennial best seller How Linux Works, author Brian Ward makes the concepts behind Linux internals accessible to anyone curious about the inner workings of the operating system. Inside, you'll find the kind of knowledge that normally comes from years of experience doing things the hard way.$ Check price