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 |