sticky бит


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 систем права доступа:

sticky бит


Владелец файла и группа владельца — 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 и настройку возможности выполнения команд с правами суперпользователя без запроса пароля.

Сказать спасибо