スティッキービットは、ファイル/ディレクトリの所有者またはルートユーザーのみがファイルを削除または名前変更できるようにするファイルまたはディレクトリに設定される許可ビットです。他のユーザーが作成したファイルを削除する特権は、他のユーザーには与えられません。
Linuxシステムのすべてのユーザーがファイルを作成するために使用できるLinuxディレクトリが必要になる場合があります。ユーザーは、このディレクトリでの都合に応じてファイルを作成、削除、または名前変更できます。
ここで、ユーザーがこのディレクトリ内の他のユーザーによって作成されたファイルを誤ってまたは故意に削除(または名前変更)した場合はどうなりますか?
この種の問題を回避するために、スティッキービットの概念が使用されます。以来/ tmpが、この目的のために使用されます。したがって、上記のシナリオを回避するために、/ tmpはスティッキービットを使用します。
例えば:
mkdir demo
chmod 777 demo
また、このフォルダー内に、許可777を持つ異なるユーザーを持つ2つのファイルを作成しました。
ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo
ls -l demo
-rwxrwxrwx 1 abhi abhi 0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu 0 Mar 11 18:15 file2
これでスティッキービットをオンにします
chmod +t demo/
ls -ld demo
drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo
1人のユーザー(abhi)が2番目のユーザー(anshu)の名前を変更する場合はどうなりますか
mv /home/guru/demo/file2 /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to '/home/guru/demo/file3': Operation not permitted
スティッキービットの起源
Linuxでは、スティッキービットは上記のディレクトリでの使用のみを持ちます。歴史的には、通常のファイルではまったく異なるものに使用されていました。これが名前の由来です。
プログラムが実行されると、ユーザーが実際に使用を開始する前にプログラムをメモリにロードするのに時間がかかります。エディターなどのプログラムがユーザーによって頻繁に使用される場合、起動時間の遅延は当時のオーバーヘッドでした。
この時間遅延を改善するために、スティッキービットが導入されました。OSは、実行可能ファイルのスティッキービットがオンの場合、実行可能ファイルのテキストセグメントがスワップ領域に保持されていることを確認しました。これにより、プログラムの再実行時に実行可能ファイルをRAMに簡単にロードバックでき、時間遅延が最小限に抑えられました。
Linuxなどの最新のシステムは、実行可能ファイルやその他のファイルのキャッシュを自動的に管理するため、スティッキービットは必要ありません。
出典:The Geek Stuffの「Linux Sticky Bit Concept Explained with Examples」