Введение

Разрешения файловой системы UNIX
Концепция файловой системы
В вычислительной технике, "липкий бит" – это флаг права доступа, который может быть установлен для файлов и каталогов в Unix-подобных системах. Существует два определения: одно для файлов, другое для каталогов. Для файлов, особенно исполняемых, суперпользователь мог устанавливать этот флаг, чтобы файл оставался в основной памяти даже после завершения его использования, минимизируя необходимость в подкачке (swap), которая потребовалась бы при повторном обращении к нему, когда файл пришлось бы перезагружать из относительно медленной внешней памяти. Эта функция устарела благодаря оптимизации подкачки. Для каталогов, если для каталога установлен липкий бит, файловая система обрабатывает файлы в этом каталоге особым образом: переименовать или удалить файл может только владелец файла, владелец каталога или пользователь root. Без установленного липкого бита любой пользователь, имеющий права на запись и выполнение в каталоге, может переименовать или удалить файлы, находящиеся в нем, независимо от владельца этих файлов. Обычно этот флаг устанавливается для каталога /tmp, чтобы предотвратить удаление или перемещение файлов другими пользователями. Современное применение липкого бита связано с каталогами и защищает каталоги и их содержимое от несанкционированного изменения или удаления пользователями, не являющимися владельцами; эта функция присутствует в большинстве современных Unix-подобных систем. Файлы в общем каталоге, таком как /tmp, принадлежат своим владельцам, и пользователи, не являющиеся владельцами, не могут удалять, перезаписывать или переименовывать эти файлы.

История

В 1974 году в пятом издании Unix появился "липкий бит" для использования с чистыми исполняемыми файлами. При установке он предписывал операционной системе сохранять текстовый сегмент программы в области подкачки после завершения процесса. Это ускоряло последующие запуски, позволяя ядру выполнить единственную операцию – перемещение программы из области подкачки в оперативную память. Таким образом, часто используемые программы, такие как редакторы, загружались заметно быстрее. Одной из существенных проблем с программами, для которых был установлен "липкий бит", была их замена (например, при применении патчей); для этого требовалось снять "липкий бит" с исполняемого файла, запустить программу и выйти, чтобы очистить кэш, заменить двоичный исполняемый файл, а затем снова установить "липкий бит". Впоследствии эта функция работала только в HP-UX и UnixWare. Solaris, по всей видимости, отказался от неё в 2005 году. В выпуске 4.4 Lite BSD сохранялось старое поведение "липкого бита", но впоследствии оно было исключено из OpenBSD (начиная с выпуска 3.7) и FreeBSD (начиная с выпуска 2.2.1). Ни одна версия Linux никогда не поддерживала такое традиционное поведение; Linux кэширует исполняемые файлы так же, как и любые другие файлы, поэтому повторный запуск программы для очистки кэша не требуется.