Linuxのディレクトリ構造をまとめました。Linuxの構成は以下の画像のようになっています。(rootディレクトリ)があり、その配下に複数のディレクトリが格納されます。

アルファベット順にそれぞれのディレクトリの役割をまとめました。
RHEL9.4では以下の画像のようなフォルダ構成になっています。

そもそもLinuxのファイルの場所には規定がある
Linuxのファイル・ディレクトリの場所や名称は、「FHS」という基準があります。FHSは「Filesystem Hierarchy Standard」の頭文字で、日本語で「ファイルシステム・階層・基準」といった意味になります。
以下はLinuC公式サイトの記事の引用です。
「FHS」は、Linux(などのUNIX系OS)の標準的なディレクトリ構成を定めた標準仕様です。たとえば「/etcディレクトリには設定ファイルを置きましょう」など、ディレクトリの名前や構成、ファイルの名前などについての「標準」です。

FHSのドキュメントは以下です。
以下のRed Hat公式ページでもFHSについての詳細が掲載されています。
RHEL9.5では以下のコマンドでFHSのマニュアルを確認できます。
[root@RHEL95 ~]# man 7 file-hierarchy
ディレクトリの移動はcdコマンドで実施する
cdコマンドでファイルパスを指定してディレクトリを移動します。
ファイルパスの先頭に/をつけるとユーザーがどこにいても関係なく指定したファイルパスに移動することができる絶対パスでの指定となり、ファイルパスの先頭に/をつけないとユーザーがいるファイルパスを始点として相対的に移動するファイルパスを指定する相対パスでの移動になります。
一段階上の階層へ移動するにはcd ..コマンドを実行します。
cd ..
cdコマンドにオプションや引数を指定せず実行すると/home/ユーザー名に移動します。rootユーザーの場合は/home/ユーザー名ではなく/rootディレクトリに移動します。
cd
ディレクトリの中に格納されているファイルはlsコマンドで確認する
今参照しているディレクトリに格納されているファイルを参照するにはls(エルエス)コマンドを実行します。
ls
隠しファイルやファイルの詳細も含めて表示するにはオプションにl(エル)とa(エー)を指定してls -laコマンドを実行します。
ls -la
ls コマンドの詳細は以下の記事でまとめています。
ログインしている操作ユーザーが参照しているディレクトリはpwdコマンドで確認する
ログインしているユーザーが参照しているディレクトリの確認は以下のコマンドで実施します。
pwd
ファイルの作成、編集はviエディタで実施する
ファイルの編集はviエディタで行います。例えば/etc/hostsファイルを編集したい場合は以下のコマンドを実行します。
vi /etc/hosts
viエディタの使い方は以下の記事でまとめています。
viコマンドで引数に存在していないファイル名を指定した場合は指定した名前のファイルを新規作成します。例えば、testという名称のファイルを作りたい場合は以下のコマンドでviエディタを立ち上げて、ファイルの中身を記載してコマンドモードで:wqコマンドを実行することで新規ファイルを作成できます。
vi test
/ (ルートディレクトリ)
Linuxの最上ディレクトリ。ルートディレクトリとも呼ばれます。rootユーザーのホームディレクトリ、/rootは後述しますが、別のディレクトリです。
Red Hat Enterprise Linux 9.6での/配下には以下のディレクトリが格納されていました。

bin
binはBinary Folder(バイナリ フォルダー)のことで、OSが正常に動作するために最低限必要な実行ファイルが入っているフォルダ。このディレクトリはすべてのユーザーが使用します。ルートユーザー、一般ユーザーともにアクセス可能です。
また、binフォルダは基本的なコマンドが保存されたディレクトリで、ls、cat、mkdirなどのプログラムが含まれています。
Red Hat Enterprise Linux 9.6 の/binディレクトリ配下をlsコマンドを実行して確認してみると以下のようになります。(かなり多かったので最初の数行のみの表示)
Tera Termでの緑文字は実行が可能なファイルです。

/bin/cd、/bin/catなどのファイルはcdコマンド、catコマンドとして使われています。cdやcatなどの他にも、/binディレクトリ配下に配置したファイルはすべてコマンドとして使用ができます。
/binディレクトリ配下にないファイルをコマンドとして使用するにはexportコマンドで一時的にファイルパスを通すか(環境変数の設定)、.bashrc、もしくは.bash_profileにexport=ファイルパスを記載してコマンドとして実行できるようにします。
環境変数に関する詳細は他の記事で紹介します。
boot
Linuxのシステム起動に必要なファイルが置かれているディレクトリです。RHEL10では、AWSなどのクラウド環境では存在しないディレクトリになりました。
/bootはGRUBに関するファイルが置かれているディレクトリです。

dev
devはdevice(デバイス)のことで、Linuxに接続されているハードウェアに関するファイルが保存されるディレクトリです。 キーボード、マウスなどのデバイスに関する情報をファイルまたはディレクトリの形で/devディレクトリの中へ格納しています。
etc
Linuxのホスト固有のシステム構成(設定)ファイルが格納されるディレクトリ。
ほぼすべての設定に関するデータはここに保存されます。
passwd
Linuxのユーザー情報が格納されているファイルです。
shadow
Linuxのユーザーのパスワード情報が記載されているファイルです。
fstab
OS起動時にマウントされる設定を記載したファイル。/etc/fstab。
mount -aコマンドを実行するか、Linuxを再起動すると/etc/fstabからマウントされている情報を読み込みます。
hosts
名前解決についての情報を記載したファイル。/etc/hosts。
名前解決はIPアドレスと任意の文字列(ホスト名)を突き合せたファイル。
/etc/hostsファイルの編集はviエディタ等で行います。
hostname
/etc/hostnameはLinuxの自身のホスト名を設定しているホスト名が記載されているファイルです。
教科書では、/etc/sysconfig/networkはホスト名の設定を変更するために参照されていますが、ホスト名は現在では/etc/hostnameファイルに記述するようになっています。

設定例は以下です。
[root@RHEL96]# cat /etc/hostname
RHEL96
httpd
/etc/httpdは、Apache HTTP Serverの設定ファイルが格納されているディレクトリです。

rsyslog.conf
/etc/rsyslog.confは、Linuxのログを設定するファイルです。
「rsyslog」はシステムログを記録するためのソフトウェアです。以前広く利用されていた「syslog」の機能強化版でいくつかの機能が強化されていますが、基本的な使い方はほぼ同じです。特徴としては、「複数のマシンのログを1台のマシンに集約する」などといったことが可能である、ログのフィルタリングや主要なデータベースとの連携が可能であるといったことが挙げられます。

home
各ユーザーのホームディレクトリ。useraddコマンドで新しいユーザを生成すると、/homeディレクトリ配下に新しく追加したユーザーのホームディレクトリが自動的に生成される。rootユーザーに関しては、/home配下にはディレクトリが作られず、/root配下がホームディレクトリとなる。
例えば、userA、userBが作られている場合は以下のようなディレクトリが作られる。
/home/userA
/home/userB
rootユーザーについては、/home/rootディレクトリ配下ではなく以下のディレクトリにユーザー情報が格納される。
/root
lib
/bin/と/sbin/にあるバイナリに必要なライブラリが格納されたディレクトリ。カーネル モジュールが格納されている。わかりやすく書き換えると、コマンド実行時に参照するライブラリが格納されたディレクトリ。
/lib/ディレクトリーには、/bin/および/sbin/でバイナリーを実行するために必要なライブラリーのみが含まれている必要があります。これらの共有ライブラリーイメージは、システムを起動し、root ファイルシステム内でコマンドを実行する場合に特に重要です。
media
DVD、CD-ROM、USBなどがマウントされる際に使用されるマウントポイントとして利用されるディレクトリ。
/media/ディレクトリーには、usb ストレージメディア、DVD、CD-ROM、Zip ディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリーが含まれます。
mnt
NFSを使用してマウントする際に使われるディレクトリ。CDやDVDなどをマウントする際は/mediaディレクトリの使用が推奨されます。
/mnt/ディレクトリーは、NFS ファイルシステムのマウントなどの、一時的にマウントされたファイルシステム用に予約されています。すべてのリムーバブルメディアには、/media/ディレクトリーを使用してください。自動的に検出されたリムーバブルメディアは、/mediaディレクトリーにマウントされます。注記
/mntディレクトリーは、インストールプログラムでは使用しないでください。
tmp
システム運用に関連する一時的なデータが保存されるディレクトリ。システムを使用する全てのユーザーが共同で使用する。
/tmpにはデフォルトでスティッキービットが設定されています。/tmp配下のファイルはデフォルトではrootユーザーもしくは、そのファイルの所有者のみが削除できる仕様です。
/tmpのスティッキービットの設定を解除するにはchmod -t /tmpコマンドを実行するなどすれば解除できます。
opt
追加で選択可能なアプリケーションパッケージがインストールされるディレクトリ。/opt配下にインストールされるコマンドは、/opt/sample/binのような形で/opt/sample/配下のバイナリディレクトリに格納される。
たとえば、
sampleが/opt/ディレクトリーにある特定のソフトウェアパッケージの名前である場合、そのファイルはすべて/opt/sample/bin/(バイナリーの場合は/opt/sample/bin/、man ページの場合は /opt/sample/bin/など)に配置されます。
proc
カーネル関連情報が保存されるディレクトリ。
/procディレクトリ配下のファイルはすべて仮想的なファイルで、一時的なカーネルのパラメータが格納されます。
/proc/ディレクトリーには、カーネルから情報を抽出するか、カーネルへの情報送信を行う特別なファイルが含まれます。たとえば、システムメモリー、CPU 情報、ハードウェア設定などが挙げられます。
/procディレクトリは、システムの状態などがファイルとして保管されている特殊なディレクトリで、このディレクトリにあるファイルは、メモリ上に作られる仮想的なファイルです。/procディレクトリ配下にあるファイルは、さまざまなプロセスを動作させる際にたびたび参照されます。

また、/procにあるファイルは普通のファイルではなく、「仮想ファイル」という特殊な形式となっています。lsコマンドで確認してみると、/procにあるファイルはサイズが0になっている上、タイムスタンプもほとんどのファイルで現在時刻になっています。
「/proc」ディレクトリにあるファイルは、システムをコントロールするために使われます。そのため、システムのさまざまな情報がここに格納されており、/procにあるファイルを参照することによって、システムの情報をリアルタイムで得ることができます。

root
rootユーザーのホームディレクトリ。/home配下の各ユーザーディレクトリに配置される以下のファイルのrootユーザー用のファイルが配置される。
- .bash_history
- .bash_logout
- .bash_profile
- .bashrc
- 他
sys
Linuxカーネルに関する情報が保存されているディレクトリ。 再起動するたびに更新される。/procとの違いはホットプラグデバイス(OSをシャットダウンさせずに交換できるHDD、SSDなどのようなデバイスのこと)に関する情報が保持される点。
2.6 カーネルのホットプラグハードウェアデバイスのサポートが増えると、
/sys/ディレクトリーには同様の情報が/proc/に保持されますが、ホットプラグデバイスに関する特定のデバイス情報の階層ビューが表示されます。
usr
全ての ユーザーが使えるアプリをインストールするディレクトリ。
/usr/ディレクトリーは、複数のマシンにまたがって共有できるファイル用です。多くの場合、/usr/ディレクトリーは独自のパーティションにあり、読み取り専用でマウントされます。
RHEL9.6では以下のフォルダ構成になっています。

var
varはVariableの略で、システムの稼働中に生成されるデータを一時的に保存しておくためのディレクトリ。Variableは数学用語で変数を意味します。varには ログファイルやキャッシュ、システムがクラッシュしたときのダンプファイルや、印刷やメールのスプールやデータベースのメタデータなどが格納されます。
/var/log
/var/logディレクトリにはさまざまなログが格納されます。
/var/logディレクトリーの次のログファイルには、syslogメッセージが保存されます。
/var/log/messages– 以下を除くすべてのsyslogメッセージ/var/log/secure– セキュリティーおよび認証に関連するメッセージおよびエラー/var/log/maillog– メールサーバーに関連するメッセージおよびエラー/var/log/cron– 定期的に実行されるタスクに関連するログファイル/var/log/boot.log– システムの起動に関連するログファイル注記
上記のリストには一部のファイルのみが含まれています。
/var/log/ディレクトリー内の実際のファイルリストは、このディレクトリーにログインするサービスとアプリケーションによって異なります。
/var/log/messages
システムのログが記録されます。以下のようにtailコマンドでログを確認します。
tail -n <末尾から数えて表示したい行数を記載> /var/log/messages
例えば、末尾から数えて30行分のログを見たい場合は以下のように実行します。
tail -n 30 /var/log/messages
/var/spool/cron
cron設定を格納しているディレクトリです。ユーザーごとの設定ファイルが格納されます。
/var/www/html
Apache HTTP ServerのDocumentRootに指定されているディレクトリ。このディレクトリ配下に置かれたファイルが、ブラウザからサーバーのIPアドレスにアクセスしたときにトップページとして表示される。以下の設定ファイルにDocumentRootの設定が記載される。
/etc/httpd/conf/httpd.conf
DocumentRootの設定変更は以下のApacheの設定ファイルのDocumentRootディレクトリに対して行う。
[root@RHEL96]# cat /etc/httpd/conf/httpd.conf | grep Document
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/var/www/html"
まとめ
Linuxのディレクトリ構成についてまとめました。ディストリビューションによっても若干差分がありますが、一般的にはLinuxはディレクトリ構成はFHSによって基準が定められているため類似しています。Linuxのディレクトリ構造を覚えることで、Linuxの理解を深めて円滑に業務が進められるようになります。






