В вычислительной технике липкий бит — это флаг права доступа пользователя , который может быть назначен файлам и каталогам в Unix-подобных системах.
Существует два определения: одно для файлов, другое для каталогов.
Для файлов, особенно исполняемых, суперпользователь может пометить их как сохраняемые в основной памяти, даже когда в них нет необходимости, чтобы минимизировать подкачку, которая может произойти при возникновении другой необходимости, и файл теперь придется перезагружать из относительно медленной вторичной памяти. [1] Эта функция устарела из-за оптимизации подкачки.
Для каталогов, когда установлен sticky bit каталога, файловая система обрабатывает файлы в таких каталогах особым образом, так что только владелец файла, владелец каталога или пользователь root может переименовывать или удалять файл. Без установленного sticky bit любой пользователь с правами записи и выполнения для каталога может переименовывать или удалять содержащиеся в нем файлы, независимо от владельца файла. Обычно это устанавливается для каталога, /tmp
чтобы предотвратить удаление или перемещение файлов других пользователей обычными пользователями.
Современная функция липкого бита относится к каталогам и защищает каталоги и их содержимое от захвата лицами, не являющимися владельцами; это встречается в большинстве современных Unix-подобных систем. Файлы в общем каталоге, например, /tmp
принадлежат отдельным владельцам, и лица, не являющиеся владельцами, не могут удалять, перезаписывать или переименовывать их.
Бит sticky был введен в пятом издании Unix (в 1974 году) для использования с чистыми исполняемыми файлами . [2] Когда он установлен, он дает указание операционной системе сохранить текстовый сегмент программы в пространстве подкачки после завершения процесса . Это ускоряет последующие выполнения, позволяя ядру выполнить одну операцию перемещения программы из подкачки в реальную память. Таким образом, часто используемые программы, такие как редакторы, загружались заметно быстрее. Одной из заметных проблем с «stickied» программами была замена исполняемого файла (например, во время исправления ); для этого требовалось удалить бит sticky из исполняемого файла, выполнить программу и выйти для очистки кэша, заменить двоичный исполняемый файл, а затем восстановить бит sticky.
Впоследствии это поведение стало работать только в HP-UX и UnixWare . Solaris , по-видимому, отказался от этого в 2005 году. [ необходима цитата ] Выпуск 4.4-Lite BSD сохранил старое поведение sticky bit, но впоследствии оно было исключено из OpenBSD (начиная с выпуска 3.7) и FreeBSD (начиная с выпуска 2.2.1). Ни одна версия Linux никогда не поддерживала это традиционное поведение; Linux выполняет кэширование исполняемых файлов так же, как и всех файлов, поэтому повторное выполнение программы для очистки кэша не требуется.
Наиболее распространенное использование липкого бита — в каталогах, находящихся в файловых системах для операционных систем типа Unix . Когда липкий бит каталога установлен, файловая система обрабатывает файлы в таких каталогах особым образом, так что только владелец файла, владелец каталога или root может переименовывать или удалять файл. Без установленного липкого бита любой пользователь с правами записи и выполнения для каталога может переименовывать или удалять содержащиеся в нем файлы, независимо от владельца файла. Обычно это устанавливается для каталога, /tmp
чтобы предотвратить удаление или перемещение файлов других пользователей обычными пользователями. Эта функция была введена в 4.3BSD в 1986 году, и сегодня она встречается в большинстве современных систем типа Unix.
Кроме того, Solaris (начиная с Solaris 2.5) определяет особое поведение, когда sticky bit установлен на неисполняемых файлах : эти файлы при доступе к ним не будут кэшироваться ядром . Обычно это устанавливается на файлах подкачки , чтобы предотвратить сброс более важных данных из системного кэша при доступе к файлу. Это также иногда используется для бенчмаркинговых тестов. [ необходима цитата ]
Бит sticky также устанавливается автомонтировщиком, чтобы указать, что файл еще не смонтирован. Это позволяет программам вроде ls игнорировать размонтированные удаленные файлы.
Бит sticky можно установить с помощью команды chmod , а также с помощью восьмеричного режима 1000 или символа t ( s уже используется битом setuid ). Например, чтобы добавить бит в каталог /usr/local/tmp
, нужно ввести chmod +t /usr/local/tmp. Или, чтобы убедиться, что каталог имеет стандартные tmp
разрешения, можно также ввести chmod 1777 /usr/local/tmp.
Чтобы очистить его, используйте chmod -t /usr/local/tmpили chmod 0777 /usr/local/tmp(последний вариант также сбросит tmp
каталог до стандартных разрешений).
В символической нотации разрешений файловой системы Unix бит sticky представлен либо буквой t , либо T в последнем символьном месте в зависимости от того, установлен или не установлен бит выполнения для категории others соответственно. Например, в Solaris 8 /tmp
каталог, в котором по умолчанию установлены как бит выполнения others , так и бит sticky, отображается как:
$ ls -ld /tmp drwxrwxrwt 4 root sys 485 10 ноя 06:01 /tmp
Если бит закрепления установлен для файла или каталога, а для других категорий (не являющихся владельцами пользователей и групп) не установлен бит выполнения, то он обозначается заглавной буквой T (вместо того, что в противном случае было бы - ):
# ls -l test -rw-r--r-- 1 root anygroup 0 10 нояб. 12:57 test # chmod +t test ; ls -l test -rw-r--rT 1 root anygroup 0 10 нояб. 12:57 test
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )