「スティッキービット」とはUnixLikeSystem、Linuxなどで利用できる特殊なパーミッションの一つである。
ディレクトリに適応することにより効能を発揮する。
スティッキービットとは?
スティッキービットが設定されたディレクトリは、すべてのユーザがファイルおよびディレクトリを作成書き込みを行えるようになる。
しかし、作成したファイルやディレクトリを削除出来るのは所有者だけとなるというパーミッションだ。
例外としてrootでの削除はできる。
SUIDやSGIDと比較すると、特に極端な特権的動作ではないが、適応されるディレクトリは「/tmp」など、基本的に誰でも書きこめるようになっている点に注意してほしい。
パーミッションのマークは「t」であり、その他のユーザのパーミッションに適応される。
実際にみてみよう
$ ls -ld /tmp
1 |
drwxrwxrwt 20 root root 4096 2月 21 17:51 /tmp/ |
結果をみてみると、その他のユーザのパーミッション情報のフラグに「t」という文字がみえる。これがスティッキービットとなる。
試しにパーミッションが777の状態のファイルを作成して他のユーザから削除できるかどうかを確かめてみよう。
実験用ユーザの作成
# useradd testuser
一応のパスワードを設定
# passwd testuser
「testuser」へ変身
# su testuser
「testuser」となったためプロンプトは$になる。
$ cd /tmp
ファイル作成
$ touch testfile
模擬ファイルのパーミッションを設定、誰でも削除できるように777を指定
$ chmod 777 testfile
「testuser」から戻る
$ exit
rootから離脱
# exit
ファイルを消そうとしてみる。
$ rm /tmp/testfile
以下のようなエラーが表示されるはずだ。
1 |
rm: 'testfile' を削除できません: 許可されていない操作です |
ファイルが削除できないことが確認できた。
一応、片付けも載せておく。
$ su -
# cd /tmp/
ファイルを削除
# rm testfile
実験用ユーザを削除
# userdel -r testuser
スティッキービットを設定するには
スティッキービットを設定する機会は少ないかもしれないが、自分でもスティッキービットは設定することが出来る。
$ chmod 1777 <ディレクトリ名>
とすると指定できる。通常のパーミッション数値に1000を足した値となる。
権限を剥奪したい場合は通常通り
$ chmod 777 <ディレクトリ名>
とすればよいが、その状態は危険なので755あたりを指定した方が無難である。なぜならば誰でも無制限に書き込みや削除が行うことができるため、システムの秩序が失われるからである。
その他の指定方法
$ chmod o+u <ディレクトリ名>
としても同じ効果がえられる。
権限を剥奪する場合は
$ chmod o-u <ディレクトリ名>
となる。
スティッキービットの付いたファイルを検索したい場合
# find / -perm -1000
とういうコマンドを発行すると、システム全体のスティッキービットが付与されたファイルやディレクトリが列挙される。
まとめ
このページではスティッキービットについて設定方法や検索方法も含めてご紹介した。
設定することは多くはないだろうが、少なくともどういうパーミッションなのかは掴んでおきたい。
LPIC1の勉強中で、参考にさせてもらいました。
一連の操作結果が載っているとわかりやすいですね。
自分で試すのは意外と面倒ですので、助かります。
chmodでのスティッキービット設定は o+u, o-u ではなく、o+t, o-t ではありませんか