
第3回 各ディレクトリの役割を知ろう(サブディレクトリ編)
関野史朗
2001/9/7
巨大な/usrのディレクトリ構造
/usrには、読み出し可能かつ共有可能なファイルを配置します。一般的にいって、ここには多数のファイルが配置され、ディレクトリ構造も複雑になっています。
FHS 2.2におけるサブディレクトリは以下のように定義されています。ここでも、ディレクトリによって「必須」と「オプション」に分かれます。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 図4 /usr以下のサブディレクトリ構造。binやsbin、libなど、他所にもあるディレクトリがあるため始めは混乱させられる | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
X Window Systemがインストールされる/usr/X11R6だけはちょっと特別扱いです。これは歴史的な経緯が絡んでいるためです。また、/usr/spool、/usr/tmp、/usr/spool/locksをそれぞれ/var/spool、/var/tmp、/var/lockに対するシンボリックリンクとして設置することもできます。これは古いシステムとの互換性を確保するためなので、できれば使わない方がいいでしょう。
■/usr/bin
|
|||||||||||||||||||||||||
| 図5 /usr/bin。ここはインストールするプログラムによって内容が異なる | |||||||||||||||||||||||||
/usr/binは、シングルユーザーモードには不要なバイナリファイルを配置するディレクトリで、パッケージの追加や削除によってディレクトリ内のファイルは増減します。この点だけからも、/binと/usr/binでは扱いが違うことが分かるでしょう。なお、複数のバイナリファイルで構成されているアプリケーションの場合は、さらにサブディレクトリを作成します。例を挙げると、mhやperl、python、tcl、wishなどです。
■/usr/local
|
|||||||||||||||||||||||||||||||||||||||||
| 図6 管理者が自由に使える/usr/local。上記のサブディレクトリは「必須」に指定されている | |||||||||||||||||||||||||||||||||||||||||
/usr/local以下は、システム管理者が自分でアプリケーションをインストールする場所として利用します。ここは、システム関連のソフトウェアをアップデートしても変更されないようになっています。サブディレクトリはbin、games、include、lib、man、sbin、share、srcが必須です。各サブディレクトリの用途は、/usrや/にある同名のディレクトリに準じます。
■/usr/sbin
/usr/sbinは、比較的重要でないシステムバイナリを配置します。「比較的」というのは/sbinと比べた場合です。/sbinには緊急時に必要なプログラム、/usr/sbinは通常運用時に使うプログラム、のように使い分けられています。
■/usr/share
/usr/shareには、アーキテクチャに依存しないデータを収めます。つまり、i386システム、Alphaシステム、PowerPCシステムのいずれでも、同じものがそのまま使えるということです。/usr/share/manと/usr/share/miscが必須、それ以外はオプションです。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 図7 /usr/shareで「必須」とされているのは2ディレクトリのみ。あとはオプション | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/usr/share/man以下にはさらにサブディレクトリがあり、それぞれ
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 図8 man以下のサブディレクトリは、それぞれmanページのセクション番号に対応している | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
のような意味を持っています。
共有できない/var
/varはホスト固有の可変データ(variable data)用領域であり、ホストごとに用意する必要があります。当然、他ホストとの共有はできません。
/varもほかのディレクトリと同様、多くのサブディレクトリを持っています。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 図9 /varにも多くのサブディレクトリがある。あせらず、徐々に覚えていけばいいだろう | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■/var/cache
/var/cacheは、一時的な記憶場所です。例えば、インストール直後のRed Hat Linux 7.1にはmanコマンドで表示する整形済みのテキストが入っていたりします。普通は容量に上限を設けて、古いものから順に捨てていきます。これによって、最近参照したデータを再び参照するとき、素早い応答が可能になります。
■/var/lock
/var/lockは、ファイルの読み書きなどで排他制御を行う場合に使います。Linuxはマルチユーザー/マルチタスクシステムですから、1つのファイルに対して同時に書き込み要求が発生する可能性があります。そのままではファイルに不整合が発生するので、書き込み中という目印のファイルを/var/lockに作成します。個々のプロセスは、このファイルを見て自分が書き込めるかどうか、あるいは読み出すデータが信頼できるものかどうかを判断します。本来ならOSに任せたい処理ですが、細かい作業を行うときにはどうしても必要になってきます。
■/var/log
各種プログラムの動作記録を収めているのが/var/logです。例えば、ブート時のメッセージを収めたboot.logを見ることで、起動時に特定のハードウェアを認識しているかどうかを確認したりします。
また、Linux動作中の各種メッセージはmessagesに記録されます。ここを見ることで、不正なアクセスがないかどうかをある程度は判断できます。実際には、毎日ここをチェックするのは大変なのでswatchやTripwireといったチェックプログラムを使った方がいいでしょう。
さらに、maillogとhttpd-access.logも重要です。それぞれ、sendmailなどのMTA(Mail Transfer Agent)、ApacheなどのWebサーバの動作記録です。記憶に新しいところでは、Code Redによるアクセスがhttpd-access.logに記録されます。自サイトに対する攻撃だけでなく、他サイトに対する攻撃の踏み台になっていないかどうか、このファイルで頻繁にチェックする必要があります。ただし、httpd-access.logに形跡がないからといって、100%安全というわけではありませんが……。
■/var/run
/var/runにあるのは、特定プロセスのプロセス番号を含んだファイルがほとんどです。あるプロセスにシグナルを送る場合、まずpsコマンドでプロセス番号を調べる必要があります。これは面倒ですし、タイプミスの恐れもあります。そこで、
$ kill -HUP `cat /var/run/sendmail.pid` |
などとタイプして使います。これならシェルによるファイル名補完などが使えるので、よりタイプが楽になるしミスも少なくなります。ただ、すべてのプログラムがここを利用しているわけではありません。
■/var/spool
spoolはSimultaneous Peripheral Operation On-Lineの省略形で、もともとはIBM用語です。本来は、動作の遅い周辺機器に対して効率よくデータを送るためのバッファです。転じて、FIFO(First In First Out)の、いわゆる「キュー」と呼ばれるバッファとして使われているようです。/var/spool/lpdは、プリンタに送るデータをためておくバッファなので、字義に近い使われ方です。ほかには/var/spool/mqueueや/var/spool/fax、/var/spool/atといったディレクトリもあります。それぞれ、うまく送れなかった電子メールやFAXのデータを保存しておいたり、atコマンドで指定されたコマンドを保存しておいたりする場所です。ここにあるデータは、各デーモンが適当な間隔でサーチすることで処理されます。従って、対応するデーモンが何かの拍子に止まってしまうと、いつまでたっても処理されないことになってしまいます。
また、sendmailを使ったメールサーバであれば、/var/spool/mailの下に各ユーザー名と同じファイルがあります。これが、いわゆるメールボックスです。ユーザーに送られたメールは、いったんここに保存されます。その後、mailコマンドで読み出したり、POP3でメーラーに読み込んだりするわけです。最近では、MTAとしてqmailを使うサーバもあるようですが、その場合は/var/spool/mailを使わず、直接各ユーザーのホームディレクトリにメールを配送するのが一般的です。
FHSは基本パターン
|
以上、2回にわたってLinuxのディレクトリ構造を解説してきました。FHS 2.2をベースとしているので、実際はディストリビューションによって微妙に違います。ですが、基本的な考え方は同じはずですから、FHSを押さえておけばだいたいの類推は可能でしょう。
|
2/2
|
|
| Index | |
| Windowsユーザーに教えるLinuxの常識 | |
| サブディレクトリを持つディレクトリ | |
| FHS 2.2における/opt | |
| 巨大な/usrのディレクトリ構造 | |
| 共有できない/var | |
| FHSは基本パターン | |
| 連載 Windowsユーザーに教える Linuxの常識 |
| Linux Squareフォーラム Linux/システム学習関連記事 |
| 連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
| 連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
| 連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
| Linux Squareフォーラム全記事インデックス |
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
