Введение
Разрешения файловой системы UNIX
Концепция файловой системы
В вычислительной технике, "липкий бит" – это флаг права доступа, который может быть установлен для файлов и каталогов в Unix-подобных системах. Существует два определения: одно для файлов, другое для каталогов. Для файлов, особенно исполняемых, суперпользователь мог устанавливать этот флаг, чтобы файл оставался в основной памяти даже после завершения его использования, минимизируя необходимость в подкачке (swap), которая потребовалась бы при повторном обращении к нему, когда файл пришлось бы перезагружать из относительно медленной внешней памяти. Эта функция устарела благодаря оптимизации подкачки. Для каталогов, если для каталога установлен липкий бит, файловая система обрабатывает файлы в этом каталоге особым образом: переименовать или удалить файл может только владелец файла, владелец каталога или пользователь root. Без установленного липкого бита любой пользователь, имеющий права на запись и выполнение в каталоге, может переименовать или удалить файлы, находящиеся в нем, независимо от владельца этих файлов. Обычно этот флаг устанавливается для каталога /tmp, чтобы предотвратить удаление или перемещение файлов другими пользователями. Современное применение липкого бита связано с каталогами и защищает каталоги и их содержимое от несанкционированного изменения или удаления пользователями, не являющимися владельцами; эта функция присутствует в большинстве современных Unix-подобных систем. Файлы в общем каталоге, таком как /tmp, принадлежат своим владельцам, и пользователи, не являющиеся владельцами, не могут удалять, перезаписывать или переименовывать эти файлы.
the filesystem concept
In computing, the sticky bit is a user ownership access right flag that can be assigned to files and directories on Unix like systems. There are two definitions: one for files, one for directories. For files, particularly executables, superuser could tag these as to be retained in main memory, even when their need ends, to minimize swapping that would occur when another need arises, and the file now has to be reloaded from relatively slow secondary memory. This function has become obsolete due to swapping optimization. For directories, when a directory's sticky bit is set, the filesystem treats the files in such directories in a special way so only the file's owner, the directory's owner, or root user can rename or delete the file. Without the sticky bit set, any user with write and execute permissions for the directory can rename or delete contained files, regardless of the file's owner. Typically this is set on the /tmp directory to prevent ordinary users from deleting or moving other users' files. The modern function of the sticky bit refers to directories, and protects directories and their content from being hijacked by non owners; this is found in most modern Unix like systems. Files in a shared directory such as /tmp belong to individual owners, and non owners may not delete, overwrite or rename them.
История
В 1974 году в пятом издании Unix появился "липкий бит" для использования с чистыми исполняемыми файлами. При установке он предписывал операционной системе сохранять текстовый сегмент программы в области подкачки после завершения процесса. Это ускоряло последующие запуски, позволяя ядру выполнить единственную операцию – перемещение программы из области подкачки в оперативную память. Таким образом, часто используемые программы, такие как редакторы, загружались заметно быстрее. Одной из существенных проблем с программами, для которых был установлен "липкий бит", была их замена (например, при применении патчей); для этого требовалось снять "липкий бит" с исполняемого файла, запустить программу и выйти, чтобы очистить кэш, заменить двоичный исполняемый файл, а затем снова установить "липкий бит". Впоследствии эта функция работала только в HP-UX и UnixWare. Solaris, по всей видимости, отказался от неё в 2005 году. В выпуске 4.4 Lite BSD сохранялось старое поведение "липкого бита", но впоследствии оно было исключено из OpenBSD (начиная с выпуска 3.7) и FreeBSD (начиная с выпуска 2.2.1). Ни одна версия Linux никогда не поддерживала такое традиционное поведение; Linux кэширует исполняемые файлы так же, как и любые другие файлы, поэтому повторный запуск программы для очистки кэша не требуется.