Если у вас есть Emacs (или любой Info-браузер) и Справочное руководство по библиотеке GNU C , вы можете сделать это:
- Запустите Emacs и нажмите Ctrl- h i (или нажмите «Справка> Дополнительные руководства> Все другие руководства (Информация)»), чтобы запустить встроенный считыватель информации.
- Нажмите m (или нажмите «Информация> Пункт меню> Другое»)
- Введите
libc
и нажмите Enter.
- Введите i (или нажмите «Информация> Индекс> Найти строку…»)
- Введите
sticky
и нажмите Enter.
Вы получите этот текст:
'S_ISVTX'
Это "липкий" бит, обычно 01000.
Для каталога это дает разрешение на удаление файла в этом каталоге, только если у вас есть этот файл. Обычно пользователь может либо удалить все файлы в каталоге, либо не может удалить ни один из них (в зависимости от того, имеет ли пользователь разрешение на запись в каталог). Применяется одно и то же ограничение - у вас должно быть как разрешение на запись для каталога, так и файл, который вы хотите удалить. Единственным исключением является то, что владелец каталога может удалить любой файл в каталоге, независимо от того, кому он принадлежит (при условии, что владелец дал себе разрешение на запись в каталог).
Это обычно используется для каталога /tmp, где любой может создавать файлы, но не удалять файлы, созданные другими пользователями.
Первоначально залипший бит в исполняемом файле изменил политику обмена системы. Обычно, когда программа закрывается, ее страницы в ядре немедленно освобождаются и используются повторно.
Если в исполняемом файле был установлен бит закрепления, система некоторое время удерживала страницы в ядре, как будто программа все еще работала. Это было выгодно для программы, которая может запускаться много раз подряд. Это использование устарело в современных системах. Когда программа завершает работу, ее страницы всегда остаются в ядре до тех пор, пока в системе нет недостатка памяти.
Когда программа будет запущена в следующий раз, ее страницы будут по-прежнему в ядре, если не было недостатка с момента последнего запуска.
В некоторых современных системах, где бит закрепления не имеет никакого полезного значения для исполняемого файла, вы вообще не можете установить бит для не-каталога. Если вы попытаетесь, 'chmod' завершится неудачно с 'EFTYPE'; см. Настройка разрешений.
Некоторые системы (в частности, SunOS) имеют еще одно применение для залипания. Если для файла, который не является исполняемым, установлен бит закрепления, это означает обратное: никогда не кэшировать страницы этого файла вообще. Основное использование это для файлов на сервере NFS, которые используются в качестве области подкачки на бездисковых клиентских машинах. Идея состоит в том, что страницы файла будут кэшироваться в памяти клиента, поэтому для кеширования их во второй раз является пустой тратой памяти сервера. При таком использовании бит закрепления также подразумевает, что файловая система может не записать время модификации файла на диск надежно (идея заключается в том, что никто не заботится о файле подкачки).
Этот бит доступен только в системах BSD (и тех, которые получены из них). Поэтому для получения определения необходимо использовать макрос выбора функции _BSD_SOURCE (см. Макросы тестирования функций).