自由気ままに書いちゃおう

好きなことをつらつらと・・・

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

よく忘れるので、備忘も兼ね情報を整理したいと思います。

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

例えば、777(rwxrwxrwx)のパーミッションが設定したディレクトリを例に挙げると、
・全てのユーザがファイル/ディレクトリに対して作成書き込み実行が可能
となります。

このとき、777のディレクトリに対してスティッキービットを設定することで、
① 全てのユーザがファイル/ディレクトリに対して作成書き込み実行が可能 
② ファイル/ディレクトリの削除は所有者だけ可能
③ 例外としてrootユーザは削除可能
となります。

■スティッキービットの設定箇所について

スティッキービットは、ディレクトリに対して設定します。
スティッキービットが設定されたディレクトリは、
ディレクトリ内のファイル、およびその配下のディレクトリすべてに対して有効です。

■スティッキービットの確認方法

/tmpディレクトリはデフォルトでスティッキービットが設定されています。

f:id:guri2o1667:20201006094447p:plain

rwxrwxrwtの「t」がスティッキービットであることを意味します。

■スティッキービットの動作確認1

まず、一般ユーザであるtestユーザにて
以下ディレクトリおよびテキストを作成します。
<作成対象> /tmp/work/test.txt
※workディレクトリは775、testファイルは777です。
※のちほど、別ユーザ(test2)にて、testファイルを削除するので777にしています。

f:id:guri2o1667:20201006095300p:plain


では、一般ユーザのtest2にて、/tmp/work/test.txtを削除しようと思います。

f:id:guri2o1667:20201006095701p:plain

削除ができないことが表示されました。

/tmp/workディレクトリも削除しようと思います。

f:id:guri2o1667:20201006100019p:plain

想定通り、削除できないことが表示されました。

■スティッキービットの動作確認2

rootユーザで/tmp/work/test.txt、/tmp/workが削除出来ることを確認しました。

f:id:guri2o1667:20201006095910p:plain

f:id:guri2o1667:20201006100123p:plain

 

■スティッキービットのメリット

スティッキービットを設定したディレクトリは、
誰でも自由に使え、かつ自分が作成したファイルは他のユーザに削除されないってところです。
※既出の通り、rootユーザは削除可能です。

■スティッキービットのデメリット

/tmpディレクトリのゴミ掃除時に一般ユーザで掃除しようとすると削除できない。。。
※ゴミ掃除ならroot権限でサクッとやってしまうのもありかと。



以上です。