Which linux command can be used to let you run a single command as another user?

If you're confused about what su and sudo commands do for you, this brief guide will help you sort them out.

Posted: March 30, 2021 |%t min read| by Bryant Son (Sudoer, Red Hat)

Image

Which linux command can be used to let you run a single command as another user?

Photo by Miguel Á. Padriñán from Pexels

This article explores the differences between the sudo and su commands in Linux. You can also watch this video to learn about these commands. Becoming root permanently with su is a well-known 'no-no' in the *nix universe. Why? Because becoming root with su means that you are root, which is the same as logging into a terminal as the root user with root's password. And that's dangerous for many reasons.

[ You might also enjoy: Linux command line basics: sudo ]

Working as root means that you have the power to:

  • Remove any or all files
  • Change the permissions of any or all files
  • Change the runlevel of the system
  • Alter user accounts
  • Mount or unmount filesystems
  • Remove or install software
  • Create, remove, and alter file systems

Basically, you can do anything to the system as the root user. It is the all-powerful administrative account. And, unlike other more chatty operating systems, you won't see a, "Are you sure?" dialog to be sure that the

$ sudo dnf install nginx
0 command you just issued was in
$ sudo dnf install nginx
1 rather than at
$ sudo dnf install nginx
2. As you can imagine, errors made as the root user can be irreversible and devastating. There is an alternative: sudo.

sudo

sudo, which is an acronym for superuser do or substitute user do, is a command that runs an elevated prompt without a need to change your identity. Depending on your settings in the

$ sudo dnf install nginx
5 file, you can issue single commands as root or as another user. To continue running commands with root power, you must always use the sudo command. For example, if you want to install the Nginx package, you run:

$ dnf install nginx

But you will see an error if you are not root or in the sudo group. Instead, if you run this command:

$ sudo dnf install nginx

You will be asked to type your password, and then you can run the command if you are a part of the sudo group.

A simple way to switch to an interactive session as a root user is the following:

$ sudo -i

More Linux resources

  • Advanced Linux commands cheat sheet
  • Download RHEL 9 at no charge through the Red Hat Developer program
  • A guide to installing applications on Linux
  • Linux system administration skills assessment

The theory behind using sudo is that the act of issuing the sudo command before any command you run makes you think more about what you're doing and hopefully make fewer mistakes with an account that possesses unlimited power.

su

su, on the other hand, is an acronym for switch user or substitute user. You are basically switching to a particular user and you need the password for the user you are switching to. Most often, the user account you switch to is the root account but it can be any account on the system.

For example, if you type:

$ su -

In the above example, you are switching to root and you need the root password. The (

$ sudo dnf install nginx
7) switch provides you with root's environment (path and shell variables) rather than simply giving you root user power for a single command while keeping your own environment.

$ su bryant

For the second example, you are switching to bryant, and so you need bryant's password unless you are root.

If you want to switch to the bryant user account including bryant's path and environment variables, use the (

$ sudo dnf install nginx
7) switch:

$ su - bryant

The (

$ sudo dnf install nginx
7) switch has the same effect as logging into a system directly with that user account. In essence, you become that user.

Wrap up

Recapping what you've learned.

  • sudo lets you issue commands as another user without changing your identity
  • You need to have an entry in
    $ sudo dnf install nginx
    5 to execute these restricted permissions
  • $ sudo -i
    2 brings you to an interactive session as root
  • su means to switch to a particular user
  • Just typing su switches to the root user
  • sudo will ask for your password, while su will ask for the password for the user whom you are switching to

[ Want to learn more about security? Check out the IT security and compliance checklist. ] 

But when do you use one, not another? Since the sudo policy is defined in

$ sudo dnf install nginx
5, this can give powerful permission controls. Since sudo can pretty much do everything that su can, I would say it is best to stick with sudo unless you are working with some legacy codes that require the su command.

Image

Which linux command can be used to let you run a single command as another user?

Real sysadmins don't sudo

Or do they? This opinion piece from contributor David Both takes a look at when sudo makes sense, and when it does not.

Posted: April 17, 2020

Author: David Both (Sudoer alumni)

Image

Which linux command can be used to let you run a single command as another user?

Using sudo to delegate permissions in Linux

This article explores some legitimate use cases for the sudo command.

Posted: April 20, 2020

Author: David Both (Sudoer alumni)

Image

Which linux command can be used to let you run a single command as another user?

Linux command line basics: sudo

Learn to elevate your work and your permissions by becoming a super user with sudo.

Posted: February 11, 2020

Author: Tyler Carrigan (Editorial Team, Red Hat)

Topics:   Linux   Linux administration   Security  

Which linux command can be used to let you run a single command as another user?

Bryant Son

Bryant Jimin Son is a Consultant at Red Hat, a technology company known for its Linux server and opensource contributions. More about me

Red Hat Summit 2022: On Demand

Get the latest on Ansible, Red Hat Enterprise Linux, OpenShift, and more from our virtual event on demand.

Register for free

Image

Which linux command can be used to let you run a single command as another user?

Find anything you need with fzf, the Linux fuzzy finder tool

I'm thankful for the Linux fuzzy finder tool because it superpowers the command line by making it fast to find whatever I'm looking for.

Posted: November 25, 2022

Author: Ricardo Gerardi (Sudoer, Red Hat)

Image

Which linux command can be used to let you run a single command as another user?

How to verify Mastodon users with cryptography

Use open source GPG key pairs and Keyoxide to prove your identity on Mastodon.

Posted: November 28, 2022

Author: Seth Kenlon (Editorial Team, Red Hat)

Image

Which linux command can be used to let you run a single command as another user?

Top 15 articles sysadmins are thankful for in 2022

Enable Sysadmin has published more than 1,200 articles; these are the favorites sysadmins turn to month after month.

Which Linux command can be used to let you run a single command as another user the root for example )?

3. Using su. su is a command-line tool that is commonly used to switch users in Linux. Additionally, it also allows us to execute scripts or commands as another user.

What command can you use to switch to a different user in Linux?

You can change the user ID associated with a session (if you know that user's login name) by using the su (switch user) command.

What command allows you to run a shell as a different user?

-u user The -u (user) option causes sudo to run the specified command as a user other than root. To specify a uid instead of a user name, use #uid.

Which command can be used to execute another command in Linux?

exec command in Linux is used to execute a command from the bash itself. This command does not create a new process it just replaces the bash with the command to be executed.