The Unix filesystem follows a well-defined hierarchy where each directory serves specific purposes. Three critical directories often cause confusion:
/
├── etc/
├── usr/
└── var/
The /etc
directory (et cetera) stores system-wide configuration files. These are static files that don't change during normal operation.
Example files:
/etc/passwd # User account information
/etc/hosts # Hostname to IP mapping
/etc/ssh/sshd_config # SSH server configuration
/usr
(Unix System Resources) contains read-only user binaries, libraries, and documentation. Modern systems often follow these subdirectories:
usr/
├── bin/ # User commands
├── sbin/ # System admin commands
├── lib/ # Libraries
├── local/ # Locally installed software
└── share/ # Architecture-independent data
Example of checking installed software:
ls /usr/bin | grep python
dpkg -L python3 | grep ^/usr
/var
contains files that change during system operation. Important subdirectories include:
var/
├── log/ # System logs
├── spool/ # Queued files (print, mail)
├── cache/ # Application cache
└── lib/ # State information
Example of checking log files:
tail -f /var/log/syslog
journalctl -xe
When installing a web server like Nginx:
# Configuration files
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
# Binary and libraries
/usr/sbin/nginx
/usr/lib/nginx/
# Variable data
/var/log/nginx/
/var/www/html/
Directory | Content Type | Modification Frequency |
---|---|---|
/etc | Configuration files | Only during setup/changes |
/usr | Executables and libraries | During software installation |
/var | Runtime data | Constantly during operation |
In Unix-like systems, three directories form the backbone of system organization:
/
├── etc/
├── usr/
└── var/
This directory stores system-wide configuration files. Unlike Windows' registry, Linux keeps configurations as plain text files here.
# Example: Viewing network configurations
cat /etc/network/interfaces
# Editing SSH configurations
sudo nano /etc/ssh/sshd_config
Key files typically found in /etc:
- /etc/passwd - User account information
- /etc/fstab - Filesystem table
- /etc/hosts - Static hostname mappings
Originally for "user" programs, /usr now contains most application software. It's typically mounted read-only after installation.
# Common subdirectories:
/usr/bin/ # Most user commands
/usr/lib/ # Libraries
/usr/local/ # Locally installed software
/usr/share/ # Architecture-independent data
Example of installing to /usr/local:
./configure --prefix=/usr/local
make
sudo make install
This directory contains files that change during normal system operation:
/var/log/ # System logs
/var/www/ # Web server content (common location)
/var/spool/ # Queues for printing/mail
/var/tmp/ # Temporary files preserved between reboots
When setting up a web server:
# Configuration goes in /etc
/etc/nginx/nginx.conf
# Web content typically in /var
/var/www/html/index.html
# Logs go to /var/log
/var/log/nginx/access.log
For custom service management:
# Systemd unit files location
/etc/systemd/system/myapp.service
# Application binaries
/usr/local/bin/myapp
# Runtime data
/var/lib/myapp/
Proper permissions are crucial for security:
# Typical permissions for /etc
sudo chmod -R 755 /etc
sudo chown -R root:root /etc
# Web directory example
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
Quick reference guide:
Directory | Purpose | Should Contain | Shouldn't Contain |
---|---|---|---|
/etc | Configuration | Static config files | Binaries, logs |
/usr | Software | Installed programs | User documents |
/var | Variable data | Logs, databases | Static configs |