Running Script or Command as Another User in Linux

There are several ways to run a script or command as another user in Linux. The most common methods are using the su command (switch user), the sudo command (superuser do), and the runuser command. Each approach has different use cases, security implications, and requirements.

These commands are essential for system administration tasks where you need to execute operations with different user privileges without logging out and back in as another user.

Using su Command

The su command allows you to switch to another user's account. The basic syntax is:

su [options] [username]

Switching to Another User

To switch to the user "john", use:

su john

You'll be prompted for john's password. Once authenticated, you'll have a shell running with john's privileges.

Running Commands Directly

To execute a single command as another user without starting an interactive shell:

su john -c 'ls -la /home/john'

To switch to root and get a login shell environment:

su -

The - option provides a clean environment similar to a fresh login.

Using sudo Command

The sudo command runs commands with elevated privileges, typically as root, but can also execute commands as other users. Unlike su, it uses your own password and requires proper configuration in /etc/sudoers.

Basic Usage

sudo apt-get update
sudo systemctl restart nginx

Running Commands as Specific Users

To run a command as a specific user (not root):

sudo -u john whoami
sudo -u www-data ls -la /var/www

The -u flag specifies the target user.

Using runuser Command

The runuser command is similar to su but is designed to be more secure for system scripts and automated tasks. It's typically used by system processes and doesn't require a password when run by root.

runuser -l john -c 'ls -l'
runuser -u john -- ls -la /home/john

The -l option provides a login environment, while -u specifies the target user. The -- separator is useful when the command contains options that might be confused with runuser options.

Comparison

Command Password Required Best Use Case Security Level
su Target user's password Interactive user switching Medium
sudo Your own password Administrative tasks High (with proper config)
runuser None (when run by root) System scripts High

Security Considerations

All these commands provide elevated privileges, which can be dangerous if misused:

  • sudo is generally preferred because it logs all executed commands and can be configured with fine-grained permissions
  • runuser is safest for automated scripts as it doesn't source shell profiles
  • su requires knowing other users' passwords, which can be a security risk

Always use the principle of least privilege only escalate when necessary and for the minimum required duration.

Conclusion

Linux provides multiple methods to run commands as different users: su for user switching, sudo for administrative tasks, and runuser for system automation. Choose the appropriate method based on your security requirements, whether you need interactive access, and your system's configuration. Always exercise caution when using elevated privileges.

Updated on: 2026-03-17T09:01:38+05:30

30K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements