「/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 はファイルに見えてカーネルやデバイスへのインタフェース
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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 | 一時ファイル |
ハードディスクを追加してもドライブ文字は増えず、/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
ls -la / とすると権限・日付・サイズも合わせて表示されます。次のセクションから、各ディレクトリの役割を詳しく見ていきます。
ディレクトリを確認する基本コマンド(pwd・ls・cd・tree)
実際にコマンドを打ちながら確認するのが最速の学習法です。「今どこにいるんだろう」と迷ったときに使う基本コマンドを押さえておきましょう。
1. 現在地を確認する(pwd)
pwd(print working directory)は、今自分がいるディレクトリの絶対パスを表示するコマンドです。ディレクトリを移動した後など、迷ったらまずこれを実行します。
$ pwd /home/tanaka
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) $ 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
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サーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
ディレクトリ構造を知ったら、次はサーバーをゼロから組み立てる力を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>
<PR> おすすめ書籍
ディレクトリ構造の先にあるLinuxの仕組みそのものを理解したい方へ。まず無料メルマガで学ぶのが第一歩ですが、手を動かしながら内部動作を学べる次の一冊が、理解を一段深めてくれます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 次のページへ:Linuxのsystemdによる起動プロセスを理解する|journalctl -bとsystemctl list-unitsで確認する方法
- 前のページへ:Linuxの絶対パスと相対パスの違い|/からのパス記法を初心者向けに解説
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

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