Linuxを使い始めると、「/etc」「/var」「/usr」といった謎のディレクトリに出会いますよね。
「どこに何があるの?」「このファイルは何をしてるの?」と戸惑う方も多いはずです。
実はLinuxのディレクトリ構造には、明確な「ルール」があります。
今回は、Linuxのシステムファイルとディレクトリ構造について、初心者の方にも分かりやすく解説していきます。
Linuxのディレクトリ構造とは

すべてのディレクトリは「/(ルート)」から始まる
Windowsでは「C:」「D:」といったドライブがありますが、Linuxは違います。
Linuxのファイルシステム:
- すべてが/(ルート)という一つの起点から始まる
- ツリー構造(木の枝のように階層的)
- ドライブという概念がない
- すべてがディレクトリとファイル
イメージ:
/(ルート)
├── bin/
├── etc/
├── home/
├── usr/
├── var/
└── ...
このシンプルな構造が、Linuxの特徴です。
FHS(Filesystem Hierarchy Standard)
Linuxのディレクトリ構造は、FHSという標準規格に基づいています。
これにより、どのLinuxディストリビューション(Ubuntu、CentOS、Fedoraなど)でも、基本的なディレクトリ構造が同じになっています。
メリット:
- 設定ファイルの場所が統一されている
- スクリプトが他の環境でも動作しやすい
- トラブルシューティングが容易
- ドキュメントが共通して使える
主要なディレクトリとその役割
/(ルート)- すべての起点
ファイルシステムの最上位ディレクトリです。
ここにすべてのディレクトリとファイルがぶら下がっています。
確認:
ls /
出力例:
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/bin – 基本コマンド
Binary(バイナリ)の略で、基本的なコマンドが格納されています。
含まれるコマンド例:
ls:ファイル一覧cp:コピーmv:移動rm:削除cat:ファイル表示echo:文字列表示
特徴:
- システムが起動する最低限のコマンド
- 一般ユーザーも実行可能
- 最近は
/usr/binにシンボリックリンクされていることが多い
/sbin – システム管理コマンド
System Binaryの略で、システム管理用コマンドが格納されています。
含まれるコマンド例:
reboot:再起動shutdown:シャットダウンfsck:ファイルシステムチェックiptables:ファイアウォール設定ifconfig:ネットワーク設定
特徴:
- 主に管理者(root)が使用
- システム保守に必要
/usr/sbinへのリンクになっていることも
/etc – 設定ファイル
Editable Text Configurationの略(諸説あり)で、システムとアプリケーションの設定ファイルが保存されています。
重要なファイル例:
ネットワーク設定:
/etc/network/interfaces
/etc/resolv.conf(DNS設定)
/etc/hosts(ホスト名解決)
ユーザー情報:
/etc/passwd(ユーザー一覧)
/etc/shadow(パスワード)
/etc/group(グループ情報)
システム設定:
/etc/fstab(マウント設定)
/etc/hostname(ホスト名)
/etc/ssh/sshd_config(SSH設定)
特徴:
- ほぼすべてがテキストファイル
- 管理者権限で編集
- バックアップ必須
/home – ユーザーディレクトリ
各ユーザーの個人用ディレクトリです。
構造:
/home/
├── john/
│ ├── Desktop/
│ ├── Documents/
│ ├── Downloads/
│ └── .bashrc(個人設定ファイル)
└── alice/
└── ...
特徴:
- Windowsの「C:\Users」に相当
- 各ユーザーは自分のディレクトリのみ編集可能
- ドットで始まるファイル(.bashrc など)は隠しファイル
/root – root用ホームディレクトリ
管理者(root)専用のホームディレクトリです。
注意:
/(ルート)と/rootは別物- 一般ユーザーはアクセス不可
- rootでログインした時のホームディレクトリ
/usr – ユーザープログラム
Unix System Resourcesの略で、ユーザーが使用するプログラムやライブラリが格納されています。
主なサブディレクトリ:
/usr/bin:
ユーザー用コマンド(gcc、python、vimなど)
/usr/sbin:
システム管理用コマンド
/usr/lib:
ライブラリファイル
/usr/local:
ローカルでインストールしたソフトウェア
/usr/share:
共有データ(ドキュメント、アイコンなど)
特徴:
- 最大のディレクトリの一つ
- 読み取り専用として扱われることが多い
/var – 可変データ
Variable(可変)の略で、変化するデータが保存されています。
主なサブディレクトリ:
/var/log:
ログファイル
/var/log/syslog(システムログ)
/var/log/auth.log(認証ログ)
/var/log/apache2/(Apacheログ)
/var/tmp:
一時ファイル(再起動後も保持)
/var/cache:
キャッシュデータ
/var/mail:
メールボックス
/var/www:
Webサーバーのドキュメントルート
特徴:
- 常に書き込みが発生
- 容量が増加しやすい
- 定期的なメンテナンスが必要
/tmp – 一時ファイル
Temporary(一時的)の略で、一時的なファイルが保存されます。
特徴:
- すべてのユーザーが書き込み可能
- 再起動で削除されることが多い
- ディスク容量の圧迫を防ぐため、定期的にクリーンアップされる
注意:
重要なファイルは置かないでください。
/dev – デバイスファイル
Device(デバイス)の略で、ハードウェアデバイスへのインターフェースです。
主なデバイスファイル:
/dev/sda、/dev/sda1:
ハードディスク(1番目のディスク、1番目のパーティション)
/dev/null:
ブラックホール(すべてを捨てる)
command > /dev/null # 出力を捨てる
/dev/zero:
ゼロを無限に出力
/dev/random、/dev/urandom:
乱数生成
特徴:
- 実際のファイルではなく、デバイスへの入り口
- 動的に作成・削除される
/proc – プロセス情報
Process(プロセス)情報を提供する仮想ファイルシステムです。
重要なファイル:
/proc/cpuinfo:
CPU情報
cat /proc/cpuinfo
/proc/meminfo:
メモリ情報
cat /proc/meminfo
/proc/[PID]/:
各プロセスの情報(PIDはプロセスID)
特徴:
- 実際にディスクに存在しない
- カーネルが動的に生成
- システム情報へのアクセス手段
/sys – システム情報
システムとデバイスの情報を提供する仮想ファイルシステムです。
用途:
- ハードウェアデバイスの情報
- カーネルパラメータの変更
- 電源管理
例:
# CPUの周波数を確認
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
/boot – 起動関連ファイル
システムの起動に必要なファイルが格納されています。
主なファイル:
- カーネルイメージ(
vmlinuz) - initramfs(初期RAMディスク)
- GRUBの設定ファイル
注意:
このディレクトリを誤って削除すると、システムが起動しなくなります。
/lib – 共有ライブラリ
システムの基本的なライブラリファイルが格納されています。
Windowsの「DLLファイル」に相当します。
特徴:
/binや/sbinのコマンドが使用- システム起動に必要
/media、/mnt – マウントポイント
外部メディアやファイルシステムをマウントする場所です。
/media:
自動マウント(USBメモリ、CD/DVDなど)
/mnt:
手動マウント(管理者が一時的に使用)
使用例:
sudo mount /dev/sdb1 /mnt
/opt – オプションソフトウェア
Optional(オプション)の略で、サードパーティ製ソフトウェアがインストールされます。
例:
- Google Chrome
- Zoom
- 独自開発のアプリケーション
特徴:
- パッケージマネージャーを使わないソフトウェア
- 自己完結型のアプリケーション
/srv – サービスデータ
Service(サービス)の略で、サーバーが提供するデータを格納します。
例:
- Webサーバーのコンテンツ
- FTPサーバーのファイル
最近はあまり使われず、/var/wwwなどが使われることが多いです。
/run – 実行時データ
システム起動後の実行時情報が保存されます。
内容:
- プロセスID(PID)ファイル
- ソケットファイル
- ロックファイル
特徴:
- tmpfsとしてマウントされる(メモリ上)
- 再起動で消去される
重要な設定ファイル

/etc/passwd – ユーザー情報
すべてのユーザーの基本情報が記録されています。
確認:
cat /etc/passwd
フォーマット:
username:x:UID:GID:GECOS:home:shell
例:
john:x:1000:1000:John Doe:/home/john:/bin/bash
項目:
john:ユーザー名x:パスワード(実際は/etc/shadowに保存)1000:ユーザーID(UID)1000:グループID(GID)John Doe:フルネーム/home/john:ホームディレクトリ/bin/bash:ログインシェル
/etc/shadow – パスワード
暗号化されたパスワードが保存されています。
特徴:
- rootのみ読み取り可能
- セキュリティ上重要
- 直接編集は非推奨
/etc/group – グループ情報
グループとそのメンバーが記録されています。
確認:
cat /etc/group
フォーマット:
groupname:x:GID:members
例:
sudo:x:27:john,alice
/etc/fstab – ファイルシステムマウント設定
起動時に自動マウントするファイルシステムを定義します。
確認:
cat /etc/fstab
例:
UUID=xxx-xxx-xxx / ext4 defaults 0 1
UUID=yyy-yyy-yyy /home ext4 defaults 0 2
/etc/hostname – ホスト名
システムのホスト名が記録されています。
確認:
cat /etc/hostname
変更:
sudo hostnamectl set-hostname new-hostname
/etc/hosts – ローカルホスト名解決
IPアドレスとホスト名の対応を定義します。
確認:
cat /etc/hosts
例:
127.0.0.1 localhost
127.0.1.1 mycomputer
192.168.1.100 server01
DNSより先に参照されます。
/etc/resolv.conf – DNS設定
DNSサーバーの設定が記録されています。
確認:
cat /etc/resolv.conf
例:
nameserver 8.8.8.8
nameserver 8.8.4.4
ログファイルの場所
/var/log – すべてのログの中心
システムのログファイルは、基本的に/var/logに保存されます。
主なログファイル:
/var/log/syslog(Ubuntu/Debian):
システム全般のログ
tail -f /var/log/syslog
/var/log/messages(CentOS/RHEL):
システムメッセージ
/var/log/auth.log(Ubuntu/Debian):
認証関連のログ(ログイン、sudo実行など)
/var/log/secure(CentOS/RHEL):
認証ログ
/var/log/kern.log:
カーネルログ
/var/log/dmesg:
起動時のカーネルメッセージ
/var/log/apache2/、/var/log/nginx/:
Webサーバーのログ
/var/log/mysql/、/var/log/postgresql/:
データベースログ
ログのローテーション
ログファイルは放置すると巨大化します。
logrotateが自動的に:
- 古いログを圧縮
- 一定期間後に削除
- 新しいログファイルを作成
設定ファイル:
/etc/logrotate.conf
/etc/logrotate.d/
システム情報の取得
/proc からの情報取得
CPU情報:
cat /proc/cpuinfo
メモリ情報:
cat /proc/meminfo
カーネルバージョン:
cat /proc/version
アップタイム:
cat /proc/uptime
マウント状況:
cat /proc/mounts
/sys からの情報取得
バッテリー状態:
cat /sys/class/power_supply/BAT0/capacity
ネットワークインターフェース:
ls /sys/class/net/
温度センサー:
cat /sys/class/thermal/thermal_zone0/temp
注意すべきポイント
触ってはいけないファイル
絶対に編集・削除してはいけないもの:
/etc/passwd、/etc/shadow:
専用コマンド(useradd、passwdなど)を使用
/boot/内のファイル:
削除するとシステムが起動しなくなる
/dev/内のファイル:
システムが自動管理
/proc/、/sys/:
読み取り専用として扱う
バックアップの重要性
設定ファイルを編集する前は、必ずバックアップを取りましょう。
方法:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
または:
sudo cp /etc/ssh/sshd_config{,.backup}
日付付きバックアップ:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +%Y%m%d)
権限の確認
重要なファイルには適切な権限が設定されています。
確認:
ls -l /etc/passwd
-rw-r--r-- 1 root root 2345 Jan 20 10:00 /etc/passwd
意味:
-rw-r--r--:所有者は読み書き可、他は読み取りのみroot root:所有者とグループがroot
権限を変更してはいけません:
不用意に変更すると、セキュリティリスクや動作不良を引き起こします。
トラブルシューティング
ディスク容量不足
原因の特定:
# ディレクトリごとの使用量
sudo du -sh /*
# 大きなファイルを探す
sudo find / -type f -size +100M
よくある原因:
/var/logのログファイル肥大化/tmpの不要ファイル- 削除されていないパッケージキャッシュ
対処:
# ログのクリーンアップ
sudo journalctl --vacuum-time=7d
# パッケージキャッシュの削除
sudo apt clean # Ubuntu/Debian
sudo yum clean all # CentOS/RHEL
設定ファイルの破損
症状:
サービスが起動しない、システムが不安定。
対処:
# バックアップから復元
sudo cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config
# パッケージの再インストール
sudo apt install --reinstall openssh-server
ファイルが見つからない
検索コマンド:
# ファイル名で検索
find / -name "filename" 2>/dev/null
# パッケージに含まれるファイルを確認
dpkg -L package-name # Ubuntu/Debian
rpm -ql package-name # CentOS/RHEL
権限エラー
症状:Permission deniedエラー。
対処:
# sudoで実行
sudo command
# ファイルの権限確認
ls -l filename
# 必要に応じて権限変更(慎重に)
sudo chmod 644 filename
よくある質問
Windowsとの違いは?
Windows:
- ドライブ文字(C:、D:)
- プログラムは
C:\Program Files - 設定は「レジストリ」
- バックスラッシュ(\)
Linux:
- 単一のルート(/)
- プログラムは複数箇所に分散
- 設定はテキストファイル
- スラッシュ(/)
慣れれば:
Linuxの方がシンプルで分かりやすいという人も多いです。
隠しファイルとは?
ドット(.)で始まるファイルやディレクトリは「隠しファイル」です。
例:
.bashrc.ssh/.config/
表示方法:
ls -a
用途:
設定ファイルや個人データを目立たなくする。
シンボリックリンクとは?
Windowsの「ショートカット」に似た機能です。
確認:
ls -l /bin
lrwxrwxrwx 1 root root 7 Jan 1 12:00 /bin -> usr/bin
lで始まり、->で実際の場所を示しています。
作成:
ln -s /path/to/original /path/to/link
どのファイルを削除していい?
安全に削除できるもの:
/tmp内のファイル~/Downloads内のファイル- パッケージキャッシュ(
apt cleanなど) - 古いログファイル(圧縮されたもの)
削除してはいけないもの:
/etc、/bin、/sbin、/libなど- システムディレクトリ全般
- 用途が分からないファイル
迷ったら:
削除せず、バックアップを取るか専門家に相談しましょう。
まとめ:ディレクトリ構造を理解してLinuxマスターに
Linuxのディレクトリ構造は、一見複雑に見えますが、明確なルールがあります。
この記事のポイント:
- すべては/(ルート)から始まる
- FHSという標準規格に基づく
- /binと/sbinにコマンド
- /etcに設定ファイル
- /varに可変データとログ
- /homeにユーザーデータ
- /procと/sysは仮想ファイルシステム
- /devはデバイスファイル
- /tmpは一時ファイル
- 設定ファイルはバックアップ必須
- 不明なファイルは削除しない
覚えるべき主要ディレクトリ:
/etc - 設定ファイル
/home - ユーザーデータ
/var/log - ログファイル
/usr/bin - ユーザーコマンド
/tmp - 一時ファイル
最初は戸惑うかもしれませんが、この構造を理解すれば、トラブルシューティングやシステム管理が格段に楽になります。
少しずつ慣れていって、Linuxを使いこなしましょう!


コメント