If you are new to Linux, the first thing that feels strange is the folder layout. There is no C:\ drive. Everything starts from a single root directory: /.
This is Part 1 of a series where I walk through the Linux filesystem one directory at a time. In this post we cover the root directory and /etc.
The Filesystem Hierarchy Standard (FHS)
Most Linux distributions follow the Filesystem Hierarchy Standard (FHS), a convention that defines which kind of file lives where. Once you learn it, every Linux server feels familiar.
See it yourself
ls /
bin boot dev etc home lib media
mnt opt proc root run sbin srv
sys tmp usr var
Your output may differ slightly depending on the distribution.
Quick map of /
| Directory | Purpose |
|---|---|
/bin |
Essential user commands (ls, cp, cat) |
/sbin |
System administration commands |
/etc |
System-wide configuration files |
/home |
Personal folders for regular users |
/root |
Home folder of the root user |
/var |
Variable data: logs, caches, mail |
/tmp |
Temporary files |
/usr |
Installed programs and libraries |
/dev |
Device files |
/proc |
Virtual files with process and kernel information |
/boot |
Bootloader and kernel files |
/opt |
Optional third-party software |
On many modern distributions, /bin, /sbin, and /lib are symbolic links to the matching folders inside /usr. You can check with:
ls -ld /bin /sbin /lib
We will cover each of these in later parts.
Deep dive: /etc
/etc holds system-wide configuration files. Most of them are plain text, so you can read them with cat or less and edit them with a text editor.
ls /etc | head -n 10
Important files in /etc
| File | What it does |
|---|---|
/etc/passwd |
List of user accounts |
/etc/group |
List of groups |
/etc/hosts |
Local hostname to IP mapping |
/etc/resolv.conf |
DNS resolver settings |
/etc/fstab |
Filesystems mounted at boot |
/etc/hostname |
The name of the machine |
/etc/ssh/sshd_config |
SSH server settings |
/etc/os-release |
Distribution name and version |
Example 1: Read the hosts file
cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 my-machine
You can map a name to an IP here, which is handy for local testing:
echo "192.168.1.50 myserver.local" | sudo tee -a /etc/hosts
Example 2: Check your Linux distribution
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
Example 3: See user accounts
cut -d: -f1 /etc/passwd | head -n 5
root
daemon
bin
sys
sync
Each line in /etc/passwd has fields separated by colons: username, password placeholder, user ID, group ID, description, home directory, and shell. Despite the name, real password hashes are stored in /etc/shadow, which only root can read.
Example 4: Check DNS settings
cat /etc/resolv.conf
This shows which DNS servers your system uses. It connects nicely to the dig and nslookup posts in my Linux Networking Commands series.
Good practice when editing /etc
- Back up first:
sudo cp /etc/hosts /etc/hosts.bak - Use
sudoonly when you really need it. - Validate the config when the tool supports it, for example
sudo sshd -tfor SSH. - Never delete files in
/etcunless you know exactly what they do.
Summary
-
/is the top of the whole directory tree. - Each top-level directory has a specific purpose defined by the FHS.
-
/etcstores system configuration, mostly as editable text files. - Always back up before you change anything.
Next in the series: Part 2, /home, /root, and /tmp.
Did I miss anything or get something wrong? Leave a comment below.
Top comments (0)