スティッキービットについて

LPIC を勉強していて気になったシリーズまとめ 3 です, スティッキービットについて。
まとめ 1, 2 は以下です

www.kangetsu121.work www.kangetsu121.work

スティッキービットとは

Linux での一般的な使い方では, ディレクトリ に付与する属性です*1
スティッキービットのついたディレクトリ配下に作成したファイル, ディレクトリは, 所有者以外はファイル・ディレクトリの名前変更・削除ができなく なります。

スティッキービットの有無は SUID, SGID と同じく ls -l などで見ることができます。
その他ユーザーの実行権限に x でなく t がついていると, そのディレクトリにはスティッキービットが付与されています。

スティッキービットの利用例

/tmp ディレクトリ には, スティッキービットがセットされています (その他ユーザーの実行権限が t)。

kangetsu@ubuntu18:~
$ ll /tmp -d
drwxrwxrwt 9 root root 4096 May 24 14:07 /tmp/
kangetsu@ubuntu18:~

上記の通り /tmp は全てのユーザーが全権限を持っているディレクトリで, 一時ファイル, 作業用のファイルなどを作る際によく利用されます。
このため /tmp 以下は無法地帯になりそうですが, スティッキービットが付与されているため, 自分が作成したファイル・ディレクトリ以外は削除などできないようになって, 治安が保たれています。

スティッキービットの付与の方法

chmod コマンドなどでのファイル権限の数値表現で, SUID は 4000, SGID は 2000 でしたが, スティッキービットは 1000 です。

↓ 775 の権限のディレクトリに

kangetsu@ubuntu18:~
$ ll sbit_test -d
drwxrwxr-x 2 kangetsu kangetsu 4096 May 24 15:34 sbit_test/
kangetsu@ubuntu18:~

1775 で chmod するとスティッキービット付与*2 (その他ユーザーの実行権限が t)

kangetsu@ubuntu18:~
$ sudo chmod 1775 sbit_test/
kangetsu@ubuntu18:~
$ ll sbit_test -d
drwxrwxr-t 2 kangetsu kangetsu 4096 May 24 15:34 sbit_test/
kangetsu@ubuntu18:~

まとめ

SUID, SGID に比べあっさりになりましたが, まとめです。

  • スティッキービットはディレクトリに付与する
    • スティッキービットがセットされているディレクトリ内に作成されたファイル・ディレクトリは, その所有者しか名前変更・削除ができなくなる
    • /tmp ディレクトリが典型例
  • 権限の数値表現だと SUID は 4000, SGID は 2000, スティッキービットは 1000

Linux教科書 LPICレベル1 Version5.0対応

Linux教科書 LPICレベル1 Version5.0対応

  • 作者:中島 能和
  • 発売日: 2019/04/08
  • メディア: 単行本(ソフトカバー)
Linux教科書 LPICレベル2 Version4.5対応

Linux教科書 LPICレベル2 Version4.5対応

新しいLinuxの教科書

新しいLinuxの教科書

*1:Solaris など Linux 以外の一部 OS では, 実行ファイル以外のファイルに付与すると, カーネルがそのファイルをキャッシュしなくなる, といった使い方もあるようです

*2:1775 でなく, 1777 や 1755 でももちろん大丈夫です