「/etc と /var と /usr、それぞれ何を入れる場所なの?」
Linuxを使い始めると、ルート直下に大量のディレクトリが並んでいることに気づきます。
Windowsとは全く異なる構造で、最初は戸惑うのが普通です。
この記事では、Linuxのディレクトリ構造を規定するFHS(Filesystem Hierarchy Standard)の概念から、
実際にどのディレクトリに何が入っているかを、コマンド実行例つきで解説します。
RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みの内容です。
この記事のポイント
・LinuxのディレクトリはFHS(国際標準規格)で役割が決まっている
・/etc=設定ファイル、/var=可変データ、/usr=ユーザープログラムが三大基本
・/proc と /dev はファイルに見えてカーネルへのインタフェース
・ls / でルート直下の構造を一度確認しておくと全体把握が速い
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
次のセクションから、各ディレクトリの役割を詳しく見ていきます。
主要ディレクトリの役割と代表ファイル
1. /etc — 設定ファイルの格納庫
サーバー管理で最もよく触れるディレクトリです。各サービスの設定ファイルが集中しています。
# /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
2. /var — 変化するデータの置き場
「variable(可変)」の略です。ログファイル、キャッシュ、メールスプール、データベースのデータファイルなど、
運用中に増減するファイルが置かれます。
# ログの確認(システムログ) $ 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. # /var のサブディレクトリ $ ls /var/ cache lib lock log mail run spool tmp www # Webサーバーのドキュメントルート(Ubuntu) $ ls /var/www/html/ index.html css/ js/ images/ # ディスク使用量確認(varが肥大化しやすい) $ du -sh /var/log/ 1.2G /var/log/
3. /usr — ユーザー向けプログラムとライブラリ
「Unix System Resources」の略です。パッケージマネージャでインストールしたプログラム・ライブラリが格納されます。
・/usr/bin:一般ユーザーが使うコマンド(ls, cp, grep など)
・/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 です。# ホームディレクトリの確認 $ ls /home/ tanaka yamada suzuki # 自分のホームディレクトリへ移動 $ cd ~ $ pwd /home/tanaka # ドットファイル(設定ファイル)もホームに置かれる $ ls -a ~ . .. .bash_history .bash_profile .bashrc work documents
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 — デバイスファイル
ハードディスク、端末、ランダムデバイスなどがファイルとして表現されます。# ブロックデバイス(ストレージ)の確認 $ ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 # /dev/null: 出力を捨てる際に使う $ command_that_outputs_too_much 2>/dev/null # /dev/random: ランダムなバイト列を生成 $ 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
本記事のまとめ
ルート直下のディレクトリを役割別に整理します。| ディレクトリ | 主な役割 | 代表的なファイル・用途 |
|---|---|---|
/etc |
設定ファイル | fstab, hostname, httpd/, ssh/, passwd |
/var |
可変データ(ログ等) | /var/log/, /var/www/, /var/lib/ |
/usr |
ユーザープログラム | /usr/bin/, /usr/lib/, /usr/local/ |
/home |
ユーザーホーム | /home/ユーザー名/ |
/tmp |
一時ファイル | 再起動で削除される一時データ |
/proc |
カーネル情報 | /proc/cpuinfo, /proc/meminfo |
/dev |
デバイスファイル | /dev/sda, /dev/null, /dev/random |
/opt |
追加アプリ | サードパーティソフトのインストール先 |
/boot |
ブートローダー | vmlinuz, initramfs, grub/ |
/root |
rootユーザーのホーム | rootアカウントの個人ファイル |
/etc、/var、/usr の3つを押さえておけば、Linuxの日常的なサーバー管理作業の9割はカバーできます。
関連記事:Linuxの絶対パスと相対パスの違い
関連記事:Linuxのネットワーク設定を確認する
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxのsystemdによる起動プロセスを理解する|journalctl -bとsystemctl list-unitsで確認する方法
- 前のページへ:Linuxの絶対パスと相対パスの違い|/からのパス記法を初心者向けに解説
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます