9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linux のディレクトリ構造

Last updated at Posted at 2020-10-25

#はじめに
Linuxのディレクトリ構造はFHS(Filesystem Hierarchy Standard)という規格にしたがってつくられており、歴史があるものらしいので自分なりに調べてみました。
詳しく知りたいよという人はこちらを参照ください。
Filesystem Hierarchy Standard

#基本編
現在のFHS(FHS 3.0)で規定された、ルートディレクトリ直下のディレクトリで必須とされているものは、「/bin」「/boot」「/dev」「/etc」「/lib」「/media」「/mnt」「/opt」「/run」「/sbin」「/srv」「/tmp」「/usr」「/var」の14個です(「/home」「/root」についてはオプションとして規定)。

ディレクトリ 役割
/ ルートディレクトリ。ここが階層の起点。
/bin シングルユーザーモードでシステムの起動や修理を行う際に必要な実行形式ファイルが含まれる。例えば、cat、cp、ls、more、tarなどの実行ファイル。
/boot Linuxのカーネルやブートマネージャーなどが含まれる。 このディレクトリにはブートプロセスの間に必要なファイルだけが置かれる。
/dev 物理デバイスを参照しているコンピューターに接続されたデバイス(マウスやキーボード、ディスク等)のスペシャルファイルやデバイスファイルの置き場所。
/etc ほとんどのシステム設定ファイルが入っているディレクトリ。また、サブディレクトリの/etc/rc.dには初期化スクリプトが入っている。
/lib システムの起動時に必要な共有ライブラリや、 ルートファイルシステムでコマンドを実行するのに必要な共有ライブラリがおかれる場所。
/media CD-ROMやフロッピーディスクなどの外付けメディア用のマウントポイント。
/mnt 一時的にマウントされるファイルシステムのマウントポイント。
/opt アドオンパッケージの静的なファイルが置かれる。
/run 実行中のプロセスに関連するデータが置かれる。
/sbin /bin と同様に、 このディレクトリにはシステムの起動に必要なコマンドが含まれる。 ただしここには、一般ユーザーは通常実行しないコマンドが置かれる。
/srv 定期的なジョブによって、またはシステム起動時に、 無条件に削除して構わない一時的なファイルが置かれる。
/tmp 定期的なジョブによって、またはシステム起動時に、 無条件に削除して構わない一時的なファイルが置かれる。
/usr ユーザが独自にインストールするファイル類がおかれる。ルート直下と同様の構造が作成されている。
/var スプールファイルやログファイルのような、 サイズが変化するファイルが置かれる。

実際に以下のコマンドをUbuntuでたたいてみると下のようなディレクトリ構造が表示される。

tree -d -L 2

image.png

#発展編
ここではルートディレクトリ直下のディレクトリ(オプション含む)について詳しく解説する。
###/bin:必須のユーザーコマンドバイナリを置いている
システム管理者とユーザーの両方が使用できるコマンドが含まれる。
他のファイルシステムがマウントされていない場合(シングルユーザーモードなど)に必要。また、スクリプトによって間接的に使用されるコマンドが含まれる場合もある。

コマンドがうまく動かなくなったりするので、サブディレクトリを作ってはいけない。

以下のコマンドを保存している。

コマンド 説明
cat ファイルを標準出力に連結するユーティリティ
chgrp ファイルグループの所有権を変更するユーティリティ
chmod ファイルのアクセス許可を変更するユーティリティ
chown ファイルの所有者とグループを変更するユーティリティ
cp ファイルとディレクトリをコピーするユーティリティ
date システムデータと時刻を印刷または設定するユーティリティ
dd ファイルを変換してコピーするユーティリティ
df ファイルシステムのディスク容量使用量を報告するユーティリティ
dmesg カーネルメッセージバッファを印刷または制御するユーティリティ
echo テキスト行を表示するユーティリティ
false 偽。何もしないユーティリティ
hostname システムのホスト名を表示または設定するユーティリティ
kill プロセスに停止のシグナルを送信するユーティリティ
ln ファイル間のリンクを作成するユーティリティ
login システムでセッションを開始するユーティリティ
ls ディレクトリの内容を一覧表示するユーティリティ
mkdir ディレクトリを作成するユーティリティ
mknod ブロックまたは文字の特殊ファイルを作成するユーティリティ
more テキストをページングするユーティリティ
mount ファイルシステムをマウントするユーティリティ
mv ファイルを移動/名前変更するユーティリティ
ps プロセスステータスを報告するユーティリティ
pwd 現在の作業ディレクトリの名前を出力するユーティリティ
rm ファイルまたはディレクトリを削除するユーティリティ
rmdir 空のディレクトリを削除するユーティリティ
sed 「sed」ストリームエディタ
sh POSIX互換のコマンドシェル
stty 端末回線設定を変更および印刷するユーティリティ
su ユーザーIDを変更するユーティリティ
sync ファイルシステムバッファをフラッシュするユーティリティ
true 真。何もしないユーティリティ
umount ファイルシステムをアンマウントするユーティリティ
uname システム情報を印刷するユーティリティ

###/boot:ブートローダーの静的ファイルを置いている
起動時に不要な設定ファイルとマップインストーラを除いて、起動プロセスに必要なすべてが置いてある。したがってカーネルがユーザーモードプログラムの実行を開始する前に使用されるデータも格納されており、保存されたマスターブートセクターとセクターマップファイルが含まれる場合がある。

ブートローダーがファイルを起動できるようにするために必要なプログラムは、/sbinに配置されている。また起動時に不要なブートローダーの構成ファイルは、/etcに配置されている。

###/dev:デバイスファイルを置いている
特に深掘りすることなし。

###/etc:ホスト固有のシステム構成ファイルを置いている
システム構成ファイルは、プログラムの動作を制御するために使用されるローカルファイル。静的である必要があり、実行可能なバイナリにすることはできない。
ちなみに/etcにシステム構成ファイルを置く場合は直下ではなく 、サブディレクトリに保存するのが普通。

/etc対応するサブシステムがインストールされている場合は以下のようなディレクトリが作られ、中に設定ファイルが保存される。(またはディレクトリへのシンボリックリンクがある。)

ディレクトリ 説明
/etc/opt Cシェルログイン用のシステム全体の初期化ファイル
/etc/X11 NFSファイルシステムのアクセス制御リスト
/etc/sgml ファイルシステムに関する静的情報
/etc/xml XML の設定ファイル群が置かれるディレクトリ

また/etc対応するサブシステムがインストールされている場合は、次のファイルが/etcに保存される。(またはディレクトリへのシンボリックリンクがある。)

ファイル 説明
csh.login Cシェルログイン用のシステム全体の初期化ファイル
exports NFSファイルシステムのアクセス制御リスト
fstab ファイルシステムに関する静的情報
ftpusers FTPデーモンのユーザーアクセス制御リスト
gateways ルーティングされたゲートウェイをリストするファイル
gettydefs gettyが使用する速度と端末の設定
group ユーザーグループファイル
host.conf リゾルバー構成ファイル
hosts ホスト名に関する静的情報
hosts.allow TCPラッパーのホストアクセスファイル
hosts.deny TCPラッパーのホストアクセスファイル
hosts.equiv rlogin、rsh、rcpの信頼できるホストのリスト
hosts.lpd lpdの信頼できるホストのリスト
inetd.conf inetdの構成ファイル
inittab initの構成ファイル
issue ログイン前のメッセージと識別ファイル
ld.so.conf 共有ライブラリを検索するための追加ディレクトリのリスト
motd その日のファイルのログイン後のメッセージ
mtab ファイルシステムに関する動的情報
mtools.conf mtoolsの構成ファイル
networks ネットワーク名に関する静的情報
passwd パスワードファイル
printcap lpdプリンター機能データベース
profile shシェルログイン用のシステム全体の初期化ファイル
protocols IPプロトコルリスト
resolv.conf リゾルバー構成ファイル
rpc RPCプロトコルリスト
securetty rootログインのTTYアクセス制御
services ネットワークサービスのポート名
shells 有効なログインシェルのパス名
syslog.conf syslogdの構成ファイル

###/home:ユーザーのホームディレクトリ(オプション)
特に深掘りすることなし。

###/lib:必須の共有ライブラリとカーネルモジュールを置いている
システムを起動し、ルートファイルシステムでコマンドを実行するのに必要な共有ライブラリが置かれている。
以下のようなファイルが置かれる。

ファイル 説明
libc.so.* 動的にリンクされたCライブラリ
ld* 実行時リンカー/ローダー

/lib対応するサブシステムがインストールされている場合は、以下のようなディレクトリが作られ、中にモジュールが保存される。(またはディレクトリへのシンボリックリンクがある。)

ディレクトリ 説明
modules ロード可能なカーネルモジュール

###/media:リムーバブルメディアのマウントポイント
フロッピーディスク、CD-ROM、zipディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリが置かれている。

/media対応するサブシステムがインストールされている場合は、以下のようなディレクトリが作られ、中にモジュールが保存される。(またはディレクトリへのシンボリックリンクがある。)

ディレクトリ 説明
floppy フロッピードライブ
cdrom CD-ROMドライブ
cdrecorder CDライター
zip Zipドライブ
iso isoドライブ

###/mnt:一時的にマウントされたファイルシステムのマウントポイント
特に深掘りすることなし。

###/opt:アドオンアプリケーションソフトウェアパッケージを置いている
アドオンアプリケーションソフトウェアパッケージのインストール用に予約されているディレクトリ。
ディレクトリの構成は/opt/bin、/opt/docm、/opt/include、 /opt/info、/opt/lib、および /opt/man。

ユーザーが呼び出すプログラムは、ディレクトリ/opt//binまたは/opt/階層の下に配置する必要がある。
(パッケージにUNIXマニュアルページが含まれている場合は/opt//share/man、/opt/階層内または階層の下に配置すおよび/usr/share/man以下のディレクトリ構造と同じ下部構造にする必要がある。)
またホスト固有の構成ファイルを/etc/optにインストールする必要がある。

可変(通常の操作での変更)のパッケージファイルは、/var/optにインストールする。

###/proc:バーチャルファイルシステム用の特別なディレクトリ
特に深掘りすることなし。

###/root:rootユーザーのホームディレクトリ(オプション)
特に深掘りすることなし。

###/run:実行時変数データを置いている
起動後のシステムを説明するシステム情報データが含まれている。このディレクトリの下のファイルは、起動プロセスの開始時にクリア(必要に応じて削除または切り捨て)される。

###/sbin:システムバイナリファイルを置いている
システム管理に使用されるバイナリに加えて、システムの起動、復元、回復、および/または修復に不可欠なバイナリが置かれている。

コマンドがうまく動かなくなったりするので、サブディレクトリを作ってはいけない。

以下のコマンドを保存している。

コマンド 説明
fastboot ディスクをチェックせずにシステムを再起動します
fasthalt ディスクをチェックせずにシステムを停止します
fdisk パーティションテーブルマニピュレータ
fsck ファイルシステムのチェックと修復ユーティリティ
fsck.* 特定のファイルシステムのファイルシステムチェックおよび修復ユーティリティ
getty ゲッティプログラム
halt システムを停止するコマンド
ifconfig ネットワークインターフェイスの構成
init 初期プロセス
mkfs ファイルシステムを構築するコマンド
mkfs.* 特定のファイルシステムを構築するコマンド
mkswap スワップ領域を設定するコマンド
reboot システムを再起動するコマンド
route IPルーティングテーブルユーティリティ
swapon ページングとスワッピングを有効にする
swapoff ページングとスワッピングを無効にする
update ファイルシステムバッファを定期的にフラッシュするデーモン

###/srv:このシステムが提供するサービスのデータを置いている
HTTP、FTPなどのサービス用のデータが入っているディレクトリ。

###/sys:デバイスの情報を置いている
特に深掘りすることなし。

###/tmp:一時ファイルを置いている
一時ファイルを必要とするプログラムのために利用できるように提供されているディレクトリ。

###/usr:大部分のマルチユーザ(全ユーザのための)ユーティリティとアプリケーションを置いている
X Window Systemなどの多くのブログラムがサブディレクトリに格納されている。

ホスト固有の情報や時間の経過に伴い変化する情報は他の場所に保存される(前者は /etc、後者は /var の下)。

以下のようなディレクトリがある。

ディレクトリ 説明
/usr X Window Systemなどの多くのブログラムがサブディレクトリに格納されている。
/usr/bin Linuxオペレーティングシステムのコア以外の多くの実行ファイルを置いている。
/usr/include CやC++などのヘッダーファイルを置いている。
/usr/lib /usr/bin/ や /usr/sbin/ にある実行ファイルの基本となるライブラリ (library) 群(CやC++などのライブラリファイル)を置いている。
/usr/sbin 基本的でないシステム実行ファイル群(管理用コマンド)を置いている。例えば、各種ネットワークサービス用デーモンなど。
/usr/share デフォルト設定ファイル、イメージ、ドキュメントなどの共有ファイルを置いている。
/usr/src Linuxカーネルのソースコードを置いている。例えば、カーネルのソースコードとそのヘッダファイル群など。
/usr/X11R6 X Window System, Version 11 Release 6のアプリケーションが置いてある。
/usr/local /usrディレクトリと似ていてローカルファイルを置いている。

###/var :ログ、メール、プリントスプールなどのいろいろなシステムファイルを置いている

以下のようなディレクトリがある。

ディレクトリ 説明
/var ログ、メール、プリントスプールなどのいろいろなシステムファイルが格納されている。
/var/cache アプリケーションのキャッシュデータを置いている。
/var/lib アプリケーションのステータスに関する情報を置いている。
/var/lock 二重起動などをチェックするロックファイルを置いている。
/var/log ログファイルを置いている。
/var/mail ユーザの電子メールデータを置いている。
/var/opt /optdhディレクトリにあるパッケージのデータを置いている。
/var/run 起動してからのシステムデータを置いてある。
/var/spool プロセス待機中のデータを置いている。
/var/tmp システムリブート用の一時ファイルを置いている。

#参考にした、参考になるサイト

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?