# Linux File System

In Microsoft Windows, files are stored in directories/folders on different data drives like C: D: E: but, in Linux, files are ordered in a tree structure starting with the root directory, further branched out to various other sub-directories.

![](https://2601183865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8QpIzz6VwCOTMwaqKYa3%2Fuploads%2FOLGpTzmq5iCzwPMTn4Pw%2Fimage.png?alt=media\&token=1172ec85-f723-47c9-a6e4-b54bd2c8456e)

#### EVERYTHING in Linux is a FILE

⭕ Everything in the system is represented by a file descriptor&#x20;

&#x20;  ▪ Text documents, pictures, etc&#x20;

&#x20;  ▪ Commands, like pwd, ls, etc&#x20;

&#x20;  ▪ Devices like printer, keyboard, usb Even directories.&#x20;

{% hint style="info" %}
Linux makes no difference between a file and a directory since a directory is just a file containing the names of other files
{% endhint %}

### Linux File Structure

![](https://2601183865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8QpIzz6VwCOTMwaqKYa3%2Fuploads%2FjJDcrXejp0HGtXw6lYR1%2Ffilesystem-structure.png?alt=media\&token=bf5e017b-1cb1-4856-9b46-1e5a5ccfa45c)

#### ⭕  / – Root

* Every single file and directory starts from the root directory.
* Only root user has write privilege under this directory.
* Keep in mind that /root is root user’s home directory, which is not same as /.

#### ⭕  /bin – User Binaries

* Contains binary executables.
* Common linux commands you need to use in single-user modes are located under this directory.
* Commands used by all the users of the system are located here.
* For example: ps, ls, ping, grep, cp.

#### ⭕  /sbin – System Binaries

* Just like /bin, /sbin also contains binary executables.
* But, the linux commands located under this directory are used typically by system aministrator, for system maintenance purpose.
* For example: iptables, reboot, fdisk, ifconfig, swapon

#### ⭕  /etc – Configuration Files

* Contains configuration files required by all programs.
* This also contains startup and shutdown shell scripts used to start/stop individual programs.
* For example: /etc/resolv.conf, /etc/logrotate.conf

#### ⭕  /dev – Device Files

* Contains device files.
* These include terminal devices, usb, or any device attached to the system.
* For example: /dev/tty1, /dev/usbmon0

#### ⭕  /proc – Process Information

* Contains information about system process.
* This is a pseudo filesystem contains information about running process. For example: /proc/{pid} directory contains information about the process with that particular pid.
* This is a virtual filesystem with text information about system resources. For example: /proc/uptime

#### ⭕  /var – Variable Files

* var stands for variable files.
* Content of the files that are expected to grow can be found under this directory.
* This includes — system log files (/var/log); packages and database files (/var/lib); emails (/var/mail); print queues (/var/spool); lock files (/var/lock); temp files needed across reboots (/var/tmp);

#### ⭕  /tmp – Temporary Files

* Directory that contains temporary files created by system and users.
* Files under this directory are deleted when system is rebooted.

#### ⭕  /usr – User Programs

* Contains binaries, libraries, documentation, and source code for second-level programs.
* /usr/bin contains binary files for user programs. If you can’t find a user binary under /bin, look under /usr/bin. For example: at, awk, cc, less, scp
* /usr/sbin contains binary files for system administrators. If you can’t find a system binary under /sbin, look under /usr/sbin. For example: atd, cron, sshd, useradd, userdel
* /usr/lib contains libraries for /usr/bin and /usr/sbin
* /usr/local contains users programs that you install from source. For example, when you install apache from source, it goes under /usr/local/apache2

⭕  **/usr/local**

* Programs that WE install on the computer&#x20;
* Third-party applications like docker, minikube, java, etc
* Programs installed here will be available for all users on the computer

#### ⭕  /home – Home Directories

* Home directories for all users to store their personal files.
* For example: /home/asaf, /home/agil

#### ⭕  /boot – Boot Loader Files

* Contains boot loader related files.
* Kernel initrd, vmlinux, grub files are located under /boot
* For example: initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic

#### ⭕  /lib – System Libraries

* Contains library files that supports the binaries located under /bin and /sbin
* Library filenames are either ld\* or lib\*.so.\*
* For example: ld-2.11.1.so, libncurses.so.5.7

#### ⭕  /opt – Optional add-on Applications

* opt stands for optional.
* Contains add-on applications from individual vendors.
* add-on applications should be installed under either /opt/ or /opt/ sub-directory.

#### ⭕  /mnt – Mount Directory

* Temporary mount directory where sysadmins can mount filesystems.

#### ⭕  /media – Removable Media Devices

* Temporary mount directory for removable devices.
* For examples, /media/cdrom for CD-ROM; /media/floppy for floppy drives; /media/cdrecorder for CD writer

#### ⭕  /srv – Service Data

* srv stands for service.
* Contains server specific services related data.
* For example, /srv/cvs contains CVS related data.

#### Hidden Files

Hidden files are primarily used to help prevent important data from being accidentally deleted or automatically generated by programs or OS&#x20;

&#x20;  ▪ Filename starts with a dot

&#x20;  ▪ In UNIX also called "dotfiles"
