From Fedora Project Wiki

< Docs‎ | Drafts

Understanding the Directory Structure

This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

In the graphical environment, a Fedora desktop allows users to work with files, directories and utilities without having to be aware of the underlying system. All applications and files are displayed as icons, regardless of their individual location. An icon on each user's desktop lets them access files and directories within their home directory. When removable storage such as USB drives are connected to the system other icons appear on the desktop for ease of access. When connected to remote file areas such as Samba file shares, SFTP or HTTP locations similar icons with the input name for these locations appear on the user's desktop.

Everything is a file
In Linux, all things are considered files. Programs, scripts, directories, devices and configuration files are all considered files.

The underlying filesystem structure actually separates these different kind of files so the users can work with different parts of the system. Administrative tasks usually involve heavy interaction with configuration, services, scripts, utilities and device files.

This filesystem architecture is standard for all Fedora systems, and follows the Linux Filesystem Hierarchy Specification (FHS). Individual directories may be located on separate drives, on removable storage, or on other networked systems, but they combine to form a single standard hierarchy, or tree, known as a unified filesystem.

Managing Storage and Partitions explains how to attach drives and disk partitions to your filesystem. To share directories between systems on a network, follow the instructions in Using the Network File System.

Locations for Data

User Home Directories

Each standard user account has a separate home directory under /home/ to store files specific to that user. This contains both their private data files, and the configuration files that define the user settings for each desktop application.

Separate /home/ from the system
Use a separate partition for the /home/ directory, or share it with a dedicated server system. This ensures that the user home directories are not affected by system upgrades.

By default, users have full control over their home directory, but no access to the home directories of other users.

Software and home directories
Users may install scripts and other software into their home directory.

Administrator Home Directories

The root account uses the home directory /root/. This ensures that the root account may function normally when the /home/ directory is not accessible. Only store data files and scripts in /root/ if they are for the purposes of system administration. Each administrator should also have a standard user account for their own files.


Locations for Shared Data

/srv/

/var/

/lost+found/


Removable Devices and Temporary Network Connections

Removable Storage

/media/


Network Directories

/mnt/

/net/

User Connections to Remote Servers
The connections made with /mnt/ and /net/ may be made available to all users on the system. Connections made with the desktop applications are not attached to the filesystem, and may only be accessed by the user that made those connections.


Locations for Software

/bin/

The /usr/ heirarchy (and /usr/local/).

Specify /usr/share/ for shared documents and other resources relating to software.

The /sbin/ directory
The directory /sbin/ contains programs that are used by the system itself. Use the supplied configuration tools to modify your system, rather than the software in /sbin/.

Additional Software

/misc/

/opt/


System Configuration Files

Files for settings that apply to the entire system:

/etc/

Virtual files maintained by the system. These may be read or written to as if they were real files on the drive:

/proc/

/sys/

Virtual files are created on boot
All changes to virtual files are lost when your system reboots. If you wish to automatically change a value in a virtual file when the system starts, refer to Modifying the Startup Process.


Core System Directories

/boot/

/dev/

/lib/

/sbin/

/selinux/

/tmp/

Avoid modifying core system files
The contents of the core system directories should only be modified by the software management system.


Additional Resources

The Linux Filesystem Heirarchy Specification