初めて質問させていただきます。
UNIXのディレクトリのパーミッションについてなのですが、パーミッションを表す'drwxr-srwt'など、"s"や"t"のフラグが付いていているときがあります。
色々と調べてみたのですが、根本的な解決までたどり着けませんでした。
そのフラグが付いているディレクトリが意味しているものは一体何なのでしょうか?
グループ(group)の所にある"s"がセット・グループIDビット(setgid bit/sgid bit)、その他(other)の所にある"t"がスティッキービット(sticky bit)です。
他に所有者(owner)の所にある"s"がセット・ユーザIDビット(setuid bit/suid bit)というものあります。
○セット・ユーザIDビット(setuid bit/suid bit)
実行ファイル(プログラムやコマンド、スクリプト)を実行した時、普通は実行者の権限で動作しますが、suid ビットが立っていると、実行ファイル作成者の権限で動作します。
良く使用されるのがroot権限がないと使用出来ないコマンドを一般ユーザでも使用出来るようにした時です。
○セット・グループIDビット(setgid bit/sgid bit)
あるディレクトリの所有グループが group の時、このディレクトリに sgid ビットが立っていると、その中に作成されるファイルやディレクトリの所有グループは自動的に group になり、ディレクトリには sgid ビットがセットされます。
これは、グループ内で共有ディレクトリを作成し、そこでファイルを共有した時など設定されます。
○スティッキービット(sticky bit)
ディレクトリに sticky ビットが立っていると、そのディレクトリ以下にあるファイルの削除やファイル名の変更は所有者にしか出来なくなります。
これは、テンポラリ(/tmpとか/var/tmpとか)で誰にでも書き込める領域は欲しいが、他ユーザにファイル等を消されるのを防ぎたい時などに設定されます。
なお、実行権限の部分(xの所)に権限がある時は"s"や"t"に、権限がない時には"S"や"T"になります。