- Since the beginning of the course, all the examples presented were run
- using a user account.
- A user account consists of a username and a password. This identifies the
- user on the system and, hence, maintains security and accountability.
- Linux also creates groupsfor each user account. A group may contain one or
- more users, all of them sharing the same permissions.
- The system administrator account, sometimes called the superuser, is the
- root. This is the most important account on the system. It must be owned by
- as a few users as possible because of the vast powers it provides.
The /etc/passwd file
- This is one of the most important and highly protected system file. It contains various information about the user accounts on the system.
- Each user account information is contained on a single line. A colon (:) is used to separate different fields from each other. Let’s have a quick look at each one in turn:
- Username: the string that the user uses for identification. It is a friendly name that is chosen by the system administrator (root) to identify the user. By convention, it is all lowercase characters, it may contain numbers (but cannot start with one), special characters dash (-), udnerscore (_), and – in some distros – the dollar sign ($) at the end.
- Password: a secret group of characters that should be known only to it’s owner. The /etc/passwd file places an x in this field, indicating that the encrypted password is stored in /etc/shadow file (more on that later).
UID and GID
- UID: it is short for user id. This is a unique number that identifies the user account on the system. As a matter of fact, Linux security system does not care about the username of the user account; it works by examining the its UID to provide the appropriate permissions and access rights. Since there are user accounts that are reserved for system accounts, those are assigned UID numbers from 0 (which is the root account) up till 500 (they reach 1000 in some systems). The higher numbers are assigned to normal (non-system) user accounts.
- GID: short for group id, it is the unique number that identifies a group account. A group contain one or more users that share similar access rights. The main purpose of the existence of groups is to provide certain users with access to specific files and directories while preventing others. Think of a directory on which a team of users are working. Putting those users in a group ensures that all of them will have the same permissions.
The comment and the home directory
- The comment field normally includes the user’s real name. For example, when a username is jdoe, the real name in the comment could be John Doe. It may also contain other personal information like the phone number, address and others.
- The home directory field contains the path to the user’s home directory. Only the user is the owner of his/her home directory. At the command line, a home directory can be referred to as tilde ~. For example, cd ~ will make you navigate to your home directory.
The default shell
- We have mentioned before that bash is not the only shell available for Linux. There are other shells that are available for Linux like ksh, zsh, tsh and so on. The shell field contains the path to the binary file of the specific shell. For example, /bin/bash.
- The default shell is a matter of choice. A user can change hi/her default shell.
- Since all users (including system accounts) must have a default shell. But system accounts – by nature – do not (and should not) have login access to the system. Accordingly, the default shell of such accounts is set to /sbin/nologin. Setting the default shell to /bin/nologin prints a friendly message explaining that logins with this account are not available. Setting it to /bin/false denies login without displaying that message.
The /etc/shadow file
- You might think that a file named /etc/passwd should be the one containing the hashed passwords of the users on the system.
- Actually this was the case long ago. But for security reasons, and since /etc/passwd file must be readiable by all users on the system to be able to authenticate them, the hashed password was removed from that file and placed in a more secured file: /etc/shadow .This file has higher level of protection and access restrictions.
- It contains the following information:
- The salt: this is a random input that helps make the password more protected
- The hash: the result of an irreversible mathematical operation. It is performed on the password and the salt combined. To authenticate a user, a hash is computed for the entered password, with the salt input added to it. If both hashes are identical the user is authenticated.
- Password history: these are some variables that help increase user security. For example, the password must be changed after a specific number of days (configured by the system administrator).
- The username: this is the username of the user and not the UID. It is what links /etc/passwd with /etc/shadow
- The password: the salted hash of the user password. If this field contains as asterisk or an exclamation mark, this means that the account is locked.
- Last password change: this is the date of the last password change. The UNIX timestamp is used here. UNIX timestamp is a date/time measurement method. It is the amount of time that passed since POSIX time (1/1/1970 at midnight). This field contains the number of days that passed since POSIX time.
- The number of days till a password can be changed. This is another security measure that prevents users from changing their passwords (as per policy) and then quickly setting it back to the original one.
- The number of days before a user must change the current password. This is sometimes referred to as password age.
- The number of warning days before a password expires. During those days, a warning message will be displayed to the users whose account will expire soon.
- Days between expiration and deactivation: if configured, the account can be deactivated after it’s expired. The difference is that when the account expires, the password is not erased and the account can be activated again by the system administrator or by the user logging in and changing the password. But if the account is deactivated, the password is deleted and only the system administrator can reactivate the account.
- Expiration date: the date when the account expires, expressed as the number of days since POSIX time.
- Special flag: this field is currently not used. It is reserved for future use.
- Notice that some day fields may contain either -1 or 9999, which effectively means that the relevant feature is disabled