The Linux filesystem and directory structure every Linux user should know

๐Ÿ‘‰ / โ€“ The root directory

All the files and directories in Linux are located under โ€˜rootโ€™ represented by โ€˜/โ€™.

If you look at the directory structure, youโ€™ll realize that it is similar to a plantโ€™s root.

๐Ÿ‘‰ /bin โ€“ Binaries

The โ€˜/binโ€™ directly contains the executable files of many basic shell commands like ls, cp, cd etc.

Mostly the programs are in binary format here and accessible by all the users in the Linux system.

๐Ÿ‘‰ /dev โ€“ Device files

This directory only contains special files, including those relating to the devices.

These are virtual files, not physically on the disk.

๐Ÿ‘‰ /etc โ€“ Configuration files

The /etc directory contains the core configuration files of the system, use primarily by the administrator and services, such as the password file and networking files.

๐Ÿ‘‰ /usr โ€“ User binaries and program data

In โ€˜/usrโ€™ go all the executable files, libraries, source of most of the system programs.

For this reason, most of the files contained therein are readยญonly (for the normal user)

โ€˜/usr/binโ€™ contains basic user commands

โ€˜/usr/sbinโ€™ contains additional commands for the administrator

โ€˜/usr/libโ€™ contains the system libraries

โ€˜/usr/shareโ€™ contains documentation or common to all libraries, for example โ€˜/usr/share/manโ€™ contains the text of the manpage

๐Ÿ‘‰ /home โ€“ User personal data

Home directory contains personal directories for the users. It contains the user data and user-specific configuration files.

As a user, youโ€™ll put your personal files, notes, programs etc in your home directory.

๐Ÿ‘‰ /lib โ€“ Shared libraries

Libraries are basically codes that can be used by the executable binaries. The /lib directory holds the libraries needed by the binaries in /bin (for user) and /sbin (for superuser) directories.

๐Ÿ‘‰ /sbin โ€“ System binaries

This is similar to the /bin directory. The only difference is that is contains the binaries that can only be run by root or a sudo user.

You can think of the โ€˜sโ€™ in โ€˜sbinโ€™ as super or sudo.

๐Ÿ‘‰ /tmp โ€“ Temporary files

This directory holds temporary files. Many applications use this directory to store temporary files.

/tmp directory is emptied when system restarts. Some Linux systems also delete old files automatically

Donโ€™t store anything important here.

๐Ÿ‘‰ /var โ€“ Variable data files

Var, short for variable, is where programs store runtime information like system logging, user tracking, caches, and other files that system programs create and manage.

The files stored in /var are NOT cleaned automatically and hence it provides a good place for sysadmins to look for information.

For example, if you want to check the login history in your Linux system, just check the content in /var/log/wtmp.

๐Ÿ‘‰ /boot โ€“ Boot files

The โ€˜/bootโ€™ directory contains the files of the kernel and boot image, in addition to LILO and Grub.

It is often advisable that the directory resides in a partition at the beginning of the disc.

๐Ÿ‘‰ /proc โ€“ Process and kernel files

The โ€˜/procโ€™ directory contains the information about currently running processes and kernel parameters.

The content of the proc directory is used by tools like lscpu to get runtime system information.

๐Ÿ‘‰ /opt โ€“ Optional software

Traditionally, the /opt directory is used for installing/storing the files of third-party applications that are not available from the distributionโ€™s repository.

๐Ÿ‘‰ /media โ€“ Mount point for removable media

When you connect a removable media such as USB disk, SD card or DVD, a directory is automatically created under the /media directory for them. You can access the content of the removable media from this directory.

๐Ÿ‘‰ /mnt โ€“ Mount directory

This is similar to the /media directory but instead of automatically mounting the removable media, mnt is used by system administrators to manually mount a filesystem.

๐Ÿ‘‰ /srv โ€“ Service data

The /srv directory contains data for services provided by the system. For example, if you run a HTTP server, itโ€™s a good practice to store the website data in the /srv directory.

There are more such directories but I think this is enough to understand the Linux directory structure and its usage.

Save this image for quick reference to the directory structure in Linux systems.

Leave a comment