sticky-бит позволяет защитить нужные файлы от удаления другими пользователями, в случаях когда пользователи до установки специального бита имеют право на удаление.
Это дополнительная опция настройки прав доступа к файлам в Linux, sticky даёт возможности и расширяет возможности, которые при настройке уровня доступа представляют утилиты chmod и chown.
sticky бит, запрет удаления файла в Linux системах
Установить бит на файл или каталог можно при помощь chmod
chmod 1644 file.txt
chmod +t file.txt
Во втором случае сохранятся существующие атрибуты, в первом — они перезапишутся стандартными 644.
Убрать sticky-бит:
chmod -t file.txt
sticky запрещает удаление файла всем кроме его владельца и суперпользователя. Другие пользователи системы, даже если они входят в группу владельца, удалить файл не смогут.
Если бит установить на каталог — аналогичные правила будут распространяться на все его содержимое.
sticky устанавливается владельцем файла, им же снимается. Бит остается до снятия или до удаления файла, для которого он добавлен.
Установленный бит защитит файл в том числе от действий суперпользователя. root не сможет удалить файл, но сможет снять запрещающий это действие бит.
Пример добавления sticky бита
Создаёт тестовый файл, для которого будем выставлять и проверять права доступа.
admin@desktop:~# touch test
При создании файл получает стандартные для Linux систем права доступа:
Владелец файла и группа владельца — admin, для владельца и группы есть доступ на чтение файла и на запись в него. Для всех остальных пользователей есть право на чтение файла.
Существующие права характеризуются значением 664 для утилиты chmod:
rw: read (4) + write (2) r: read (4)
Добавляем специальный бит
admin@desktop:~# chmod +1664 test
Права позволяют всем из группы пользователя писать в файл или удалять его.
admin@desktop:~# ls -la test
-rw-rw-r-T 1 admin admin 0 Mar 23 16:55 /tmp/test
Переключимся на пользователя root
admin@desktop:~# sudo -i
Затем добавим пользователя backup в группу admin
root@desktop:~# usermod -aG admin backup
Теперь став пользователем backup попробуем удалить файл
root@desktop:~#
su - backup
backup@desktop:~# rm test
rm: cannot remove 'test': Operation not permitted
От имени суперпользователя удаляем sticky бит
root@desktop:~# chmod -t /tmp/test
Теперь файл можно будет удалить.
Читайте про suid/suid и наследование процессом прав доступа, а также про добавление пользователей в группу sudo и настройку возможности выполнения команд с правами суперпользователя без запроса пароля.