FHSの「/tmp」ディレクトリの概要

tmp

はじめに

LinuxやUnix系システムでは、ファイルやディレクトリの役割が明確に定義されています。FHS (Filesystem Hierarchy Standard) に基づいて、システムは一貫性と予測可能性を持って動作します。その中で /tmp ディレクトリは、システムやアプリケーションが一時的なファイルを保存するために使用する重要なディレクトリです。本記事では、/tmp ディレクトリの役割と機能について詳しく解説します。

/tmp ディレクトリとは?

/tmp ディレクトリは、一時ファイルを保存するための場所です。システムやアプリケーションが動作する際に、一時的に必要なデータやファイルを保存するために使用されます。これらのファイルは通常、システムの再起動や一定期間が経過すると削除されることが多いため、長期間の保存を目的としたデータは含まれません。

/tmp ディレクトリの主な特徴

  • 一時的なファイルの保存場所:ユーザやアプリケーションが一時的に必要なデータを保存するための領域です。例えば、インストーラが作業中に作成するファイルや、Webブラウザがダウンロード中のファイルを一時的に保存するために使用します。
  • 書き込み可能/tmp ディレクトリはすべてのユーザに対して書き込み可能です。したがって、複数のユーザやプロセスが同時に利用することができます。ただし、セキュリティの観点から、各ユーザのファイルに対して適切なアクセス権限が設定されています。
  • システム再起動で削除される:通常、/tmp に保存されたファイルはシステムの再起動時に自動的に削除されます。これにより、不要な一時ファイルがディスクスペースを圧迫するのを防ぎます。

/tmp の使用例

1. アプリケーションによる一時ファイルの保存

多くのアプリケーションは、実行中に一時的なデータを保存する必要があります。たとえば、テキストエディタが編集中のファイルの一時コピーを保存する場合や、Webブラウザが大きなファイルをダウンロードする際に /tmp が使用されます。

/tmp/my-temp-file.txt

2. インストール中の一時ファイル

ソフトウェアのインストールやアップデート時にも、インストールスクリプトが一時ファイルを /tmp に書き込むことがあります。これにより、必要な作業ファイルを保持しつつ、インストールが完了した後は自動的にファイルが削除されます。

3. バッチ処理やスクリプトでの一時ファイル利用

シェルスクリプトやバッチ処理プログラムも、一時的なデータや中間ファイルを /tmp に保存して処理を効率化することがよくあります。これにより、メモリ消費を抑えつつ、一時的にデータを保持しておくことが可能です。

/tmp と /var/tmp の違い

/tmp と似た役割を持つディレクトリとして /var/tmp があります。これらにはいくつかの違いがあります。

  • /tmp:システムの再起動時にファイルが削除されることが一般的です。短期間だけ必要な一時ファイルを保存する場所として使用されます。
  • /var/tmp/var/tmp に保存されたファイルは、再起動後も保持されます。長期間にわたって保存が必要な一時ファイルを扱う場合はこちらが使われます。

/tmp のセキュリティ

/tmp ディレクトリは、すべてのユーザがアクセス可能であるため、セキュリティに関して慎重な管理が必要です。システムは各ユーザごとにファイルのアクセス権限を管理していますが、悪意のあるユーザがシンボリックリンク攻撃などの手法を使って他のユーザのデータを狙う可能性があります。これを防ぐために、noexec オプションや nodev オプションを用いて、/tmp における実行ファイルの実行やデバイスファイルの作成を制限することが一般的です。

/tmp ディレクトリの管理

管理者は、ディスクスペースの使用状況を定期的に監視し、必要に応じて /tmp の内容を手動でクリーンアップすることがあります。自動的に古いファイルを削除するスクリプトやツールを使って、定期的なメンテナンスを行うこともあります。

# /tmp ディレクトリのサイズを確認
du -sh /tmp

まとめ

/tmp ディレクトリは、システムやアプリケーションが一時的にファイルを保存するために使用する重要な場所です。システムの再起動時に自動的にクリーンアップされるため、短期間だけ必要なデータを一時的に保存するのに適しています。FHS規格に基づいて、システムの一時ファイルの処理を効率的に行うことができ、適切なセキュリティ対策を講じることで、システムの安全性も確保されています。