The Differences between Su, Sudo Su, Sudo -s and Sudo -i
As a Linux user, you must have come across at least one if not all four of these commands: su, sudo su, sudo -s, and sudo -i. Although they share some similarities, they serve different purposes, and using one instead of the other can cause unwanted results. So, what are the differences between su, sudo su, sudo -s, and sudo -i?
First, let’s define the commands:
1. “su” stands for “switch user” or “substitute user.” It allows you to switch to another user account without logging out of the current one. The command always requires the root password to execute.
2. “sudo su” is a two-part command. It is a way to switch to another user account without logging out of the current user. It works by running su as root using sudo. It prompts the user to enter their password before granting permission, which may or may not be the root password.
3. “sudo -s” is a way to run a shell as another user, usually root. It is similar to the “su” command but is used when you don’t know the root password. The command prompt changes to show that the user is now logged in as the other user. It does not require the root password; instead, it requires the user’s password who is running the command.
4. “sudo -i” is a way to log in as another user or to grant root access to execute several commands as if you were the root user. It provides you with access to that user’s environment, including their HOME directory. It is similar to “su -” but with the added security and authentication benefits of “sudo”, requiring the user’s password who is running the command.
Now, let’s talk about the differences between them.
1. The “su” command always requires the root password to execute, while “sudo su,” “sudo -s,” and “sudo -i” require the user’s password who is running the command.
2. The “su” command and “sudo su” only switch to the desired user account without changing the environment variables or settings, while “sudo -s” and “sudo -i” provide an environment similar to that of the user with root access.
3. The “su” and “sudo su” only switch to the desired user account, while “sudo -s” and “sudo -i” can execute terminal commands with greater system-level authority.
4. “sudo -i” sets the environment variables to match the targeted user’s profile, allowing the user to execute commands with the same permissions as if the user were the targeted account.
5. “sudo -s” and “sudo -i” also provide a way to switch users without knowing their password, making them more convenient to use.
In conclusion, understanding the differences between “su,” “sudo su,” “sudo -s,” and “sudo -i” is essential for running commands with the proper user permissions and access level. While all four commands serve a similar purpose, each has its specific use case and should be used accordingly. It is essential to understand the differences before using any of the above commands.