Linuxのディレクトリ構造を一覧で理解する|/etc・/var・/usr・/homeの役割と使い分け

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > 【Linux入門】初心者のための基礎知識・講座 > Linuxのディレクトリ構造を一覧で理解する|/etc・/var・/usr・/homeの役割と使い分け
「ls / を実行したら見慣れないディレクトリが並んで、どれが何なのかわからない」
「/etc と /var と /usr——それぞれ何を入れる場所なの?」

Windowsでは「Cドライブ」「Dドライブ」でファイルを管理しますが、Linuxは全く異なります。
すべてが「/(ルート)」から始まる一本のツリー構造で、最初は戸惑うのが普通です。

この記事では、Linuxのディレクトリ構造を規定するFHS(Filesystem Hierarchy Standard)の概念から、
実際にどのディレクトリに何が入っているかを、コマンド実行例つきで解説します。
WindowsのフォルダとLinuxのディレクトリを対比しながら、RHEL 9.4 / Ubuntu 24.04 LTS で確認できる内容です。

この記事のポイント

・LinuxはWindowsのCドライブに相当する「/(ルート)」を頂点にした一本のツリー構造
・/etc=設定ファイル、/var=可変データ、/usr=ユーザープログラムが三大基本
・pwd・ls・cd・tree の4コマンドでディレクトリの現在地と構造を素早く把握できる
・/proc と /dev はファイルに見えてカーネルやデバイスへのインタフェース


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

LinuxとWindowsのフォルダ構造の違い

Windowsでは「Cドライブ」「Dドライブ」のようにドライブ文字でファイルシステムが始まります。
Linuxでは、/(スラッシュ)という「ルートディレクトリ」が頂点になり、そこからすべてのディレクトリが一本のツリーとして伸びています。
Windowsのパス Linuxのパス 役割
C:\ /(ルートディレクトリ) ファイルシステムの最上位
C:\Users\ユーザー名 /home/ユーザー名 ユーザーの作業場所
C:\Windows\System32 /usr/bin、/usr/sbin システムコマンド・実行ファイル
C:\Program Files /opt、/usr/local 追加アプリのインストール先
C:\Windows\Logs /var/log ログファイル
C:\Windows\System32\drivers\etc /etc 設定ファイル
C:\Windows\Temp /tmp 一時ファイル
Linuxでは「ドライブ」という概念がなく、すべてが / から始まるのが大きなポイントです。
ハードディスクを追加してもドライブ文字は増えず、/mnt や /media などのディレクトリに「マウント」して使います。

FHS(Filesystem Hierarchy Standard)とは

1. ディレクトリ構造に「ルール」がある理由

Linuxのディレクトリ配置は、FHS(Filesystem Hierarchy Standard)という国際標準に従っています。
これは「どのLinuxディストリビューションを使っても、同じ場所に同じ種類のファイルが置かれる」
ことを保証するための取り決めです。

FHSがあるおかげで、Ubuntu で覚えた場所が Rocky Linux でも通用します。
サーバー管理の現場でも「設定ファイルは /etc」「ログは /var/log」という知識が共通言語になっています。

2. ls / で全体を俯瞰する

まずは実際に ls / を実行してみましょう。

$ ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

これがLinuxのルートディレクトリ直下の全ディレクトリです。
ls -la / とすると権限・日付・サイズも合わせて表示されます。
次のセクションから、各ディレクトリの役割を詳しく見ていきます。

ディレクトリを確認する基本コマンド(pwd・ls・cd・tree)

実際にコマンドを打ちながら確認するのが最速の学習法です。
「今どこにいるんだろう」と迷ったときに使う基本コマンドを押さえておきましょう。

1. 現在地を確認する(pwd)

pwd(print working directory)は、今自分がいるディレクトリの絶対パスを表示するコマンドです。
ディレクトリを移動した後など、迷ったらまずこれを実行します。

$ pwd /home/tanaka

ログイン直後は /home/ユーザー名 がホームディレクトリとして表示されます。

2. ディレクトリの一覧を表示する(ls)

ls(list)コマンドで、ディレクトリ内のファイルやサブディレクトリの一覧を確認できます。

# ルートディレクトリの中身を表示 $ ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # 詳細情報(権限・日付・サイズ)も表示 $ ls -la / total 64 dr-xr-xr-x. 18 root root 235 Apr 7 08:00 . dr-xr-xr-x. 18 root root 235 Apr 7 08:00 .. lrwxrwxrwx. 1 root root 7 Jan 25 10:00 bin -> usr/bin drwxr-xr-x. 6 root root 70 Apr 7 08:00 boot ...

3. ディレクトリを移動する(cd)

cd(change directory)コマンドで、ディレクトリを移動します。

# /etc に移動して現在地を確認 $ cd /etc $ pwd /etc # ホームディレクトリに戻る(~ はホームディレクトリを表す) $ cd ~ $ pwd /home/tanaka # 一つ上の階層に移動(.. は親ディレクトリ) $ cd /home/tanaka/work $ cd .. $ pwd /home/tanaka

迷ったときは cd ~ でホームに戻るのが基本です。

4. ディレクトリ構造を視覚的に表示する(tree)

tree コマンドを使うと、ディレクトリの階層をツリー形式で視覚的に確認できます。
デフォルトではインストールされていない場合があるので、先に入れておきましょう。

# Ubuntu / WSL2 の場合 $ sudo apt install tree -y # RHEL系(AlmaLinux / Rocky Linux)の場合 $ sudo dnf install tree -y

インストール後、/etc 直下を1段だけ表示してみます。

# /etc の直下だけ表示(深さ1) $ tree /etc -L 1 /etc |-- adjtime |-- alternatives |-- apt |-- crontab |-- environment |-- fstab |-- group |-- hostname |-- hosts |-- localtime -> /usr/share/zoneinfo/Asia/Tokyo |-- passwd |-- resolv.conf |-- shadow `-- ssh 19 directories, 56 files

localtime -> /usr/share/zoneinfo/Asia/Tokyo のように -> で表示されているのはシンボリックリンク(Windowsのショートカット相当)です。
-L 2 に変えると2段目まで表示でき、サービスの設定ファイル群の全体像を素早く把握できます。

主要ディレクトリの役割と代表ファイル

1. /etc — 設定ファイルの格納庫

サーバー管理で最もよく触れるディレクトリです。
各サービスの設定ファイルが集中しています。Windowsの「コントロールパネル」に相当するイメージですが、Linuxではすべてがテキストファイルなのでエディタで直接読み書きできます。

# /etc の代表的なファイル $ ls /etc/ | head -20 adjtime aliases apache2/ # Apacheの設定(Ubuntu系) bash.bashrc crontab # cronの設定 fstab # ファイルシステムマウント設定 hostname # ホスト名 hosts # ホスト名とIPの対応 httpd/ # Apacheの設定(RHEL系) passwd # ユーザーアカウント情報 resolv.conf # DNS設定 shadow # パスワードハッシュ(root権限で読む) ssh/ # SSHデーモン設定 sudoers # sudo権限設定 # ホスト名の確認 $ cat /etc/hostname server01.example.com # DNS設定の確認 $ cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4

設定ファイルを変更する前は必ず cp /etc/xxx /etc/xxx.bak でバックアップを取る習慣をつけましょう。

2. /var — 変化するデータの置き場

「variable(可変)」の略です。
ログファイル、キャッシュ、メールスプール、データベースのデータファイルなど、
運用中に増減するファイルが置かれます。サーバーで問題が起きたときは、まず /var/log 内のログを確認するのが基本です。

# ログの確認(システムログ) $ tail -20 /var/log/messages Apr 07 09:12:34 server01 kernel: eth0: renamed from veth3a2b1c Apr 07 09:15:01 server01 CROND[12345]: (root) CMD (/usr/lib/sa/sa1 1 1) Apr 07 09:25:01 server01 systemd[1]: Started Session 42 of User tanaka. # リアルタイムにログを監視する $ tail -f /var/log/syslog # /var のサブディレクトリ $ ls /var/ cache lib lock log mail run spool tmp www # ディスク使用量確認(varが肥大化しやすい) $ du -sh /var/log/ 1.2G /var/log/

よく参照するログファイルの例:
・/var/log/syslog(Ubuntu系)/ /var/log/messages(RHEL系):システムログ全般
・/var/log/auth.log(Ubuntu系)/ /var/log/secure(RHEL系):認証ログ(SSHログインの記録)
・/var/log/journal/:systemdのバイナリジャーナルログ(journalctl コマンドで読む)
Webサーバーのアクセスログも /var/www/ や /var/log/nginx/ に置かれます。

3. /usr — ユーザー向けプログラムとライブラリ

「Unix System Resources」の略です。
パッケージマネージャでインストールしたプログラム・ライブラリが格納されます。
Windowsの「C:\Windows\System32」に相当するイメージです。

・/usr/bin:一般ユーザーが使うコマンド(ls, cp, grep, curl など)
・/usr/sbin:管理者向けコマンド(useradd, sshd など)
・/usr/lib:共有ライブラリ(.so ファイル)
・/usr/local:手動インストールしたソフトウェアの置き場
・/usr/share:アーキテクチャ非依存のデータ(マニュアル、アイコンなど)

# which コマンドで実行ファイルの場所を確認 $ which ls /usr/bin/ls $ which useradd /usr/sbin/useradd # /usr/local は手動インストールの場所 $ ls /usr/local/ bin etc include lib sbin share src

4. /home — 一般ユーザーのホームディレクトリ

一般ユーザーの個人ファイルが置かれます。
ユーザー tanaka のホームは /home/tanaka です。Windowsの「C:\Users\ユーザー名」に相当します。

# 現在のユーザーのホームディレクトリを確認 $ echo $HOME /home/tanaka # ホームに移動 $ cd ~ $ pwd /home/tanaka # 隠しファイル(ドットファイル)も含めて表示 $ ls -la ~ total 48 drwxr-xr-x 5 tanaka tanaka 4096 Apr 7 09:00 . drwxr-xr-x 4 root root 4096 Apr 7 08:00 .. -rw------- 1 tanaka tanaka 820 Apr 7 09:33 .bash_history -rw-r--r-- 1 tanaka tanaka 220 Jan 25 10:00 .bash_logout -rw-r--r-- 1 tanaka tanaka 3526 Jan 25 10:00 .bashrc -rw-r--r-- 1 tanaka tanaka 807 Jan 25 10:00 .profile drwx------ 2 tanaka tanaka 4096 Apr 7 08:30 .ssh drwxr-xr-x 2 tanaka tanaka 4096 Apr 7 09:00 work drwxr-xr-x 2 tanaka tanaka 4096 Apr 7 08:00 documents

.bash_history や .bashrc のような「.」で始まるファイルは隠しファイルで、シェルの設定が置かれます。
.ssh/ はSSH鍵を格納するディレクトリで、所有者のみに読み書き権限(700)が必要です。

5. /tmp — 一時ファイルの置き場

プログラムが一時的に使うファイルを置く場所です。
再起動時にクリアされることが多いため、永続保存が必要なものは置かないでください。
スクリプトの一時ファイルや、ダウンロード後にすぐ処理するファイルの置き場として使われます。

# /tmp の内容確認(再起動後は消える) $ ls /tmp/ systemd-private-xxx tmux-1000 .X0-lock # 一時ファイルの作成例 $ echo "test data" > /tmp/work.txt $ cat /tmp/work.txt test data

6. /proc — カーネル情報へのインタフェース

/proc はディスクには存在しない仮想ファイルシステムです。
カーネルがリアルタイムに生成する情報を「ファイル」として読み出せます。

# CPUの詳細情報 $ cat /proc/cpuinfo | head -10 processor : 0 model name : Intel(R) Core(TM) i7-10700K @ 3.80GHz cpu MHz : 3800.000 cache size : 16384 KB # メモリの詳細情報 $ cat /proc/meminfo | head -5 MemTotal: 16384000 kB MemFree: 8192000 kB MemAvailable: 10240000 kB # 動作中のプロセス数確認 $ ls /proc/ | grep -E '^[0-9]+$' | wc -l 234

7. /dev — デバイスファイル

ハードディスク、端末、ランダムデバイスなどがファイルとして表現されます。
「すべてはファイルである」というLinuxの設計思想を体現しているディレクトリです。

# ブロックデバイス(ストレージ)の確認 $ ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 # /dev/sda はハードディスク全体、/dev/sda1 はパーティション(区画) # VPSのディスク設定やマウント作業で登場する # /dev/null: 出力を捨てる際に使う $ command_that_outputs_too_much 2>/dev/null # /dev/urandom: ランダムなバイト列を生成 $ dd if=/dev/urandom bs=16 count=1 2>/dev/null | xxd 00000000: a3f2 7b1c 8e40 d9b5 6a2c e371 4f80 12c9 ..{..@..j,.qO...

8. /opt — サードパーティアプリの置き場

パッケージマネージャを使わず、独自にインストールしたアプリが置かれます。
Oracle JDK、Chrome、カスタムアプリなどが典型例です。

# /opt の確認例 $ ls /opt/ google/ oracle/ myapp/

ディレクトリ間の関係を理解する

1. /bin と /usr/bin の違い

歴史的に /bin はシングルユーザーモードでも使える最低限のコマンドを置く場所でした。
現代の多くのディストリビューション(RHEL 9、Ubuntu 22以降)では、
/bin は /usr/bin へのシンボリックリンクになっています。

# RHEL 9 での確認 $ ls -la / | grep "bin\|sbin\|lib" lrwxrwxrwx 1 root root 7 /bin -> usr/bin lrwxrwxrwx 1 root root 9 /lib -> usr/lib lrwxrwxrwx 1 root root 11 /lib64 -> usr/lib64 lrwxrwxrwx 1 root root 8 /sbin -> usr/sbin

つまり ls /bin/ls と ls /usr/bin/ls は同じファイルを指しています。
古い書籍や記事で「/bin に置く」と書かれていても、現代の環境では /usr/bin と同じと理解して問題ありません。

よくあるエラーと対処法

1. 「Permission denied」でディレクトリに入れない

一部のディレクトリ(/root など)は一般ユーザーには立ち入り禁止です。

$ cd /root -bash: cd: /root: Permission denied

管理者作業が必要な場合は sudo -i などで対応しますが、誤操作リスクが上がるため必要なときだけ使いましょう。

/etc/shadow のようなセキュリティ上重要なファイルも同様です。

# /etc/shadow は一般ユーザーには読めない(パスワードハッシュが入っているため) $ cat /etc/shadow cat: /etc/shadow: Permission denied # sudo を付ければ読める(管理作業のみ。不用意に参照しない) $ sudo cat /etc/shadow root:!$6$xxxxxxxxxx$yyyyyyyyyyyy:19888:0:99999:7::: tanaka:$6$xxxxxxxxxx$zzzzzzzzzzzz:20000:0:99999:7:::

2. 「No such file or directory」が出る

$ cd /ets -bash: cd: /ets: No such file or directory

/etc をタイプミスした例です。Tabキーによるパス補完を活用すると防げます。
cd /et まで入力してTabキーを押すと /etc/ に自動補完されます。

3. どこにいるか分からなくなった

迷ったらまず pwd で現在地を確認し、cd ~ でホームディレクトリに戻ります。
これだけで大半の「迷子」は解決できます。

4. インストールしたコマンドがどこにあるか分からない

apt install や dnf install でインストールしたコマンドの実体は /usr/bin や /usr/sbin に配置されます。
which コマンド名 で実体のパスを確認できます。

# nginx のインストール後に実体の場所を確認 $ which nginx /usr/sbin/nginx # バージョン確認 $ nginx -v nginx version: nginx/1.24.0 (Ubuntu) # 設定ファイルの場所は /etc/nginx/ 配下 $ ls /etc/nginx/ conf.d mime.types nginx.conf sites-available sites-enabled

「コマンドはどこ?」→ which コマンド名、「設定ファイルはどこ?」→ /etc/ソフト名/ を探す、という2つのパターンを覚えておくだけで、現場の迷いの大半は解消します。

本記事のまとめ

ルート直下のディレクトリを役割別に整理します。
ディレクトリ 主な役割 代表的なファイル・用途 Windows対比
/etc 設定ファイル fstab, hostname, httpd/, ssh/, passwd コントロールパネル相当
/var 可変データ(ログ等) /var/log/, /var/www/, /var/lib/ Windowsイベントログ
/usr ユーザープログラム /usr/bin/, /usr/lib/, /usr/local/ C:\Windows\System32
/home ユーザーホーム /home/ユーザー名/ C:\Users\名前
/tmp 一時ファイル 再起動で削除される一時データ Tempフォルダ
/proc カーネル情報 /proc/cpuinfo, /proc/meminfo タスクマネージャー相当
/dev デバイスファイル /dev/sda, /dev/null, /dev/urandom デバイスマネージャー
/opt 追加アプリ サードパーティソフトのインストール先 C:\Program Files
/boot ブートローダー vmlinuz, initramfs, grub/ (Windows対比なし)
/root rootユーザーのホーム rootアカウントの個人ファイル 管理者アカウントのホーム
/etc、/var、/usr の3つを押さえておけば、
Linuxの日常的なサーバー管理作業の9割はカバーできます。

関連記事:Linuxの絶対パスと相対パスの違い
関連記事:LinuxのDNS設定を変更する方法|resolv.confとnmcliで確実に設定する手順
関連記事:dfコマンドでディスク容量を確認する方法|使用率の見方や容量不足の対処も
関連記事:bashの設定ファイル完全解説|/etc/profile・~/.bash_profile・~/.bashrcの違いと使い分け
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
ディレクトリ構造を知ったら、次はサーバーをゼロから組み立てる力を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>

<PR> おすすめ書籍

ディレクトリ構造の先にあるLinuxの仕組みそのものを理解したい方へ。まず無料メルマガで学ぶのが第一歩ですが、手を動かしながら内部動作を学べる次の一冊が、理解を一段深めてくれます。

[試して理解]Linuxのしくみ 増補改訂版

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。