Jump to content

Липкий бит

В вычислительной технике липкий бит пользователя права доступа — это флаг , который может быть назначен файлам и каталогам в Unix-подобных системах.

Есть два определения: одно для файлов, другое для каталогов.

Для файлов, особенно исполняемых файлов, суперпользователь может пометить их как сохраняемые в основной памяти, даже когда необходимость в них отпадает, чтобы свести к минимуму замену, которая может произойти, когда возникнет другая необходимость, и теперь файл придется перезагружать из относительно медленной вторичной памяти. [1] Эта функция устарела из-за оптимизации подкачки.

Для каталогов, когда установлен липкий бит каталога, файловая система обрабатывает файлы в таких каталогах особым образом, поэтому только владелец файла, владелец каталога или пользователь root могут переименовать или удалить файл. Без установленного липкого бита любой пользователь с разрешениями на запись и выполнение для каталога может переименовывать или удалять содержащиеся в нем файлы, независимо от владельца файла. Обычно это устанавливается на /tmp каталог , чтобы обычные пользователи не могли удалять или перемещать файлы других пользователей.

Современная функция липкого бита относится к каталогам и защищает каталоги и их содержимое от взлома со стороны лиц, не являющихся владельцами; это встречается в большинстве современных Unix-подобных систем. Файлы в общем каталоге, например /tmp принадлежат отдельным владельцам, и лица, не являющиеся владельцами, не могут удалять, перезаписывать или переименовывать их.

Бит липкости был введен в пятом издании Unix (в 1974 году) для использования с чистыми исполняемыми файлами . [2] Если он установлен, он дает указание операционной системе сохранять текстовый сегмент программы в пространстве подкачки после выхода из процесса . Это ускоряет последующие выполнения, позволяя ядру выполнить одну операцию по перемещению программы из подкачки в реальную память. Таким образом, часто используемые программы, такие как редакторы, будут загружаться заметно быстрее. Одной заметной проблемой с «прилипшими» программами была замена исполняемого файла (например, во время установки исправлений ); для этого необходимо удалить липкий бит из исполняемого файла, выполнить программу и выйти, чтобы очистить кеш, заменить двоичный исполняемый файл, а затем восстановить липкий бит.

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

Использование

[ редактировать ]

Чаще всего липкий бит используется в каталогах, находящихся в файловых системах Unix-подобных операционных систем. Когда установлен бит липкости каталога, файловая система обращается с файлами в таких каталогах особым образом, поэтому только владелец файла, владелец каталога или root может переименовать или удалить файл. Без установленного липкого бита любой пользователь с разрешениями на запись и выполнение для каталога может переименовывать или удалять содержащиеся в нем файлы, независимо от владельца файла. Обычно это устанавливается на /tmp каталог , чтобы обычные пользователи не могли удалять или перемещать файлы других пользователей. Эта функция была представлена ​​в версии 4.3BSD в 1986 году и сегодня присутствует в большинстве современных Unix-подобных систем.

когда бит липкости установлен для неисполняемых файлов : эти файлы при доступе не будут кэшироваться ядром Кроме того, Solaris (начиная с Solaris 2.5) определяет особое поведение , . Обычно это устанавливается для файлов подкачки , чтобы предотвратить доступ к файлу и удаление более важных данных из системного кэша. Он также иногда используется для сравнительных тестов. [ нужна ссылка ]

Бит липкости также устанавливается программой автоматического монтирования, чтобы указать, что файл еще не смонтирован. Это позволяет таким программам, как ls, игнорировать несмонтированные удаленные файлы.

Выдержки из справочных страниц о влиянии липкого бита на каталоги и файлы.
Операционная система Каталоги Файлы
АИКС 5.2 [3] указывает, что только владельцы файлов могут связывать или отключать файлы в указанном каталоге. устанавливает атрибут save-text.
Солярис 11 [4] Если каталог доступен для записи и в нем установлен S_ISVTX (бит закрепления), файлы в этом каталоге можно удалить или переименовать только в том случае, если выполняется одно или несколько из следующих условий (см. unlink(2) и rename(2)): пользователь владеет файл, каталог принадлежит пользователю, файл доступен для записи пользователю, пользователь является привилегированным пользователем. Если обычный файл не является исполняемым и для него установлен S_ISVTX, предполагается, что файл является файлом подкачки. В этом случае страничный кэш системы не будет использоваться для хранения данных файла. Если [...] установлено для любого другого файла, результаты не определены.
HP-UX [5] Если [...] установлено для каталога, непривилегированный пользователь не сможет удалять или переименовывать чужие файлы в этом каталоге. [...] не позволяет системе отказаться от образа пространства подкачки текстовой части файла, когда ее последний пользователь завершает работу. Затем, когда следующий пользователь файла выполнит его, текст не нужно будет читать из файловой системы, а можно просто заменить его, что сэкономит время.
Линукс [6] [7] Если [...] установлено в каталоге, файлы в этом каталоге могут быть отсоединены или переименованы только пользователем root, владельцем каталога или владельцем файла. fs.protected_fifos, fs.protected_regular и fs.protected_symlinks Системные файлы дополнительно ограничивают создание FIFO, создание обычных файлов и следование символическим ссылкам соответственно внутри каталогов с установленным липким битом. Ядро Linux игнорирует липкий бит в файлах.
FreeBSD [8] Если [...] установлено в каталоге, непривилегированный пользователь не может удалять или переименовывать файлы других пользователей в этом каталоге. Система виртуальных машин FreeBSD полностью игнорирует бит закрепления (S_ISVTX) для исполняемых файлов.
ИРИКС [9] Если [...] установлено в каталоге, то любые файлы, созданные в этом каталоге, будут принимать идентификатор группы каталога, а не идентификатор группы вызывающего процесса. mount(1M) можно использовать для включения этой функции независимо от режима каталога. Если липкий бит S_ISVTX установлен в файле, который является динамическим загрузчиком для исполняемого файла ELF, то при запуске исполняемого файла адресные пространства старого процесса только для чтения будут доступны динамическому загрузчику в новом процессе. Это может значительно сократить время запуска программы. Установка липкого бита в любом другом файле не имеет никакого эффекта.
Mac OS X (Леопард) [10] Каталог, в котором установлен «бит закрепления», становится каталогом, доступным только для [...] добавления, в котором удаление файлов ограничено. Файл в липком каталоге может быть удален или переименован пользователем только в том случае, если у пользователя есть разрешение на запись в каталог и он является владельцем файла, владельцем каталога или суперпользователем. Эту функцию полезно применять к таким каталогам, как /tmp, которые должны быть доступны для публичной записи, но должны отказывать пользователям в лицензии на произвольное удаление или переименование файлов друг друга. Любой пользователь может создать липкий каталог. Бит липкости не влияет на исполняемые файлы. Вся оптимизация того, остаются ли текстовые изображения резидентными в памяти, выполняется системой виртуальной памяти ядра.
NetBSD [11] Каталог, в котором установлен «бит фиксации», становится каталогом, в котором удаление файлов ограничено. Файл в липком каталоге может быть удален или переименован пользователем только в том случае, если у пользователя есть разрешение на запись в каталог и он является владельцем файла, владельцем каталога или суперпользователем. Эту функцию полезно применять к таким каталогам, как /tmp, которые должны быть доступны для публичной записи, но должны отказывать пользователям в лицензии на произвольное удаление или переименование файлов друг друга. NetBSD в настоящее время не обрабатывает обычные файлы, для которых установлен бит липкости, но это поведение может измениться в будущем.
OpenBSD [12] Каталог с установленным «липким битом» накладывает ограничения на удаление файлов: файл в липком каталоге может быть удален или переименован пользователем только в том случае, если у пользователя есть разрешение на запись в каталог и пользователь является владельцем файла. владелец каталога или суперпользователь. Эту функцию полезно применять к таким каталогам, как /tmp, которые должны быть доступны для публичной записи, но должны отказывать пользователям в лицензии на произвольное удаление или переименование файлов друг друга.

Любой пользователь может создать липкий каталог. См. chmod(1) для получения подробной информации об изменении режимов файлов.

Исторически сложилось так, что исполняемый общий файл с установленным битом липкости не удалялся из пространства подкачки сразу после выполнения. Ядро сохранило текстовый сегмент файла для повторного использования в будущем, что позволяет избежать перезагрузки программы. Это уже не так в современных системах; текущая система виртуальной памяти отслеживает недавно использованные исполняемые файлы, что делает липкий бит для файлов ненужным. Бит липкости все еще можно установить для файлов, но без какого-либо эффекта.

Только суперпользователь может установить липкий бит для файла, хотя владелец файла может очистить липкий бит.

SCO UnixWare [13] Если каталог доступен для записи и бит закрепления S_ISVTX в нем установлен , процесс может удалять или переименовывать файлы в этом каталоге только в том случае, если выполняется одно или несколько из следующих условий:
  • эффективный идентификатор пользователя процесса такой же, как и идентификатор владельца файла.
  • эффективный идентификатор пользователя процесса такой же, как идентификатор владельца каталога
  • у процесса есть разрешение на запись в файл
  • процесс имеет P_OWNER привилегию
Если в исполняемом файле 0410 a.out установлен бит закрепления (бит режима 01000), операционная система не будет удалять текст программы из области подкачки при завершении последнего пользовательского процесса. Если в исполняемом файле 0413 a.out или ELF установлен бит липкости, операционная система не будет удалять текст программы из памяти при завершении последнего пользовательского процесса. В любом случае, если установлен липкий бит, текст уже будет доступен (либо в области подкачки, либо в памяти), когда следующий пользователь файла выполнит его, что ускоряет выполнение.

Бит липкости можно установить с помощью команды 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 липкий бит представлен либо буквой t , либо T в последнем символе в зависимости от того, бит выполнения для других установлен или нет категорий соответственно. Например, в Solaris 8 /tmp Каталог, в котором по умолчанию есть как остальные бит выполнения, так и набор липких битов, отображается как:

$ ls -ld /tmp
drwxrwxrwt   4 root     sys          485 Nov 10 06:01 /tmp

Если липкий бит установлен в файле или каталоге без установленного бита выполнения для других категорий (не-владельцев пользователя и не-владельцев группы), он обозначается заглавной буквой T (заменяя то, что в противном случае было бы - ). :

# ls -l test
-rw-r--r--   1 root     anygroup          0 Nov 10 12:57 test
# chmod +t test; ls -l test
-rw-r--r-T   1 root     anygroup          0 Nov 10 12:57 test

См. также

[ редактировать ]
  1. ^ Зинц, Уолтер (февраль 1984 г.). «Соединение Unix: что такое липкий бит?». ТВЕРДАЯ КОПИЯ . п. 130.
  2. ^ Штайнхаузер, Мартин Оливер (2012). Компьютерное моделирование в физике и технике . Де Грютер. ISBN  978-3-1102-5590-4 .
  3. ^ «Архивная копия man-страницы chmod для AIX 5.2» . Архивировано из оригинала 18 января 2005 г. Проверено 19 января 2009 г.
  4. ^ «Сводка — раздел 2 страниц руководства: Системные вызовы» . Документы.oracle.com. 01.11.2011 . Проверено 10 апреля 2014 г.
  5. ^ «HPUX chmod[2]» . Архивировано из оригинала 20 ноября 2007 года . Проверено 29 февраля 2008 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  6. ^ «chmod(1) — страница руководства Linux» . Man7.org . Проверено 10 апреля 2014 г.
  7. ^ «proc(5) — страница руководства Linux» . Man7.org . Проверено 4 марта 2022 г.
  8. ^ «chmod — FreeBSD» . Nixdoc.net. 04.06.1993 . Проверено 10 апреля 2014 г.
  9. ^ "chmod - IRIX/стандарт/" . Nixdoc.net . Проверено 10 апреля 2014 г.
  10. ^ «Библиотека разработчиков Mac» . Разработчик.apple.com . Проверено 10 апреля 2014 г.
  11. ^ «sticky.7 — Страницы руководства NetBSD» . Netbsd.gw.com. 16 мая 2021 г. Проверено 16 мая 2021 г.
  12. ^ «Страницы руководства: прикреплены» . Openbsd.org. 14 февраля 2014 г. Проверено 4 февраля 2018 г.
  13. ^ "чмод(2)" . Uw714doc.sco.com. 25 апреля 2004 г. Проверено 10 апреля 2014 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dc7828dd74fff33475d74c972d2c34b3__1703774940
URL1:https://arc.ask3.ru/arc/aa/dc/b3/dc7828dd74fff33475d74c972d2c34b3.html
Заголовок, (Title) документа по адресу, URL1:
Sticky bit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)