su Cheatsheet
Quick reference for switching users and running commands with su in Linux
The su command lets you switch to another user account or run commands with another user’s privileges. This cheatsheet covers login shells, one-off commands, environment handling, and the most common su patterns you will use on Linux systems.
Basic Syntax
Core su command forms.
| Command | Description |
|---|---|
su | Switch to root using the current shell environment |
su - | Switch to root with a full login shell |
su username | Switch to another user |
su - username | Switch to another user with a login shell |
su --help | Show available options |
Login Shell vs Current Shell
Choose whether to keep the current environment or start a clean login session.
| Command | Description |
|---|---|
su | Keep most of the current environment |
su - | Load the target user’s login environment |
su - username | Change to the target user’s home directory and shell |
whoami | Confirm the current effective user |
pwd | Check whether the working directory changed |
Run a Command as Another User
Use -c to run a single command without starting a full interactive shell.
| Command | Description |
|---|---|
su -c 'whoami' | Run a single command as root |
su -c 'id' username | Run a command as another user |
su -c 'ps aux' | Run a quoted command with spaces |
su -c 'cd /tmp && pwd' username | Run a compound shell command |
su -c 'echo $HOME' username | Check the target user’s home in a non-login shell |
Shell and Environment
Adjust the shell or preserve the caller’s environment when needed.
| Command | Description |
|---|---|
su -s /bin/bash username | Use Bash as the target shell |
su -s /usr/bin/zsh username | Use Zsh as the target shell |
su -p | Preserve the current environment |
echo $HOME | Check the current home directory |
echo $SHELL | Check the current shell |
Root Access Patterns
Compare common root-shell workflows.
| Command | Description |
|---|---|
su | Prompt for the root password |
su - | Prompt for the root password and start a login shell |
sudo su - | Use sudo to start a root login shell |
sudo -i | Start a root login shell without calling su directly |
exit | Leave the current su shell |
Troubleshooting
Quick checks for common su issues.
| Issue | Check |
|---|---|
Authentication failure | Verify the target user’s password, not your own |
su: user username does not exist | Confirm the account exists with id username |
This account is currently not available | Check the target shell in /etc/passwd; service accounts often use /usr/sbin/nologin |
su keeps the old PATH | Use su - to start a clean login shell |
| Root access fails on Ubuntu | The root account may be locked; use sudo -i instead |
Related Guides
Use these guides when working with users, passwords, and privilege escalation.
| Guide | Description |
|---|---|
| su Command in Linux | Full su guide with examples and sudo comparison |
| sudo Command in Linux | Run commands with elevated privileges |
| How to Change User Password in Linux | Set or reset passwords |
| useradd cheatsheet | Create and manage user accounts |
| How to Add User to Group in Linux | Manage group membership |