新Linux入門|/tmp・/var/tmp の役割とスティッキービットの仕組み

Linuxシステムを使っていると、よく目にするディレクトリ /tmp や /var/tmp。
これらはどちらも一時ファイル(temporary files)を保存するための場所ですが、
実は動作や用途に明確な違いがあります。

 また、この2つのディレクトリではスティッキービット(Sticky Bit)という特殊なアクセス制御も設定されています。
この記事では、それぞれの役割とスティッキービットの仕組みをわかりやすく解説します。

📂 /tmp ディレクトリとは?

/tmp は「Temporary」の略で、短期間だけ使う一時ファイルを保存するディレクトリです。
アプリケーションやシステムが作業用の一時データを保存するときによく利用されます。

主な特徴

項目内容
目的一時ファイルを保存するための領域
寿命システムの再起動時に自動的に削除される。
権限すべてのユーザーが読み・書き・実行可能(rwxrwxrwt)
スティッキービット設定されている(他人のファイルを削除できない)

💡 ポイント
/tmp 内のファイルは再起動時に消えるため、長期保存したいファイルには不向きです。

AlmaLinux 9.6 での確認例

[suzuki@AlmaLinux ~]$ ls -ld /tmp
drwxrwxrwt. 18 root root 4096 11月  9 21:16 /tmp

ここで末尾の「t」が、スティッキービットが有効になっていることを示しています。

🗂️ /var/tmp ディレクトリとは?

/var/tmp も一時ファイルを保存するためのディレクトリですが、
システムの再起動後もファイルが削除されないという点で /tmp と異なります。

主な特徴

項目内容
目的長期間保持する一時ファイルの保存
寿命システム再起動後もファイルが残る。
権限すべてのユーザーが読み・書き・実行可能(rwxrwxrwt)
スティッキービット設定されている(安全な共有を実現)

💡 ポイント
/var/tmp は /tmp と同様に全ユーザーが利用できますが、再起動で消えません。
 たとえば、アプリケーションがインストール途中で中断しても再開可能にする一時データなどを保存するのに使われます。

AlmaLinux 9.6 での確認例

[suzuki@AlmaLinux ~]$ ls -ld /var/tmp
drwxrwxrwt. 15 root root 4096 11月  9 16:56 /var/tmp

こちらも末尾に「t」があることから、スティッキービットが有効であることがわかります。

🔒 スティッキービットとは?

スティッキービット(Sticky Bit)は、ディレクトリに設定できる特別なアクセス制御ビットです。
 通常、ディレクトリに書き込み権限(w)があれば、他のユーザーが作成したファイルでも削除できます。
 しかしスティッキービットが設定されていると、ファイルの所有者本人・ディレクトリの所有者・rootユーザー以外は削除できません。

仕組みのイメージ

状況スティッキービットなしスティッキービットあり
suzukiが作成したファイルをtanakaが削除✅ 可能🚫 不可能
suzukiが自分のファイルを削除✅ 可能✅ 可能
rootユーザーが削除✅ 可能✅ 可能

💡 /tmp や /var/tmp のように複数ユーザーが使うディレクトリでは必須のセキュリティ機能です。

⚙️ スティッキービットの設定方法

スティッキービットは chmodコマンド を使って設定します。

コマンド書式

chmod +t ディレクトリ名

例:共有ディレクトリに設定する場合

[root@AlmaLinux ~]# chmod +t /shared

設定後の確認

[root@AlmaLinux ~]# ls -ld /shared
drwxrwxrwt 2 root root 4096 8月 29 15:00 /shared

末尾に「t」が表示されていれば設定成功です。

🧮 スティッキービットを数値で設定する

スティッキービットは、8進数表記(数値モード)で 1000 を加えることで表現します。

通常の権限スティッキービット付きコマンド例
7771777chmod 1777 /shared
7551755chmod 1755 /shared
7001700chmod 1700 /shared

📘 例

[root@AlmaLinux ~]# chmod 1777 /shared

→ これで、誰でもアクセスできるが他人のファイルは削除できない安全な共有ディレクトリになります。

🧩 スティッキービットを解除する

スティッキービットを解除するには、次のようにします。

[root@AlmaLinux ~]# chmod -t /shared

解除後に確認

[root@AlmaLinux ~]# ls -ld /shared
drwxrwxrwx 2 root root 4096 8月 29 15:05 /shared

末尾の「t」が消えていれば解除されています。

🧠 コマンドまとめ:chmodの主なオプション

オプション説明
-Rディレクトリ以下を再帰的に変更
-v変更内容を詳細に表示
-c変更があった場合のみ出力

📘 例

[root@AlmaLinux ~]# chmod -Rv 1777 /shared
'/shared' のモードを 0755 (rwxr-xr-x) から 1777 (rwxrwxrwt) へ変更しました

✅ まとめ

ディレクトリ主な用途再起動後の挙動スティッキービット権限
/tmp短期的な一時ファイル自動削除される有効(t)drwxrwxrwt
/var/tmp長期間保持する一時ファイル残る有効(t)drwxrwxrwt

💡 /tmp と /var/tmp は、どちらも誰でも使える便利な場所ですが、
スティッキービットによって「他人のファイルを守る」仕組みがきちんと働いています。

システムの安定運用やセキュリティを考えるうえでも、
これらのディレクトリの役割とスティッキービットの関係を理解しておくことはとても大切です。