Linuxのシステムファイルとは?ディレクトリ構造と重要ファイルを徹底解説

Linuxを使い始めると、「/etc」「/var」「/usr」といった謎のディレクトリに出会いますよね。

「どこに何があるの?」「このファイルは何をしてるの?」と戸惑う方も多いはずです。

実はLinuxのディレクトリ構造には、明確な「ルール」があります。

今回は、Linuxのシステムファイルとディレクトリ構造について、初心者の方にも分かりやすく解説していきます。


スポンサーリンク
  1. Linuxのディレクトリ構造とは
    1. すべてのディレクトリは「/(ルート)」から始まる
    2. FHS(Filesystem Hierarchy Standard)
  2. 主要なディレクトリとその役割
    1. /(ルート)- すべての起点
    2. /bin – 基本コマンド
    3. /sbin – システム管理コマンド
    4. /etc – 設定ファイル
    5. /home – ユーザーディレクトリ
    6. /root – root用ホームディレクトリ
    7. /usr – ユーザープログラム
    8. /var – 可変データ
    9. /tmp – 一時ファイル
    10. /dev – デバイスファイル
    11. /proc – プロセス情報
    12. /sys – システム情報
    13. /boot – 起動関連ファイル
    14. /lib – 共有ライブラリ
    15. /media、/mnt – マウントポイント
    16. /opt – オプションソフトウェア
    17. /srv – サービスデータ
    18. /run – 実行時データ
  3. 重要な設定ファイル
    1. /etc/passwd – ユーザー情報
    2. /etc/shadow – パスワード
    3. /etc/group – グループ情報
    4. /etc/fstab – ファイルシステムマウント設定
    5. /etc/hostname – ホスト名
    6. /etc/hosts – ローカルホスト名解決
    7. /etc/resolv.conf – DNS設定
  4. ログファイルの場所
    1. /var/log – すべてのログの中心
    2. ログのローテーション
  5. システム情報の取得
    1. /proc からの情報取得
    2. /sys からの情報取得
  6. 注意すべきポイント
    1. 触ってはいけないファイル
    2. バックアップの重要性
    3. 権限の確認
  7. トラブルシューティング
    1. ディスク容量不足
    2. 設定ファイルの破損
    3. ファイルが見つからない
    4. 権限エラー
  8. よくある質問
    1. Windowsとの違いは?
    2. 隠しファイルとは?
    3. シンボリックリンクとは?
    4. どのファイルを削除していい?
  9. まとめ:ディレクトリ構造を理解して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
ユーザー用コマンド(gccpythonvimなど)

/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
専用コマンド(useraddpasswdなど)を使用

/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を使いこなしましょう!

コメント

タイトルとURLをコピーしました