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.
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.
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.
We hope you find this article informative. You can ask any questions or share your thoughts via the comment section below.
From the manpage of 'su' (on opensuse).
su allows to run commands with a substitute user and group ID.
When called without arguments, su defaults to running an interactive shell as root.
–login option (instead of its shortcut -) to avoid side effects caused by mixing environments.
We do not have to copy and paste the definition from man pages in our articles, we simply explain in terms users can easily understand and relate with. Of course, you can always find more information in man pages.
During the install, some distros ask if the first user created is to be the administrator. If you say YES, that user becomes the superuser but he DOES NOT become the root.
Yes, this is correct. But in the article, we are referring to root as the superuser(vice versa), who has absolute permission to perform any kind of task on a Linux system, without using sudo command.
Many thanks for the useful tip.
When a user invokes sudo, then that user gains root privileges. But the cases explained above( for su and su -) will apply but to the root user.