新Linux入門|Linuxでスティッキービットを理解しよう!削除権限を制御する特別なパーミッション

Linuxでは、複数のユーザーが同じディレクトリを利用することがよくあります。
例えば /tmp ディレクトリのように、誰でも自由にファイルを作成できる場所があります。
しかし、もし他のユーザーが自分のファイルを削除できたら…とても困りますよね。

そんなときに活躍するのが、スティッキービット(Sticky Bit) です。
これはディレクトリ内での「削除権限」を制御する特別なパーミッションです。

ここでは、スティッキービットの仕組みと設定方法をわかりやすく解説します。

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

スティッキービット(Sticky Bit) は、主にディレクトリに設定される特別なパーミッションです。
これを設定すると、そのディレクトリ内のファイルを所有者本人以外が削除できなくなります。

📘 つまり

  • 他のユーザーが同じディレクトリに書き込みできても、
    自分が作成したファイルは自分だけが削除できるようになる仕組みです。

🧱 スティッキービットの仕組み

通常、ディレクトリのパーミッションが「rwxrwxrwx」の場合、
全員が読み書き・削除など自由に操作できてしまいます。

しかしスティッキービットを設定すると、次のように制御されます。

項目スティッキービットなしスティッキービットあり(+t)
他ユーザーが自分のファイルを削除✅ 可能🚫 不可能
自分のファイルを削除✅ 可能✅ 可能
他人のファイルにアクセス読み書き可能(権限による)読み書き可能(権限による)

💡 /tmp ディレクトリにはデフォルトでスティッキービットが設定されています。
このおかげで、誰でも一時ファイルを作れるけれど、他人のファイルは削除できません。

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

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

コマンド書式

chmod +t ディレクトリ名

使用例

[root@AlmaLinux ~]# chmod +t shared_dir

このコマンドを実行すると、ディレクトリ shared_dir にスティッキービットが設定されます。

確認方法

[root@AlmaLinux ~]# ls -ld shared_dir
drwxrwxrwt 2 root root 4096 Oct 29 15:00 shared_dir

上記のように、パーミッションの末尾に「t」 が表示されればスティッキービットが有効です。

🔐 スティッキービットの数値表現

スティッキービットは、数値モード(8進数)でも設定できます。
この場合、先頭に「1」 を付けて指定します。

設定内容数値
777通常のフルアクセス
1777スティッキービット付きのフルアクセス
1711所有者フル・他人は実行のみ+スティッキービット

📘 例

[root@AlmaLinux ~]# chmod 1777 shared_dir

結果

[root@AlmaLinux ~]# ls -ld shared_dir
drwxrwxrwt 2 root root 4096 Oct 29 15:30 shared_dir

💡 /tmp ディレクトリのパーミッションも「1777」となっています。

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

スティッキービットを削除(無効化)するには、次のようにします。

[root@AlmaLinux ~]# chmod -t shared_dir

解除後に確認

[root@AlmaLinux ~]# ls -ld shared_dir
drwxrwxrwx 2 root root 4096 Oct 29 15:35 shared_dir

💡 「t」が消えていれば解除完了です。

🧩 chmodコマンドの主なオプション

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

📘 例:再帰的にスティッキービットを設定

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

これで /srv/shared 以下のすべてのディレクトリにスティッキービットが設定されます。

🧠 スティッキービットの表示形式

スティッキービットが設定された場合、ls -l で次のように表示されます。

権限表示意味
drwxrwxrwtスティッキービットが有効(誰でもアクセス可・削除制限あり)
drwxrwxrwTスティッキービットが有効(実行権なし)

💡 「t(小文字)」は実行権がある場合、「T(大文字)」は実行権がない場合に表示されます。

📘 /tmpディレクトリの例(実際の出力)

[suzuki@AlmaLinux ~]$ ls -ld /tmp
drwxrwxrwt. 10 root root 4096 Oct 29 15:40 /tmp

この出力では、

  • t が末尾にある → スティッキービット有効
  • だれでも書き込み可能(rwxrwxrwt)
  • ただし他人のファイルは削除できない

という状態を示しています。

✅ まとめ

操作コマンド例効果
スティッキービットを設定chmod +t directory所有者以外が削除できなくなる。
スティッキービットを解除chmod -t directory通常の削除権限に戻る。
数値で設定chmod 1777 directory読み書き+スティッキービット付きにする。
設定確認ls -ld directory末尾に「t」または「T」で確認

スティッキービットは、共有ディレクトリや /tmp のような環境で特に重要です。
 この仕組みを正しく理解しておくことで、他ユーザーとのファイル共有でも安全にアクセス制御を行うことができます。