/etc/shells file is an important component within the Linux operating system as regards user administration and security. It stores information about the available command interpreters, or shells, on the system and is consulted by the
chsh command in order to determine the valid login shells.
What is the
/etc/shells file is a plain text file that contains a list of all valid shells recognized by the system. It is commonly used when the system administrator wants to limit the access of users to only certain shells.
Structure of the
/etc/shells file has a simple structure. It consists of only one line per shell, with each line containing the path to each shell available on the system. As an example, the default
/etc/shells file may look like this:
These paths signify that
/usr/bin/bash are the shells available to be used on this system.
/etc/shells file is consulted by the
chsh command (which stands for change shell) when running the command to change a user’s default login shell. The shell that is being changed must be listed in
/etc/shells in order for the change to be accepted.
/etc/shells file can be edited with any text editor available on the system. It is important to note, however, that the
/etc/shells file is only writable by the root user, so one should use the
sudo command to execute tasks with elevated privileges when making changes to the file.
/etc/shells file has been modified, the updated command interpreters will become available to all users on the system. The
chsh command will also only accept newly added shells for the users’ default login shell.
In conclusion, the
/etc/shells file plays an important role in user administration and security of a Linux system. It is accessible by the
chsh command, which is used to change a user’s default login shell. As the file is only writable by the root user, it is important to execute tasks with elevated privileges in order to make any changes to it.