Loading news. please wait...
はじめてのCentOS

 

centoslogo-mini.png  CentOS 5 系のディレクトリ構造とファイル

Loading news. please wait...
2008年7月14日(月)

CentOS5.x 系 のディレクトリ構造とファイル

CentOS5系のディレクトリーを見ていると、何がなんだか分からなくなる事があります。 自分の頭の脳みそがいかに軽いかを痛感しながら、これはまとめておかないと大変と、あわてて虎の巻を作ってみました。 あくまでも自分のためのものですので、言葉が足らない部分も多々あるかと思いますがご容赦願います。


Filesystem Hierarchy Standard

CentOS5( Red Hat Enterprise Linux 5)は、Filesystem Hierarchy Standard を順守する方向へ向かっているようですがまだ、完全ではありません。現在はそれを整えつつある段階のようです。

以下の表は Filesystem Hierarchy Standard の基本的なディレクトリ一覧です。
この Filesystem Hierarchy Standard に一番忠実なLinux ディストリビューションは 2008年7月現在の段階では Debian GNU/Linux だろうと思っています。

ディレクトリ名
読み
内 容
 bin  ビン  基本的なコマンドバイナリ
 boot  ブート  ブートローダのスタティックなファイル
 dev  デブ  デバイスファイルなどを格納
 etc  エトセ  ホスト固有のシステム設定
 home  ホーム  ユーザのホームディレクトリ
 lib  リブ  基本的な共有ライブラリとカーネルモジュール
 media  メディア  取替え可能なメディア用のマウントポイントを含む
 mnt  マウント  ファイルシステムを一時的にマウントするためのポイント
 proc  プロセス/プロック  システム情報を含む仮想ディレクトリ (2.4 および 2.6 カーネル)
 root  ルート  root ユーザのホームディレクトリ
 sbin  エスビン  基本的なシステムバイナリ
 sys  シス  システム情報を含む仮想ディレクトリ (2.6 カーネル)
 tmp  テンプ  一時ファイル用
 usr  ユーザ  ユーザの後から追加したプログラムなどを置くユーザ用の場所
 var  バー  変動するデータを置く場所
 srv  サーブ/サービス  システムによって割り当てられた、サービスのためのデータ
 opt  オプト  アドオンアプリケーションソフトウェアパッケージ

 

上記の表は Debian GNU/Linux インストールガイド C.2.ディレクトリツリー を参照させていただきました。

tree コマンド

tree コマンドを使用してディレクトリを見てみました。
例えば bin/ のディレクトリの中を tree コマンドで表示する時には、端末で以下のように入力します。


# tree /bin 



でも、これだと端末の中に表示されるだけで利用の方法がありません。以下のように入力して、テキストファイルとして抽出してみます。


# tree /bin >sample_bin.txt


上の簡単な説明をします。
tree /bin は、bin ディレクトリー下を tree 表示せよ、との指定です。
>sample_bin.txt とは、sample_bin.txt と言う名前でテキストファイルにせよ、との指定です。
この時に特別にテキストファイルを置く場所を指定しなければ、自分のホーム直下に置かれます。もしくは自分の現在いる場所に。くれぐれも自分は今どこにいて操作をしているのかを確認した上で操作してください。確認するには pwd コマンドを使うと即座に答えを返してくれます。
もちろん、sample_bin と言うファイル名は好きにつけます。
注意しなければならないのはシステムが使っているコマンド名やディレクトリ名、デーモンネーム、ファイル名、これらと重ならないようなファイル名をつけることです。



tree / >tree.txt なんてやらないでくださいね。えんえんと 25448 のディレクトリと 253815 個のファイル名がつらなり、テキスト総量が 11600KB 前後になります。(このファイルの数やテキストの量などは、あくまでも私のマシンでの環境においてです。)

CentOS release 5.2 のディレクトリ

以下の画像は私のマシンの CentOS release 5.2 ( Final ) / Kernel 2.6.18-92.1.6. e15 on an i686 のディレクトリです。


images/file_browser.png


以下簡単な説明です。


 bin システム管理者・一般ユーザ共に使用するコマンド群が保存されています。
備考: bin とは binary の bin です。
/usr/bin などにもユーザが使用するコマンドが保存してあります。
デフォルトではここに path が通っていますので、ここに置かれると端末で入力するだけで起動したり、コマンドが実行できたりします。注意する必要があるのは、/bin 配下にサブディレクトリがあってはいけないということと、 root ユーザ、一般ユーザでは path が違うということ(仮に path が正しくついていても、パーミッションではねられてしまい実行できないものもありますから)。
cat , chgrp , chmod , chown , cp , date , dd , df , dmesg , echo , false , hostname , kill , ln , mkdir , mknod , mount , mv , ps , pwd , rm , rmdir , sed , sh , stty , su , sync , umount , uname などのコマンドやシンボリックリンクは必要なものです。


 boot システム起動時に必要なファイルとカーネルの本体などが保存されています。
備考: boot は bootstrap 、 boot loader の boot です。


 dev デバイスファイルを保存
備考:dev は device の dev です。
デバイスファイルは、ハード・ディスクなどの周辺装置(デバイス)を制御する際に用いられる特別なファイルであり、デバイス番号などのごく少数のデータだけを保持します。 システムが正しく機能するためには、これらのファイルが不可欠です。


 dump 特殊目的ディレクトリ(通常のLinux ファイルシステムにはない)
備考:カーネルがクラッシュした時に掃きだすログを取るためにカスタマイズしたディレクトリです。特殊目的のディレクトリなので通常のLinux ファイルシステムにはないと思います。
(我が家のおバカな亭主の趣味で、いつの間にか作られてしまいました)。


 etc システム、OS、デーモンなどの設定ファイルを置くディレクトリ
備考: etc は etcetera の etc です。
ここにはバイナリファイルを置いてはいけないことになっています。
opt , X11 , sgml , XML などのディレクトリ、あるいはディレクトリへのシンボリック・リンクが必要だとされています。


 home 各ユーザのホーム(基点となる)ディレクトリ
備考:一般ユーザの管理できるディレクトリが、各ユーザ名でここへ作成されます。
例: デフォルトでは、home/ユーザ の下には bin ディレクトリはありませんが、ここへ自分で bin ディレクトリを作ると自動的に path が通り、中へ入れたプログラムとかコマンドを実行する事ができるようになったりします。

各ユーザが用いるアプリケーションがそれぞれ固有の設定ファイルを持つ場合、各ユーザのホームディレクトリ内に . (ドット)で始まるファイル名を用いる事が多いようです(アプリケーションがサブディレクトリを必要とする場合も同様に . (ドット)で始まるディレクトリ名を用いたりします)。サブディレクトリ内で設定ファイルを置く場合は . を用いないほうが良いかもしれません。


 lib 重要な共有ライブラリとカーネルモジュールを置くディレクトリ
備考:lib は library の lib です。
共有できる汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたプログラムの事をライブラリといい、glibc などは代表的なライブラリの集合体です。
ルートファイルシステム上でシステムを起動したり /bin や /sbin のコマンドを実行させる際に必要となる重要な共有ライブラリをここに置いてあります。これらの 共有ライブラリイメージは、特にシステムをブートしたりルートファイルシステム内でコマンドを実行する場合に重要です。

libc.so.* , ld* 最低でもこの2種類のファイル名のパターンが必要とされます(ファイルもしくはシンボリック・リンク)。また、対応するサブシステムがインストールされる場合、/lib 以下に modules ディレクトリ、あるいはディレクトリへのシンボリック・リンクが必要とされます。


 lost+found FSCK 用のディレクトリ
備考:ファイルシステムがクラッシュした時に FSCK というプログラムが動いて、その時に壊れたファイルを修復します。その修復したファイルに通し番号をつけて、修復後に置いておく場所です。


 media リムーバブルディスク用マウントポイント
備考:リムーバブルディスクとは、 FD / CD / DVD / ZIP / その他の書き換え可能な記録媒体などを指します。


 misc どのディレクトリにも分類しづらいファイルを置くディレクトリ
備考:misc は miscellaneous の短縮形です。意味はその他、その他もろもろ・・・。名前の通りのディレクトリです。


 mnt ファイルシステム用マウントポイント
備考:mnt は mount の mnt です。
このディレクトリは一般的にシステムのブート後に マウントされるファイルシステム用のマウントポイントを含んでいます。システム管理者が必要なときに一時的にファイルシステムをマウントできるように用いるディレクトリです。インストールしなければ使うことができないようなプログラムをここに置いてはならないことになっています。また、動作中のどのようなプログラムに対しても影響を与えてはいけないこととされています。


 opt 追加アプリケーションのソフトウェア・パッケージなどのためのディレクトリ
備考: opt は option の opt です。
通常 /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, /opt/man の各ディレクトリはローカルのシステム管理者が使用するために予約されているディレクトリ名とされています。
インストールするパッケージは /opt 配下にパッケージ自身の名前を package とするか provider というディレクトリ名で配置するのがひとつの決まりごとになっているようなところがあります。例えば、OpenOffice などは、デフォルトでここへ入ります。

※ package はソフトウェア・パッケージを指し示す名前のことで、provider は LANANA ( Linux Assigned Name And Number Authority - http://www.lanana.org/ ) に登録してある提供者名です。


 proc カーネルとプロセス情報などの仮想ファイルシステム
備考: proc は process の proc です。
カーネルとの間で情報をやりとりするための特別なファイルが含まれています。 記録装置の情報やカーネル情報、メモリ情報と同様、プロセスの情報を得るために /proc 内ではさまざまなデータが用意されており、このディレクトリを使用して カーネルと通信する方法は数多くあります。 詳細はこちら


 root root( スーパーユーザ ) のホームディレクトリ
備考:root ユーザとは特別な管理権限を持つユーザのことでスーパーユーザとも云われます。


 sbin システムの起動、回復、修復に必要となる実行ファイルが置かれているディレクトリ
備考:システム管理者が用いるユーティリティ(root しか実行できないコマンドも含む)は /sbin, /usr/sbin, /usr/local/sbin に配置されています。一般ユーザが利用するコマンドは /sbin に置くべきではありません。
例1. chfn といったファイルはユーザが時折使うため /usr/bin に置きます。
例2. ping コマンドは root ユーザが(ネットワークの回復と診断に)用いますが、一般ユーザも使うことがあるので /bin に置かれたりします。


 selinux selinux 用のディレクトリ
備考:selinux というのはシステムコールを監査するプログラムです。


 srv FTP や www 、cvs などのデータファイルの置き場所
備考:現在は使われていませんが、将来の予約ディレクトリ(FHSのため)となっています。もしかしたら、/var/www 以下のディレクトリがここに移動してくるかもしれません。


 sys 2.6 カーネル特有の新しい sysfs仮想ファイルシステムを活用
備考:/sys ディレク トリには、/proc に保存されているような情報をもっていますが、 ホットプラグデバイスに関してデバイス情報を表示します。


 tmp 一時的なファイルを必要とするプログラムのために提供される場所
備考: tmp は temporary の tmp です。
他のプログラムは ここでディレクトリやファイルが存在し続ける事を想定してはいけません。


 usr サイト全体にわたって共有することのできるファイルのためのディレクトリ
備考:ここはファイルシステムの中でも上位に入る重要な領域です。大きなソフトウェア・パッケージは /usr 配下にサブディレクトリを作成すべきではありません。

※ /usr 下に必要なディレクトリはこちら3.2.1.12. /usr/ディレクトリを参照のこと。


 var 値が常に変動しているファイルのためのディレクトリ
備考:ここには、可変的なデータファイルが置かれます。
データにはスプールディレクトリやファイル、管理用のログデータ、短期、一時利用のファイルなどが含まれます。
システムの拡張が必要な場合などごく限られた時意外、アプリケーションは /var ディレクトリの直下にディレクトリを作成してはいけないとされています。
/var ディレクトリは /usr ディレクトリを読み込み専用(read-only)にして利用するための場所です。
システムの操作(インストールやソフトウェアのメンテナンスは除きます)では /usr ディレクトリにデータは書き込ませないようにし、/var ディレクトリへ書き込むようにするのが標準です。

RedHat 系のディストリビューションでは Apache のドキュメントルートのデフォルトが /var/www/html になっています。

/var/log、/var/lock、/var/run などは他のシステムと共有されてはならないものですが、反対に /var/mail、/var/cache/man、/var/cache/fonts、/var/spool/new といった一部のディレクトリは共有されることもあります。

※ /var のサブディレクトリとする必要のあるディレクトリ群はこちらの3.2.1.14. /var/ディレクトリを参照のこと。


 .automount マウントデーモンが使用
備考:これはautofs を動かした時だけできるディレクトリで、動かさなければ作られません。