Книга: Linux программирование в примерах
11.5.2. Каталоги и «липкий» бит
11.5.2. Каталоги и «липкий» бит
«Шерман, установите машину времени для 1976 г.»
«Липкий» бит ведет начало от версий Unix для PDP-11, он использовался с обычными исполняемыми файлами[119]. Этот бит использовался с программами, которые предназначались для интенсивного использования, такими, как оболочка и редактор. Когда у программы был установлен этот бит, ядро хранило копию исполняемого кода программы на устройстве подкачки, из которого ее можно было быстро загрузить в память для повторного использования. (Загрузка из файловой системы занимает больше времени образ на устройстве подкачки хранился в смежных дисковых блоках, тогда как образ в файловой системе мог быть разбросан по всему диску). Исполняемые образы были «приклеены» к устройству подкачки, отсюда и название.
Таким образом, даже если программа в настоящее время не использовалась, предполагалось, что она вскоре могла быть использована другим пользователем, поэтому она могла быть быстро загружена.
В современных системах значительно более быстрые дисковое оборудование и память, чем в давнишней PDP-11. Они используют также методику, называемую подкачка по требованию, для загрузки в память лишь тех частей исполняемой программы, которые выполняются. Таким образом, сегодня «липкий» бит обычных исполняемых файлов не служит никаким целям и на самом деле ни на что не влияет.
Однако, в разделе 1.1.2 «Каталоги и имена файлов» мы упомянули, что «липкий» бит в каталоге, запись в который в других отношениях разрешена, предотвращает удаление файлов из этого каталога и их переименование любым пользователем, кроме владельца файла или root
. Вот пример:
$ ls -ld /tmp /* Показать права доступа к /tmp */
drwxrwxrwt 19 root root 4096 Oct 20 14:04 /tmp
$ cd /tmp /* Перейти туда */
$ echo this is my file > arnolds-file /* Создать файл */
$ ls -l arnolds-file /* Показать его права доступа */
-rw-r--r-- 1 arnold devel 16 Oct 20 14:14 arnolds-file
$ su - miriam /* Смена пользователя */
Password:
$ cd /tmp /* Перейти в /tmp */
$ rm arnolds-file /* Попытка удаления файла */
rm: remove write-protected regular file 'arnolds-file'? y
/* rm предупреждает */
rm: cannot remove 'arnolds-file': Operation not permitted
/* Ядро запрещает удаление */
Основным назначением этой особенности является как раз использование в таких каталогах, как /tmp
, куда хотят помещать свои файлы множество пользователей. С одной стороны, каталог должен иметь права записи для всех, чтобы каждый мог создавать там свои файлы. С другой стороны, раз запись разрешена для всех, любой пользователь может удалять файлы всех остальных пользователей! «Липкий» бит каталога красиво решает эту проблему. Для добавления к файлу или каталогу «липкого» бита используйте 'chmod +t
':
$ mkdir mytmp /* Создать каталог */
$ chmod a+wxt mytmp /* Добавить права записи для всех и «липкий» бит */
$ ls -ld mytmp /* Проверить результат */
drwxrwxrwt 2 arnold devel 4096 Oct 20 14:23 mytmp
В заключение, обратите внимание, что владелец каталога также может удалить файлы, даже если они не принадлежат ему.
- 11.5. Установка дополнительных битов доступа для каталогов
- Ничего, кроме правды: поведение потребителей
- Как я нашла «правильных» потребителей, когда искала «неправильных»
- Проблемы потребителя
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений
- Новый винчестер издает странный звук во время работы. Он не похож на тот, с которым работал старый диск. Это нормально и...
- 4.4.3.6. Дебиторская задолженность по срокам
- Если я куплю 64-битный процессор, будут ли у меня работать программы, которые были разработаны специально для 32-битных ...
- Решил сделать дефрагментацию дисков, выполнил анализ диска C:. На рисунке увидел, что зеленый сектор разбит на 18 неболь...
- Какие программы могут изменять битрейт в МР3-файлах, например с 256 Кбит
- 12.5. Чтение «битых» компакт-дисков
- Маркетинг 3.0: от продуктов к потребителям и далее – к человеческой душе