stringtranslate.com

Липкий кусочек

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

Смотрите также

Ссылки

  1. ^ Зинц, Уолтер (февраль 1984 г.). «Связь с Unix: что такое липкий бит?». ПЕЧАТНАЯ КОПИЯ . стр. 130.
  2. ^ Штайнхаузер, Мартин Оливер (2012). Компьютерное моделирование в физике и технике . Де Грюйтер. ISBN 978-3-1102-5590-4.
  3. ^ "Архивная копия страницы руководства chmod под AIX 5.2". Архивировано из оригинала 2005-01-18 . Получено 2009-01-19 .
  4. ^ "Синопсис - раздел 2 man-страниц: Системные вызовы". Docs.oracle.com. 2011-11-01 . Получено 2014-04-10 .
  5. ^ "HPUX chmod[2]". Архивировано из оригинала 20 ноября 2007 г. Получено 29 февраля 2008 г.{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  6. ^ "chmod(1) - страница руководства Linux". Man7.org . Получено 2014-04-10 .
  7. ^ "proc(5) - Страница руководства Linux". Man7.org . Получено 2022-03-04 .
  8. ^ "chmod - FreeBSD". Nixdoc.net. 1993-06-04 . Получено 2014-04-10 .
  9. ^ "chmod - IRIX/standard/". Nixdoc.net . Получено 2014-04-10 .
  10. ^ "Библиотека разработчиков Mac". Developer.apple.com . Получено 10 апреля 2014 г. .
  11. ^ "sticky.7 - Страницы руководства NetBSD". Netbsd.gw.com. 2021-05-16 . Получено 2021-05-16 .
  12. ^ "Страницы руководства: липкие". Openbsd.org. 2014-02-14 . Получено 2018-02-04 .
  13. ^ "chmod(2)". Uw714doc.sco.com. 2004-04-25 . Получено 2014-04-10 .

Внешние ссылки