Linuxのフォルダ構成|/etc・/home・/var・/usrの役割とリンク

Lv1 では、自分のホームディレクトリ(~)の中で、作る・コピーする・消す・見る・編集する、をひと通り練習しました。ここからは Lv2 です。少しだけ視野を広げて、Linux 全体のフォルダ構成を見ていきましょう。

ネットの手順書を読んでいると、「/etc の設定ファイルを開いて」「ログは /var/log にあります」のように、見慣れない場所が急に出てきますよね。私も最初は、/etc と /usr の違いがさっぱりわからず、手順書をコピーして貼るだけになっていました。

でも、それぞれの場所の役割がわかると、「設定なら /etc かな」「ログなら /var/log かな」と、自分で当たりをつけられるようになります。この記事では、よく出てくるディレクトリの役割と、ショートカットのような「リンク」を、実際に見ながら確認していきます。

💡
この記事でわかること
  • Linux のいちばん上の場所(/)にある、主なディレクトリの役割
  • /etc・/home・/var・/usr・/tmp をのぞいてみる方法
  • コマンドの本体がどこにあるかを調べる which
  • ショートカットのような「シンボリックリンク」と ln -s の使い方
🔰
この記事の前提
  • pwd・ls・cd と、絶対パス(/ から始まるパス)がわかる
  • cat・less でファイルの中身を表示できる

まだの方は「Linuxのパス入門|絶対パス・相対パス・~(チルダ)と ..(ドットドット)をやさしく解説」から読むのがおすすめです。前の記事は「ターミナルでファイルを編集する|nano入門とvimの「保存して終了」だけ覚える」です。

💡
用語メモ
  • IPアドレス:ネットワーク上のコンピューターの住所にあたる番号
  • ディスク:データをしまっておく部品(SSD など)。電源を切っても消えません
  • コマンド:パソコンへの指示の言葉。ターミナルに打って Enter で実行します
  • ログ:プログラムが残す「いつ、何が起きたか」の記録

用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。


結論:まずはこの6か所だけ覚えればOK

場所 役割(ひとことで) たとえるなら
/ すべての出発点(ルート) 建物の入り口
/home ユーザーごとの部屋(/home/kaito など) 自分の部屋
/etc システムやソフトの設定ファイル 設定の書類棚
/var 増えたり変わったりするデータ。特に /var/log はログ 日誌・記録の棚
/usr 入れたソフトやコマンドの本体 道具箱
/tmp 一時的なファイル置き場 作業台(片付けられることがある)

Linuxのディレクトリ構成

全部を覚える必要はありません。自分のファイルは /home、設定は /etc、ログは /var/log。まずはこの3つを押さえておけば、手順書がぐっと読みやすくなります。


いちばん上の場所「/」をのぞいてみる

Linux のファイルは、すべて /(ルート)から始まる1本の木のような形でつながっています。Windows のように「C ドライブ」「D ドライブ」と分かれてはいません。まずは、いちばん上を見てみましょう。

  • 1
ls /

🖥️
この記事の出力例について

ここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。

(例)

  • 1
  • 2
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

💡
並ぶ名前は、環境によって少し違います

今回の検証は、確認用に最小限の構成にした Debian 13 で行いました。インストーラーで入れた普通の Debian では、ほかに lost+found や vmlinuz・initrd.img などが並ぶこともあります。また、ふつうの ls では、どれがリンクなのかは文字だけでは見分けられません(色が付いて表示されるだけです)。リンクの見分け方は、この記事の後半で紹介します。

Debian 13での実行画面

たくさん出てきますが、ほとんどはシステムが使う場所です。ふだん私たちが触るのは、ほんの一部だけ。ここからは、よく出てくる場所を順番に見ていきます。

⚠️
この記事では「見るだけ」にします

/ の下にあるディレクトリは、システムが動くために必要なものばかりです。この記事では ls・cat・less でのぞくだけにして、作る・消す・書き換えるのは、これまでどおり ~/linux-practice の中だけで行いましょう。


/home:ユーザーごとの部屋

/home の中には、ユーザーごとのディレクトリがあります。ふだん ~ と書いている場所の正体は、ここです。

  • 1
  • 2
ls /home
echo ~

(例)

  • 1
  • 2
  • 3
  • 4
kaito@demo:~$ ls /home
kaito
kaito@demo:~$ echo ~
/home/kaito

~ は「/home/kaito」の省略形だった、というわけですね。自分の部屋の中なら、自由に作ったり消したりできます。

/root:管理者の部屋

ちなみに、管理者(root)の部屋だけは /home の中ではなく、/root という別の場所にあります。ふつうのユーザーは中をのぞけません。

  • 1
ls /root

(例)

  • 1
ls: cannot open directory '/root': Permission denied

「cannot open directory(ディレクトリを開けません)」「Permission denied(許可がありません)」と出たら、それが正常です。誰が何をできるかの決まり(パーミッション)は、次の記事でくわしく見ていきます。


/etc:設定ファイルの書類棚

/etc には、システムやソフトの設定ファイルが集まっています。読み方は「エトセ」「イーティーシー」など、人によっていろいろです。

  • 1
ls /etc

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
X11                            deluser.conf     ld.so.conf      opt          shadow-
adduser.conf                   depmod.d         ld.so.conf.d    os-release   shells
aliases                        dhcp             libaudit.conf   pam.conf     skel
alternatives                   dhcpcd.conf      lighttpd        pam.d        ssh
apache2                        dpkg             locale.alias    passwd       ssl
apparmor.d                     e2scrub.conf     locale.conf     passwd-      subgid
apt                            email-addresses  locale.gen      perl         subgid-
bash.bashrc                    environment      localtime       ppp          subuid
bash_completion                ethertypes       login.defs      profile      subuid-
bash_completion.d              exim4            logrotate.conf  profile.d    sudo.conf
bindresvport.blacklist         fstab            logrotate.d     protocols    sudo_logsrvd.conf
binfmt.d                       gai.conf         machine-id      python3      sudoers
ca-certificates                gprofng.rc       mail.rc         python3.13   sudoers.d
ca-certificates.conf           groff            mailname        rc0.d        supercat
ca-certificates.conf.dpkg-old  group            manpath.config  rc1.d        sysctl.d
credstore                      group-           mime.types      rc2.d        systemd
credstore.encrypted            gshadow          mke2fs.conf     rc3.d        terminfo
cron.d                         gshadow-         modprobe.d      rc4.d        timezone
cron.daily                     gss              modules         rc5.d        tmpfiles.d
cron.hourly                    host.conf        modules-load.d  rc6.d        udev
cron.monthly                   hostname         motd            rcS.d        update-motd.d
cron.weekly                    hosts            mtab            resolv.conf  vconsole.conf
cron.yearly                    init.d           nanorc          rmt          vim
crontab                        inputrc          netconfig       rpc          xattr.conf
dbus-1                         issue            network         security     xdg
debconf.conf                   issue.net        networks        selinux
debian_version                 kernel           nftables.conf   services
default                        ld.so.cache      nsswitch.conf   shadow

中身は環境によって違います(今回の検証環境には、apache2 や exim4 など、検証用の都合で入っているものも並んでいます)。名前を全部覚える必要はありません。

数が多いので、ひとつだけ開いてみましょう。/etc/os-release には、使っている Linux の種類やバージョンが書かれています。

  • 1
cat /etc/os-release

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.7
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

PRETTY_NAME の行を見ると、「Debian」なのか「Ubuntu」なのか、どのバージョンなのかがわかります。AI に質問するときも、この情報を添えると答えが正確になりますよ。

💡
/etc の中は、ふつうは書き換えられません

/etc の設定ファイルの多くは、ふつうのユーザーでは読めても書き換えられないようになっています。書き換えるには sudo(管理者の権限を借りるコマンド)が必要です。sudo は、この Lv2 の記事でくわしく扱います。


/var:ログなど、増えていくデータ

/var は「variable(変わるもの)」の略です。使っているうちに増えたり変わったりするデータが置かれます。中でもよく使うのが、ログが集まる /var/log です。

  • 1
ls /var/log

(例)

  • 1
  • 2
README            apt            btmp      exim4    lastlog  wtmp
alternatives.log  bootstrap.log  dpkg.log  journal  private

apt というディレクトリや dpkg.log には、ソフトを入れたり消したりした記録が残ります(並ぶものは環境によって違います)。

ログの中には、管理者しか読めないものもあります。自動化のスクリプト(=やりたい処理を順番に書いておき、まとめて実行できるファイル)がうまく動かないときは、こうしたログが手がかりになります。ログの読み方は、Lv4 でくわしく扱います。


/usr:コマンドやソフトの本体

/usr には、入れたソフトやコマンドの本体が置かれています。ふだん使っている ls や cat も、実はここにあるファイルです。which で、コマンドの本体がどこにあるか調べてみましょう。

  • 1
  • 2
  • 3
which ls
which cat
which python3

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
kaito@demo:~$ which ls
/usr/bin/ls
kaito@demo:~$ which cat
/usr/bin/cat
kaito@demo:~$ which python3
/usr/bin/python3

今回の環境には Python 3 が入っていたので /usr/bin/python3 と表示されました。入っていない環境では、何も表示されずに次のプロンプトに戻ります。

/usr/bin の bin は「binary(実行できるファイル)」の略です。「コマンドを打つと、このファイルが動いているんだ」と思っておけば大丈夫です。

💡
which で何も出ないときは

which で何も表示されないときは、そのコマンドが入っていないか、見つけられない場所にあります。「command not found」の正体と、コマンドを探す場所(PATH)の話は、Lv3 の記事で扱います。


/tmp:一時的なファイル置き場

/tmp は、一時的なファイルを置く場所です。誰でも書き込めますが、再起動などのタイミングで消えることがあるので、大事なファイルは置かないようにしましょう。

  • 1
ls -ld /tmp

(例)

  • 1
drwxrwxrwt 2 root root 4096 Nov  1 03:14 /tmp

最初の drwxrwxrwt のような文字は、「誰が何をできるか」を表しています。読み方は次の記事で説明するので、今は「こういう表示が出るんだな」くらいで大丈夫です。

ひとつだけ先に言っておくと、いちばん最後の t は /tmp ならではの印です。「誰でもファイルを置ける。でも、消したり名前を変えたりできるのは、自分のファイル(とその場所の持ち主)だけ」という意味で、スティッキービットと呼ばれます。みんなで使う作業台なので、ほかの人のファイルを勝手に片付けられないようにしてあるんですね。


その他のディレクトリ(ざっくりでOK)

場所 役割
/bin・/sbin 基本的なコマンド(最近の Debian・Ubuntu では /usr/bin などへのリンク)
/lib コマンドが使う部品(ライブラリ)
/boot 起動に使うファイル
/dev ディスクなどの機器を表す特別なファイル
/proc 動いているプログラムなどの情報を見せる、特別な場所
/opt あとから入れた大きめのソフトが置かれることがある
/mnt・/media USB メモリや別のディスクをつなぐ場所

💡
WSL を使っている方へ

WSL では、Windows の C ドライブが /mnt/c として見えます。たとえば Windows のユーザーフォルダは /mnt/c/Users/… です。Windows と Linux のパスの対応は、パスの記事で紹介しました。

🤖 詰まったらAIに聞こう:このディレクトリは何のため?

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Linuxの初心者です。手順書に出てきたディレクトリ(またはファイル)の役割がわかりません。
何のための場所か、触ってもよい場所かどうかを、初心者向けに教えてください。

【使っている環境】WSLのUbuntu など(cat /etc/os-release の PRETTY_NAME の行)
【気になっている場所】例:/etc/apt/sources.list.d
【その場所が出てきた手順書の一文】ここに貼る
【自分がやりたいこと】例:ソフトを入れたい

リンク:ショートカットのようなファイル

Linux には、Windows のショートカットのようなシンボリックリンクというしくみがあります。「本体は別の場所にあって、ここには道案内だけ置いてある」というものです。

システムの中のリンクを見てみる

最近の Debian や Ubuntu では、/bin が /usr/bin へのリンクになっていることが多いです。ls -l で確かめてみましょう。

  • 1
ls -l /bin

(例)

  • 1
lrwxrwxrwx 1 root root 7 Jul 18 02:05 /bin -> usr/bin

先頭が l(link の l)で、-> の右側に「本当の場所」が表示されていれば、それがリンクです。

自分でリンクを作ってみる:ln -s

練習用のディレクトリで、リンクを作ってみましょう。

  • 1
  • 2
  • 3
  • 4
  • 5
mkdir -p ~/linux-practice/link-test
cd ~/linux-practice/link-test
echo "本体のファイルです" > original.txt
ln -s original.txt shortcut.txt
ls -l

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
kaito@demo:~$ mkdir -p ~/linux-practice/link-test
kaito@demo:~$ cd ~/linux-practice/link-test
kaito@demo:~/linux-practice/link-test$ echo "本体のファイルです" > original.txt
kaito@demo:~/linux-practice/link-test$ ln -s original.txt shortcut.txt
kaito@demo:~/linux-practice/link-test$ ls -l
total 4
-rw-rw-r-- 1 kaito kaito 28 Nov  1 05:24 original.txt
lrwxrwxrwx 1 kaito kaito 12 Nov  1 05:24 shortcut.txt -> original.txt

original.txt の先頭が -rw-rw-r-- になっている意味は、次の記事で説明します(環境によっては -rw-r--r-- と表示されます)。

ln -s 本体 リンクの名前 の順番で書きます。リンクを cat すると、本体の中身が表示されます。

  • 1
cat shortcut.txt

(例)

  • 1
本体のファイルです

シンボリックリンクのしくみ

本体を消すと、リンクは迷子になる

リンクは道案内だけなので、本体がなくなると、行き先のないリンクになります。練習用のディレクトリの中で確かめてみましょう。

  • 1
  • 2
  • 3
  • 4
pwd
mv original.txt original-moved.txt
cat shortcut.txt
ls -l

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
kaito@demo:~/linux-practice/link-test$ pwd
/home/kaito/linux-practice/link-test
kaito@demo:~/linux-practice/link-test$ mv original.txt original-moved.txt
kaito@demo:~/linux-practice/link-test$ cat shortcut.txt
cat: shortcut.txt: No such file or directory
kaito@demo:~/linux-practice/link-test$ ls -l
total 4
-rw-rw-r-- 1 kaito kaito 28 Nov  1 05:24 original-moved.txt
lrwxrwxrwx 1 kaito kaito 12 Nov  1 05:24 shortcut.txt -> original.txt

No such file or directory は「そのようなファイルやディレクトリはありません」という意味です。今回は本体を消したのではなく mv で名前を変えただけですが、リンクから見ると「original.txt という名前のものがない」ので、消したときと同じ状態になります。shortcut.txt はあるのに、道案内の先の original.txt がないので、このエラーになります。ls -l の文字の表示は、普通のリンクのときと同じです。端末によっては色で「行き先がない」ことを知らせてくれますが、文字だけでは見分けにくいので、「リンクなのに開けない」ときは行き先を疑ってみてください。

本体の名前を戻せば、リンクはまた使えるようになります。

  • 1
  • 2
mv original-moved.txt original.txt
cat shortcut.txt

(例)

  • 1
  • 2
  • 3
kaito@demo:~/linux-practice/link-test$ mv original-moved.txt original.txt
kaito@demo:~/linux-practice/link-test$ cat shortcut.txt
本体のファイルです

メッセージが日本語で出る環境では

日本語の設定(ロケール)になっている環境では、同じエラーが日本語で表示されます。今回の Debian 13 で日本語の設定にして試すと、次のようになりました。

(例)

  • 1
  • 2
ls: ディレクトリ '/root' を開くことが出来ません: 許可がありません
cat: shortcut.txt: そのようなファイルやディレクトリはありません

Debian 13での実行画面

💡
リンクを消しても、本体は消えません

いらなくなったリンクは、rm shortcut.txt のように、ふつうのファイルと同じく rm で消せます。消えるのはリンク(道案内)だけで、本体の original.txt は残ります。

🔒
AIに貼る前に:秘密情報やパスワードは貼らない

/etc などの設定ファイルや、ログの中には、パスワード、APIキー、トークン、IPアドレスなどが書かれていることがあります。APIキーやトークンは、Web のサービスを使うときに本人の代わりになる、合言葉のような文字列です。AI に中身を貼って相談するときは、必ず見直して「***」に置き換えてから貼ってください。


理解度チェック:どこを見に行く?

答えを見る前に、自分で「たぶんここ」と考えてみてください。

  1. ソフトの設定ファイルを直したい → どこを見る?
  2. 「apt で何を入れたか」の記録を見たい → どこを見る?
  3. 自分で書いたスクリプトや CSV を置きたい → どこに置く?

答え:1 は /etc、2 は /var/log(apt の記録は /var/log/apt の中)、3 は自分のホーム(~、つまり /home/kaito のような場所)です。迷ったら、この記事のいちばん上の表に戻ってきてください。


よくある質問

Q. シンボリックリンクと「ハードリンク」は何が違いますか?

ln -s で作るシンボリックリンクは「本体の場所を書いたメモ(道案内)」なので、本体の名前が変わったり消えたりすると使えなくなります。-s をつけない ln で作るハードリンクは、同じ中身に「もう1つの名前」をつけるしくみで、片方の名前を消しても中身は残ります。ふだんの作業で使うのは、ほとんどがシンボリックリンクです。まずは ln -s だけ覚えておけば大丈夫です。

Q. なぜ「/usr」という名前なのに、ユーザーのファイルを置かないのですか?

昔の UNIX では、ここにユーザーのファイルも置いていた名残りで「user」に近い名前になっています。今は、コマンドやソフトの本体を置く場所です。自分のファイルは /home の中(~)に置きましょう。

Q. /tmp に置いたファイルは、いつ消えますか?

環境によって違います。パソコンを起動し直したときに消える環境もあれば、一定の日数がたったものから片付けられる環境もあります。「いつか消えてもいいもの」だけを置く場所、と覚えておけば安全です。


まとめ

  • Linux のファイルは、すべて /(ルート)から始まる1本の木につながっている
  • 自分のファイルは /home(~)、設定は /etc、ログは /var/log
  • コマンドの本体は /usr/bin などにあり、which で場所を調べられる
  • /tmp は一時置き場。大事なファイルは置かない
  • シンボリックリンクはショートカット。ln -s 本体 リンク名 で作れる
  • システムのディレクトリは「見るだけ」。作業は ~/linux-practice で

次の記事では、ls /root で出てきた「Permission denied」の正体、パーミッション(権限)の読み方を見ていきます。


次に読む記事


関連する記事