Linuxは、世界中のサーバーで使われているオペレーティングシステムです。その柔軟性と安定性は、多くのユーザーを魅了していますが、初心者にとってはそのファイルシステムの構造を理解するのが難しい場合があります。

この記事では、Linuxのディレクトリ構造の基本を初心者の方にも分かりやすく解説します。それぞれのディレクトリの役割、格納されているファイルの種類、Linuxを使い始める上で知っておくべき重要なポイント、そしてディレクトリ構造をカスタマイズする方法などを詳しく説明します。

Linuxディレクトリ構造の概要

Linuxのファイルシステムは、階層構造になっています。これは、会社の組織図のように、最上位にルートディレクトリがあり、その下に様々なディレクトリが階層的に配置されている構造です。それぞれのディレクトリは特定の役割を持ち、関連するファイルや他のディレクトリをまとめて格納しています。

この階層構造は、ファイルシステムを整理し、ファイルを効率的に管理するために設計されています。Windowsのエクスプローラーで表示されるようなツリー構造を思い浮かべていただくと分かりやすいかもしれません。

主要なディレクトリとその役割

Linuxには、非常に多くのディレクトリが存在しますが、その中でも特に重要なディレクトリとその役割を以下の表にまとめます。

ディレクトリ役割格納されているファイルの例
/bin基本的なコマンドls, cd, mkdir, rm など
/bootブートローダーカーネルイメージ、ブートローダーの設定ファイルなど
/devデバイスファイルハードウェアデバイスを表すファイル (例:/dev/sda1 は最初のハードディスクの最初のパーティション)
/etcシステム設定ファイルpasswd, shadow, hosts, ネットワーク設定ファイルなど
/homeユーザーのホームディレクトリユーザーの個人ファイル、設定ファイルなど
/lib共有ライブラリシステム全体で使用するライブラリファイル
/mediaリムーバブルメディアCD-ROM、USBメモリなどのマウントポイント
/mnt一時的なマウントポイントネットワークドライブなど、一時的にマウントするファイルシステム
/optオプションのソフトウェア追加でインストールしたソフトウェアパッケージ
/procプロセス情報実行中のプロセスに関する情報を含む仮想ファイルシステム
/rootrootユーザーのホームディレクトリrootユーザーの個人ファイル、設定ファイルなど
/runランタイムデータシステムの起動時に作成される一時的なファイル
/sbinシステム管理コマンドshutdown, reboot, fdisk など、システム管理者用のコマンド
/srvサービスデータウェブサーバー、FTPサーバーなどのサービスが使用するデータ
/sysシステム情報カーネルパラメータ、デバイス情報など、システムに関する情報を含む仮想ファイルシステム
/tmp一時ファイルアプリケーションが一時的に使用するファイル
/usrユーザー向けのプログラム、ライブラリアプリケーション、ライブラリ、ドキュメントなど
/varログファイル、キャッシュなどシステムログ、メールスプール、キャッシュデータなど

/bin ディレクトリ

/bin ディレクトリには、ls (ファイル一覧を表示する), cd (ディレクトリを変更する), mkdir (ディレクトリを作成する), rm (ファイルを削除する) などの、Linuxシステムで基本的な操作を行うために必要なコマンドが格納されています。これらのコマンドは、すべてのユーザーが使用することができます。 [1] [1]

/boot ディレクトリ

/boot ディレクトリには、Linuxシステムを起動するために必要なファイルが格納されています。主なファイルとしては、カーネルイメージ (vmlinuz) やブートローダーの設定ファイル (grub.cfg) などがあります。

/dev ディレクトリ

/dev ディレクトリには、ハードウェアデバイスを表す特殊なファイルであるデバイスファイルが格納されています。例えば、/dev/sda1 は最初のハードディスクの最初のパーティションを表します。デバイスファイルは、ハードウェアデバイスにアクセスするためのインターフェースを提供します。

/etc ディレクトリ

/etc ディレクトリには、システム全体の設定ファイルが格納されています。例えば、ユーザーアカウント情報 (passwd, shadow)、ネットワーク設定 (hosts, resolv.conf)、システムサービスの設定ファイルなど、Linuxシステムの動作を制御するための重要なファイルが含まれています。

/home ディレクトリ

/home ディレクトリには、各ユーザーのホームディレクトリが格納されています。ユーザーのホームディレクトリは、ユーザーが自分のファイルや設定を保存するためのスペースです。例えば、ドキュメント、画像、音楽、ダウンロードしたファイルなどを保存することができます。

/lib ディレクトリ

/lib ディレクトリには、システム全体で使用する共有ライブラリが格納されています。共有ライブラリは、複数のプログラムで共有して使用されるコードの集まりです。

/media ディレクトリ

/media ディレクトリは、CD-ROM、USBメモリなどのリムーバブルメディアをマウントするためのディレクトリです。リムーバブルメディアを接続すると、自動的に/media ディレクトリ以下の適切な場所にマウントされます。

/mnt ディレクトリ

/mnt ディレクトリは、ネットワークドライブなど、一時的にマウントするファイルシステムのためのディレクトリです。

/opt ディレクトリ

/opt ディレクトリは、追加でインストールしたソフトウェアパッケージを格納するためのディレクトリです。例えば、独自のディレクトリ構造を持つ大規模なアプリケーションをインストールする場合に、/opt ディレクトリ以下にインストールすることが一般的です。

/proc ディレクトリ

/proc ディレクトリは、実行中のプロセスに関する情報を含む仮想ファイルシステムです。/proc ディレクトリ以下のファイルは、カーネルによって動的に生成され、システムの状態をリアルタイムで反映します。

/root ディレクトリ

/root ディレクトリは、rootユーザーのホームディレクトリです。rootユーザーは、システム管理者権限を持つ特別なユーザーです。

/run ディレクトリ

/run ディレクトリは、システムの起動時に作成される一時的なファイルのためのディレクトリです。例えば、プロセスID (PID) ファイルなどが格納されます。

/sbin ディレクトリ

/sbin ディレクトリには、shutdown, reboot, fdisk など、システム管理者用のコマンドが格納されています。これらのコマンドは、システムの起動、シャットダウン、ディスクのパーティション操作など、重要なシステム管理タスクを実行するために使用されます。

/srv ディレクトリ

/srv ディレクトリは、ウェブサーバー、FTPサーバーなどのサービスが使用するデータを格納するためのディレクトリです。

/sys ディレクトリ

/sys ディレクトリは、カーネルパラメータ、デバイス情報など、システムに関する情報を含む仮想ファイルシステムです。/sys ディレクトリ以下のファイルは、カーネルによって動的に生成され、システムのハードウェアとソフトウェアの状態をリアルタイムで反映します。

/tmp ディレクトリ

/tmp ディレクトリは、アプリケーションが一時的に使用するファイルのためのディレクトリです。/tmp ディレクトリの内容は、システムの再起動時に削除されることがあります。

/usr ディレクトリ

/usr ディレクトリには、ユーザー向けのプログラム、ライブラリ、ドキュメントなどが格納されています。例えば、テキストエディタ、ウェブブラウザ、ゲームなどのアプリケーションがインストールされます。また、システムで使用する共有ライブラリもこのディレクトリに格納されています。 /usr/bin には、多くの場合、ゲームやグラフィカルアプリケーションが含まれています。/usr/local は、ローカルにインストールされたソフトウェアに使用されます。

/var ディレクトリ

/var ディレクトリには、システムによって生成される可変ファイルが格納されます。例えば、システムログ、メールスプール、キャッシュデータなどが含まれます。これらのファイルは、システムの運用中にサイズや内容が変化する可能性があります。

ディレクトリ構成を理解する重要性

Linuxのディレクトリ構成を理解することは、以下の点で重要です。

  • コマンドの実行: コマンドがどのディレクトリに格納されているかを知ることで、コマンドを正しく実行することができます。例えば、/bin ディレクトリに格納されている ls コマンドを実行するには、ls と入力するだけで済みますが、/sbin ディレクトリに格納されている fdisk コマンドを実行するには、フルパスで /sbin/fdisk と入力する必要があります。
  • ファイルの管理: ファイルを適切なディレクトリに保存することで、ファイルの整理整頓がしやすくなります。例えば、ダウンロードしたファイルは /home ディレクトリ以下の Downloads ディレクトリに保存し、設定ファイルは /etc ディレクトリに保存することで、ファイルを探しやすくなります。
  • システムのトラブルシューティング: システムログなどの重要なファイルがどこにあるかを知ることで、システムのトラブルシューティングを行う際に役立ちます。例えば、システムエラーが発生した場合、/var/log ディレクトリに格納されているシステムログを調べることで、エラーの原因を特定することができます。
  • システムのカスタマイズ: システム設定ファイルを編集することで、Linuxシステムを自分の好みにカスタマイズすることができます。例えば、/etc ディレクトリにある設定ファイルを編集することで、ネットワーク設定を変更したり、システムサービスの動作を変更したりすることができます。

Filesystem Hierarchy Standard (FHS)

Linuxディストリビューション間でディレクトリ構造にある程度の統一性を持たせるために、Filesystem Hierarchy Standard (FHS) という標準規格が策定されています。FHSは、各ディレクトリの役割を定義することで、ユーザーや開発者が異なるディストリビューションでも同じようにファイルシステムを操作できるようにすることを目的としています。

FHSに準拠することで、ソフトウェアの互換性が高まり、ユーザーは異なるディストリビューション間で簡単に移行することができます。また、開発者はFHSに準拠することで、ソフトウェアを様々なディストリビューションで動作させることができます。

ディレクトリ構成とファイルパーミッション

Linuxでは、各ファイルやディレクトリにアクセス権限が設定されています。アクセス権限は、ファイルの所有者、グループ、その他のユーザーに対して、読み取り、書き込み、実行の許可を与えるかどうかを指定します。

ディレクトリ構造とファイルパーミッションは密接に関連しています。例えば、/etc ディレクトリにはシステム設定ファイルが格納されているため、重要なファイルが誤って変更されないように、ファイルパーミッションが厳しく設定されています。

ディストリビューションによる違い

Linuxディストリビューション (Ubuntu, Fedora, CentOS など) によって、ディレクトリ構成に若干の違いがある場合があります。しかし、FHSによって基本的な構造は標準化されているため、主要なディレクトリの役割はほとんど同じです。

ディストリビューションによる違いは、主に以下の点で見られます。

  • 特定のディストリビューションに固有のディレクトリが存在する場合がある
  • ファイルの配置が若干異なる場合がある

例えば、Ubuntuでは/snap ディレクトリにsnapパッケージが格納されますが、他のディストリビューションには/snap ディレクトリが存在しない場合があります。

ディレクトリ構成のカスタマイズ

Linuxでは、必要に応じてディレクトリ構成をカスタマイズすることができます。例えば、独自のディレクトリを作成してファイルを整理したり、既存のディレクトリにシンボリックリンクを作成してアクセスしやすくしたりすることができます。

新しいディレクトリを作成するには、mkdir コマンドを使用します。例えば、/home/user/documents ディレクトリを作成するには、以下のコマンドを実行します。

mkdir /home/user/documents

シンボリックリンクを作成するには、ln -s コマンドを使用します。例えば、/home/user/documents ディレクトリへのシンボリックリンクを /home/user/docs という名前で作成するには、以下のコマンドを実行します。

ln -s /home/user/documents /home/user/docs

ディレクトリ構成をカスタマイズする際には、以下の点に注意する必要があります。

  • 重要なシステムファイルを誤って削除したり変更したりしないように注意する
  • 他のユーザーが使用するディレクトリを変更する場合は、事前に通知する
  • カスタマイズした内容を記録しておく

ディレクトリの使い方 (Howto)

ここでは、Linuxのディレクトリをどのように使うか、具体的な例を挙げて説明します。

  • /home ディレクトリへのアクセス: /home ディレクトリは、ユーザーの個人ファイルや設定ファイルを保存するためのディレクトリです。自分のホームディレクトリにアクセスするには、cd コマンドを使用します。例えば、ユーザー名が user の場合、cd コマンドを実行すると /home/user ディレクトリに移動します。
  • /etc ディレクトリの設定ファイルの確認: /etc ディレクトリには、システム全体の設定ファイルが格納されています。例えば、ネットワーク設定ファイル /etc/resolv.conf を確認するには、cat /etc/resolv.conf コマンドを実行します。
  • /bin ディレクトリのコマンドの実行: /bin ディレクトリには、基本的なコマンドが格納されています。例えば、ファイル一覧を表示する ls コマンドを実行するには、ls と入力します。
  • /tmp ディレクトリの一時ファイルの利用: /tmp ディレクトリは、アプリケーションが一時的に使用するファイルのためのディレクトリです。例えば、テキストエディタでファイルを編集する際に、一時ファイルが /tmp ディレクトリに作成されます。

さらに深く学ぶためのリソース

Linuxのディレクトリ構造について、さらに深く学びたい場合は、以下のリソースが役立ちます。

  • 書籍:
    • Linuxファイルシステム階層標準 (FHS)
    • 入門Linux
    • Linuxシステム管理
  • オンラインコース:
    • Linux Academy
    • Udemy
    • Coursera
  • ウェブサイト:
    • Linux Documentation Project
    • The Linux Foundation

まとめ

この記事では、Linuxのディレクトリ構造について、初心者の方にも理解しやすいように解説しました。主要なディレクトリとその役割、FHSの重要性、ディレクトリ構成とファイルパーミッションの関係、ディストリビューションによる違い、ディレクトリ構成のカスタマイズ方法、そしてディレクトリの使用方法などを説明しました。

Linuxのディレクトリ構造は、一見複雑に見えますが、その背後には明確な設計思想があります。それぞれのディレクトリは特定の目的を持ち、関連するファイルをまとめて格納することで、ファイルシステムの整理整頓と効率的な管理を実現しています。

Linuxを学び始めたばかりの方は、この記事で紹介した主要なディレクトリから理解を深めていくことをおすすめします。ディレクトリ構造を理解することで、Linuxシステムをより効果的に利用することができます。