Linuxを使い始めると、まず戸惑うのがディレクトリ(フォルダ)構造ではないでしょうか。Windowsの「Cドライブ」「Dドライブ」とはまったく異なる構成で、「/etc」「/var」「/home」といった見慣れないディレクトリが並んでいます。
しかし、Linuxのディレクトリ構造にはきちんとした規則があり、それを理解するだけでサーバー管理やトラブルシューティングの効率が格段に上がります。設定ファイルがどこにあるか、ログはどこに出力されるか――こうした知識は、中小企業のIT担当者にとって実務に直結するスキルです。
本記事では、Linuxのディレクトリ構造の基本から各主要ディレクトリの役割、実務での活用方法までを初心者向けに解説します。Linuxの基本についてはLinuxとは?初心者向け解説もあわせてご覧ください。
Linuxディレクトリ構造の基本概念
Linuxのディレクトリ構造を理解するために、まず基本的な概念を押さえましょう。
ルートディレクトリ「/」とツリー構造
Linuxのファイルシステムは、「/」(ルート)を頂点としたツリー構造になっています。Windowsのように「C:」「D:」といったドライブの概念はなく、すべてのファイルとディレクトリは「/」の配下に配置されます。
USBメモリや外付けハードディスクを接続した場合も、独立したドライブとしてではなく、ツリー構造の中の特定のディレクトリ(マウントポイント)に「マウント」されて利用されます。
FHS(Filesystem Hierarchy Standard)とは
FHS(Filesystem Hierarchy Standard)は、Linuxのディレクトリ構造に関する標準規格です。どのディストリビューションでも基本的なディレクトリ構造が共通しているのは、このFHSに準拠しているためです。
FHSがあることで、UbuntuでもRocky Linuxでも、設定ファイルは/etcに、ログは/var/logにある、という共通認識が成り立ちます。
絶対パスと相対パス
ディレクトリ構造を扱う際に重要なのが、絶対パスと相対パスの違いです。
- 絶対パス:ルート「/」からの完全なパス(例:/home/user/documents/file.txt)
- 相対パス:現在地からの相対的なパス(例:documents/file.txt)
サーバー設定では絶対パスを使うのが原則です。相対パスは実行場所によって結果が変わるため、設定ファイルやシェルスクリプトでは必ず絶対パスを指定しましょう。
ルート直下の主要ディレクトリ一覧
まずはルート「/」の直下にある主要ディレクトリの全体像を把握しましょう。以下のコマンドで確認できます。
ls -la /
コマンドの詳しい使い方はLinuxコマンド一覧を参考にしてください。
| ディレクトリ | 役割 | 利用頻度 |
|---|---|---|
| / | ルートディレクトリ(すべての起点) | - |
| /bin | 基本コマンドの実行ファイル | 高 |
| /sbin | システム管理用コマンド | 中 |
| /etc | 設定ファイル | 非常に高 |
| /home | 一般ユーザーのホームディレクトリ | 非常に高 |
| /root | rootユーザーのホームディレクトリ | 中 |
| /var | 可変データ(ログ、キャッシュなど) | 非常に高 |
| /tmp | 一時ファイル | 中 |
| /usr | ユーザー用プログラムとデータ | 高 |
| /opt | 追加ソフトウェア | 中 |
| /dev | デバイスファイル | 低 |
| /proc | プロセス情報(仮想ファイルシステム) | 中 |
| /sys | カーネル情報(仮想ファイルシステム) | 低 |
| /mnt, /media | マウントポイント | 低 |
| /boot | ブート関連ファイル | 低 |
/etc:設定ファイルの中枢
/etcは、システムとアプリケーションの設定ファイルが格納される最も重要なディレクトリです。サーバー管理者が最も頻繁にアクセスする場所と言えるでしょう。
重要な設定ファイル
| ファイル/ディレクトリ | 内容 |
|---|---|
| /etc/passwd | ユーザーアカウント情報 |
| /etc/shadow | パスワードのハッシュ値(暗号化) |
| /etc/group | グループ情報 |
| /etc/hosts | ホスト名とIPアドレスの対応表 |
| /etc/hostname | サーバーのホスト名 |
| /etc/fstab | ファイルシステムのマウント設定 |
| /etc/crontab | システム全体のcron設定 |
| /etc/ssh/ | SSH接続の設定ファイル |
| /etc/nginx/ | Nginxの設定ファイル |
| /etc/systemd/ | systemdのサービス設定 |
ユーザー管理に関わるファイルの詳細はユーザー・グループ管理ガイドを、cron設定はcronタスクスケジューリングを、SSH設定はSSHリモート接続ガイドをご覧ください。
設定ファイル編集の注意点
/etc配下のファイルを編集する際は、必ずバックアップを取ってから作業しましょう。設定ミスはシステム全体に影響を及ぼす可能性があります。
# 設定ファイルのバックアップ例
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# バックアップの日付付き
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +%Y%m%d)
ファイル編集にはVimやnanoエディタを使います。Vimの使い方は別記事で詳しく解説しています。
/var:ログとデータの保管場所
/var(variable)は、システム稼働中に変化する可変データが格納されるディレクトリです。ログファイル、メールデータ、キャッシュなどが保存されます。
重要なサブディレクトリ
| ディレクトリ | 内容 |
|---|---|
| /var/log/ | 各種ログファイル |
| /var/www/ | Webサーバーの公開ディレクトリ |
| /var/lib/ | アプリケーションの状態データ |
| /var/cache/ | キャッシュデータ |
| /var/spool/ | メールキューや印刷キュー |
| /var/tmp/ | 再起動後も残る一時ファイル |
/var/logの主要ログファイル
サーバーのトラブルシューティングでは、/var/logのログファイルが最も重要な情報源となります。
# システムログの確認
sudo tail -f /var/log/syslog # Ubuntu/Debian系
sudo tail -f /var/log/messages # CentOS/RHEL系
# 認証ログの確認
sudo tail -f /var/log/auth.log # Ubuntu/Debian系
sudo tail -f /var/log/secure # CentOS/RHEL系
# Webサーバーログの確認
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
ログ管理の詳細はLinuxログ管理ガイドで解説しています。また、/var/logが肥大化するとディスク容量を圧迫するため、ディスク管理の知識も合わせて身につけておきましょう。
/var/wwwとWebサーバー
/var/www/は、ApacheやNginxでWebサイトを公開する際のデフォルトのドキュメントルートです。Webサイトのファイル一式をここに配置します。Nginxの設定方法についてはNginx構築ガイドで詳しく説明しています。
/homeと/root:ユーザーの作業場所
ユーザーごとの作業ディレクトリも理解しておきましょう。
/homeディレクトリ
/homeは一般ユーザーのホームディレクトリが配置される場所です。ユーザー「tanaka」であれば/home/tanakaがホームディレクトリとなり、チルダ「~」で参照できます。
# ホームディレクトリへ移動
cd ~
# または
cd /home/tanaka
# ホームディレクトリの内容確認
ls -la ~
ホームディレクトリには、以下のような設定ファイル(ドットファイル)が存在します。
- ~/.bashrc:Bashシェルの設定ファイル(環境変数の設定に関連)
- ~/.ssh/:SSH鍵の格納場所
- ~/.config/:各種アプリケーションの設定
/rootディレクトリ
/rootはrootユーザー(管理者)専用のホームディレクトリです。/homeの配下ではなく独立して配置されているのは、/homeが別パーティションにマウントされている場合でもrootユーザーが作業できるようにするためです。
rootユーザーの取り扱いについてはユーザー・グループ管理ガイドで詳しく解説しています。
/usr, /opt, /bin, /sbin:プログラムの格納場所
プログラム(実行ファイル)の格納場所についても整理しておきましょう。
/binと/sbin
/binはls、cp、mvなどの基本コマンドが格納されています。/sbinはfdisk、iptablesなどシステム管理用コマンドが格納されています。最近のディストリビューションでは、/binと/sbinは/usr/binと/usr/sbinへのシンボリックリンクになっているケースが多いです。
/usrディレクトリ
/usr(Unix System Resources)は、パッケージマネージャーでインストールしたプログラムやライブラリが格納されるディレクトリです。
- /usr/bin/:一般ユーザー向けコマンド
- /usr/sbin/:管理者向けコマンド
- /usr/lib/:共有ライブラリ
- /usr/local/:手動でインストールしたソフトウェア
- /usr/share/:アーキテクチャ非依存のデータ
パッケージマネージャー(apt、yumなど)によるソフトウェアの管理はパッケージ管理入門で詳しく解説しています。
/optディレクトリ
/opt(optional)は、ディストリビューション標準のパッケージ管理外のサードパーティ製ソフトウェアを格納する場所です。Google ChromeやSlackなどの商用ソフトウェアがインストールされることがあります。
仮想ファイルシステム:/proc, /sys, /dev
Linuxにはディスク上に実体を持たない「仮想ファイルシステム」が存在します。これらはカーネルがリアルタイムで生成する情報で、システム状態の確認に活用されます。
/procディレクトリ
/procはプロセス情報やシステム情報を提供する仮想ファイルシステムです。
# CPU情報の確認
cat /proc/cpuinfo
# メモリ情報の確認
cat /proc/meminfo
# カーネルバージョンの確認
cat /proc/version
# 特定プロセスの情報(PID 1234の場合)
ls /proc/1234/
プロセス管理の詳細はプロセス管理ガイドを、パフォーマンスの監視にはパフォーマンス監視ガイドをご覧ください。
/devディレクトリ
/dev(device)はハードウェアデバイスをファイルとして表現するディレクトリです。Linuxの「すべてはファイル」という設計思想を体現した部分です。
- /dev/sda:最初のSATAディスク
- /dev/sda1:そのディスクの第1パーティション
- /dev/null:出力を破棄する特殊デバイス
- /dev/zero:ゼロを出力する特殊デバイス
ディスクデバイスの管理についてはディスク管理ガイドで詳しく解説しています。
実務で押さえるべきディレクトリ操作のポイント
最後に、実務でディレクトリ構造の知識を活かす際のポイントをまとめます。
トラブル時の確認手順
サーバーに問題が発生した際、確認すべきディレクトリの順序を覚えておきましょう。
- /var/log/でエラーログを確認する
- /etc/で設定ファイルの変更内容を確認する
- /proc/でシステムリソースの状態を確認する
- /tmp/や/var/tmp/で一時ファイルの肥大化を確認する
体系的なトラブル対応の手順についてはLinuxトラブルシューティングガイドを参考にしてください。
ディスク容量の管理
ディレクトリ構造を理解していると、ディスク容量の管理も効率的に行えます。
# ディスク使用量の概要
df -h
# ディレクトリ別の使用量を確認
du -sh /var/log/
du -sh /home/
du -sh /tmp/
# 大きなファイルの特定
find /var/log/ -type f -size +100M
パーミッションとの関係
各ディレクトリにはそれぞれ適切なパーミッション(アクセス権限)が設定されています。例えば、/etc/shadow(パスワード情報)は管理者のみが読める設定になっています。ディレクトリの権限設定を誤ると、セキュリティ上のリスクやアプリケーションの動作不良を引き起こす可能性があります。
バックアップ対象の判断
ディレクトリ構造を理解していれば、バックアップの対象を的確に判断できます。
- 必ずバックアップ:/etc(設定)、/home(ユーザーデータ)、/var/www(Webコンテンツ)
- 必要に応じて:/var/log(ログ)、/opt(追加ソフト)
- 不要:/proc、/sys、/dev(仮想ファイルシステム)、/tmp(一時ファイル)
まとめ
Linuxのディレクトリ構造は、FHSという標準規格に基づいた合理的な設計になっています。各ディレクトリの役割を理解しておくことで、サーバー管理やトラブルシューティングの効率が大幅に向上します。
本記事のポイントを振り返ります。
- Linuxは「/」を頂点としたツリー構造で、すべてのファイルがここに属する
- /etcは設定ファイル、/varはログや可変データ、/homeはユーザーデータの格納場所
- /proc、/sys、/devは仮想ファイルシステムでシステム情報をリアルタイムに提供する
- ディレクトリ構造の知識は、トラブル時の原因調査やバックアップ計画に直結する
ディレクトリ構造を理解したら、次はファイル権限(パーミッション)の仕組みを学びましょう。また、日常的なファイル操作のコマンドはLinuxコマンド一覧で確認できます。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS Cost Explorerでコスト可視化|ムダを見つけて月額費用を削減する実践術
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践