# 第二章 ファイル・ディレクトリの操作と管理
練習問題2.8
すべてのユーザーが利用できるユーティリティコマンドを作成しました。そのコマンドの実行ファイルを配置するのが最も適切と考えられるディレクトリを選択してください。
A. /bin
B. /sbin
C. /usr/local/bin
D. /usr/local/sbin
E. /home
(解答)C
(解説)
ディストリビューション標準ではないプログラムやおくじに作成した実行ファイルなどは/usr/localディレクトリ以下に配置するのが一般的です。/binや/sbin以下に配置するコマンドはFHSで定められています。従って、選択肢AとBは不正解です。すべてのユーザー向けの実行ファイルを/home以下に配置することはないので、選択肢Eは不正解です。
典型的なファイルとディレクトリの位置
linuxにおけるファイルシステム内のレイアウトは、FHSとして標準化が進められています。
ルートファイルシステムはlinuxのディレクトリ改装の中で最上位に位置します。ルートファイルシステムに含まれなければならないディレクトリは、/bin, /sbin, /etc, /dev, /libです。
- /bin
基本的なコマンドが配置されます。このディレクトリにあるコマンドは、一般ユーザーでも実行可能です。 - /sbin
システム管理に必須のコマンドが配置されます。このディレクトリにあるコマンドは、rootユーザーのみ実行可能です。 - /etc
システムやアプリケーションの設定情報、スクリプトファイルなどが配置されます。 - /dev
ハードディスクやDVDーROMなどのデバイスファイルが配置されます。デバイスファイルは特殊ファイルであり、デバイスに応じたデバイスファイルが必要です。 - /lib
共有ライブラリやカーネルモジュールが配置されます。とりわけ、/bin, /sbinにあるコマンドが必要とするライブラリはここに配置されます。 - /media
DVD-ROMなどのリムーバブルメディアのマウントポイントが配置されます。 - /mnt
一時的にマウントするファイルシステムのマウントポイントが配置されます。 - /opt
パッケージ管理の仕組みを使ってプログラムがインストールされるディレクトリです。ディストリビューションによって配置されません。 - /proc
カーネル内部の情報にアクセスするための仮想的なファイルシステムです。つまり、このディレクトリ内のファイルはファイルのように見えるだけで、実際にはディスク上に存在しません。 - /root
rootユーザーのホームディレクトリです。/homeファイルシステムがマウントできなくなった婆でも、システムのメンテナンスを行うことができるよう、/homeとはbつになっています。FHSではオプション扱いとなっています。 - /boot
軌道に必要な設定やカーネルイメージが配置されます。起動時にBIOSの制限を受けないようにするため、ルートファイルとは別に、ディスクの先頭付近に配置されることがあります。 - /home
ユーザーごとのホームディレクトリがおかれます。独立したファイルシステムにすることにより、クォータを設定することができたり、保守性を向上させたりできます。FHSではオプション扱いとなっています。 - /tmp
一時ファイルがおかれます。すべてのユーザーが読み書き可能です。 - /var
ログファイル、メールやプリンタのスプールなど、頻繁に書き換えられるファイルが配置されます。/varディレクトリの下はさらに細分化されており、次のようなディレクトリがあります。
- /var/cache
manコマンドで表示するために整形したデータなあど、一時的なキャッシュファイルが配置されます。 - /var/lock
アプリケーションが排他制御に使うためのロックファイルが配置されます。 - /var/log
ログファイルが書き出されます。システムのログファイルmessages、メールシステムのログファイルmaillog(mail.log)などがあります。 - /var/run
システムの状態を示すファイルが配置されます。 - /var/spool
印刷待ちのデータ(/var/spool/lpd)や予約されたジョブ(/var/spool/at)など、処理待ちのデータが配置されます。
- /usr
コマンドやユーティリティなどが配置されます。/userディレクトリの下はさらに細分化されており、次のようなディレクトリがあります。
- /usr/bin
ユーザーが一般的に使うコマンドで、緊急時のシステム保守に必須ではないコマンドはここに配置されます。 - /usr/sbin
システム管理コマンドで緊急時のシステム保守に必須ではないコマンドがここに配置されます。 - /usr/lib
プログラムに必要な共有ライブラリが配置されます。 - /usr/local
ローカルシステムで必要とされるコマンドやライブラリ、ドキュメントなどが配置されます。このディレクトリ内は、さらにbin, sbin, libなどのディレクトリに細分化されます。 - /usr/share
x86やx86-64といったシステムアーキテクチャに依存しないファイルが配置されます。例えば、/usr/share/manにはmanコマンドで使うマニュアルが配置されます。 - /usr/src
linuxのカーネルソースなど、ソースコードが配置されます。
(わからない単語解説)
- FHS
linuxやUNIX系のオペレーティングシステムにおけるファイルシステムの階層構造の標準仕様です。FHSに準拠することで、ソフトウェアの移植性や管理の容易性が向上し、ユーザーはファイルやディレクトリの場所を予測しやすくなります。