In an earlier article, we have explained to you the difference between sudo and su commands in Linux. These are two important commands used to implement security in Linux, in regards to user management policy and user permissions.
The su command is used to switch to another user, in other words change user ID during a normal login session (that is why it is sometimes referred to as switch (-)
user by a number of Linux users). If executed without a username, for example su -
, it will login as root user by default.
A common challenge faced by new Linux users is understanding the difference between “su” and “su -“. This article will help you briefly understand the difference between “su” and “su -“ in Linux systems.
Usually, to become another user or login to other user, you can invoke the following command, then you will be prompted for the password of the user you’re switching to.
$ su tecmint
Considering the scenario in the screenshot above, it is significant to note that the user tecmint
keeps the environment from user aaronkilik’s original login session, the current working directory and the path to executable files also remain the same.
As a result, when user tecmint tries to list the working directory (which is still user aaronkilik’s working directory), the error: “ls: cannot open directory .: Permission denied” is displayed.
But at the end, user tecmint can list his home directory after running cd command without any options.
Secondly, when you invoke su
with a -
, or -l
or --login
flags, it offers you a login interface similar to when you are logging on normally. All the commands below are equivalent to each other.
$ su - tecmint OR $ su -l tecmint OR $ su --login tecmint
In this case, the user tecmint is provided his own default login environment, including path to executable files; he also lands into his default home directory.
Importantly, when you run su
without a username, you will automatically become the superuser. You will be given root’s default environment, including path to executable files changes. You will also land into root’s home directory:
$ su
Also check out: How to Show Asterisks While Typing Sudo Password in Linux
We hope you find this article informative. You can ask any questions or share your thoughts via the comment section below.