Sticky-бит - это бит разрешения, который устанавливается для файла или каталога и позволяет только владельцу файла / каталога или пользователю root удалять или переименовывать файл. Ни один другой пользователь не имеет прав на удаление файла, созданного другим пользователем.
Иногда случается так, что вам нужен каталог Linux, который может использоваться всеми пользователями системы Linux для создания файлов. Пользователи могут создавать, удалять или переименовывать файлы в соответствии с их удобством в этом каталоге.
А что если пользователь случайно или намеренно удалит (или переименует) файл, созданный другим пользователем в этом каталоге?
Что ж, чтобы избежать подобных проблем, используется понятие «липкий бит». Так как / tmp используется для этой цели. Поэтому, чтобы избежать описанного выше сценария, / tmp использует sticky bit.
Например:
mkdir demo
chmod 777 demo
Я также создал два файла с другим пользователем в этой папке, имеющей разрешение 777.
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
Что произойдет, если один пользователь (abhi) захочет переименовать второго пользователя (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 бит закрепления используется только в описанных выше каталогах. Исторически оно использовалось для чего-то совершенно другого в обычных файлах, и отсюда и название.
Когда программа выполняется, требуется время, чтобы загрузить программу в память, прежде чем пользователь действительно сможет начать использовать ее. Если программа, например редактор, часто используется пользователями, тогда задержка запуска была чрезмерной.
Чтобы улучшить эту задержку, был добавлен залипающий бит. ОС проверила, что если бит исполнения на исполняемом файле включен, то текстовый сегмент исполняемого файла был сохранен в пространстве подкачки. Это облегчало загрузку исполняемого файла в ОЗУ при повторном запуске программы, минимизируя время задержки.
Современные системы, такие как Linux, автоматически управляют своим кешем исполняемых файлов и других файлов и не нуждаются в этом.
Источник: «Концепция Linux Sticky Bit, объясненная примерами» в Geek Stuff