книги хакеры / журнал хакер / 127_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
||||||
P |
|
|
|
|
|
NOW! |
o |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
.c |
|
|
|
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ДВЕРАЗНЫЕГРАФИЧЕСКИЕТЕМЫGRUB2
системы меню. Они могут коренным образом отличаться друг от друга. Загрузчик стал гораздо умнее: конфигурационный файл /boot/grub/grub.cfg теперь содержит прямое упоминание о том, что вместо его ручного редактирования следует воспользоваться командой update-grub. Команда сама найдет все установленные операционные системы и подсобные самодостаточные утилиты (memtest86, например) и добавит их в конфигурационный файл.
В новой версии код загрузчика разбит на множество модулей, которые могут быть загружены в любой момент. Stage 1.5 (второй компонент бутлоадера, располагающийся в начале файловой системы), наконец, остался в прошлом, благодаря чему grub стал более гибким и устойчивым к сбоям.
ОСОБОЕ МНЕНИЕ РАЗРАБОТЧИКОВ
DEBIAN
В отличие от BSD-систем, большинство компонентов которых развивает одна команда разработчиков, дистрибутивы Linux держатся на кирпичиках, созданных независимыми командами. Дворец, именуемый «операционная система Linux», построен огромным количеством людей, и каждый из них имеет собственное представление об удобстве, стиле и подходе к написанию приложений. Такая ситуация доставляет множество проблем создателям дистрибутивов, но зато оставляет право выбора (не нравится — приготовь сам). Разработчики дистрибутива Debian воспользовались этим правом, чтобы заменить один из главных компонентов ОС Linux — стандартную библиотеку языка Си.
Это может показаться странным, но мантейнеры наиважнейшего компонента ОС Linux, библиотеки glibc (GNU C Library), умудрились довести свою разработку до такого состояния, что недовольным пришлось создать собственную группу поддержки их продукта. Стартовавший совсем недавно проект eglibc занялся поддержкой особой версии glibc, которая бы не только решала проблемы сопровождения библиотеки, но и позволяла использовать ее во встраиваемых системах. Проект был быстро взят на вооружение мантейнерами Debian. Их аргументы были более чем весомы:
• Более открытое сообщество разработчиков.
•Развивающаяся стабильная ветка, в которой регулярно происходит исправление ошибок (в случае с glibc разработчикам дистрибутивов приходится поддерживать собственные ветки библиотеки, содержащие багфиксы).
•Поддержка встраиваемых систем (glibc ориентирована на десктопы и серверы).
•Поддержка множества командных интерпретаторов (glibc поддерживает только bash).
•Возможность сборки библиотеки с оптимизацией по размеру (флаг gcc ‘-Os’).
•Гибкая система настройки, позволяющая исключить ненужные компоненты библиотеки.
Библиотека eglibc полностью бинарно совместима с glibc и уже используется другим известным проектом
OpenWrt (openwrt.org).
БОРЬБА ЗА БЕЗОПАСНОСТЬ
В начале 2006 года компания Novell анонсировала новую систему создания политик безопасности для приложений. Проект получил имя AppArmor и был нацелен на тех пользователей и системных администраторов, которым требовалась более удобная и простая
всопровождении альтернатива SELinux. Однако, к несчастью компании, AppArmor не смог составить достойной конкуренции SELinux, и Novell пришлось отказаться от применения новой разработки в своих дистрибутивах.
Провал AppArmor не был вызван головотяпством маркетологов Novell. Причины неудачи носили чисто технический характер. Одной из них был неэффективный, по мнению специалистов, способ привязки политик безопасности к файловому пути (а не к объекту, как это сделано в SELinux). Другая проблема — костыли
вкоде, которые пришлось нагородить, потому что механизм LSM (Linux Security Modules) не предусмат-
ривал возможности привязки действий по обеспечению ограничений приложения к файловому пути. Мантейнеры Linux-ядра обозвали присланные Novell патчи кашей, которую просто некошерно включать в основной код.
Несмотря на все это, идея привязки политик безопасности к файловому пути была слишком лакомым кусочком, чтобы кто-то другой не заинтересовался ей
INFO |
info
•Несмотрянавсе достоинства иуникальныечерты,
файловаясистема ext4 — недолгосрочноерешение, алишь промежуточныйшаг напутикbtrfs, файловойсистеменового поколения, которая должнастатьофициальнойФСLinux черезнескольколет.
•Врамкахакциипо защитеавстралийскогоТасманского Дьяволаотвымирания, Linux-ядровер- сии2.6.29 получило новыйлоготип, накоторыйтыможешьполюбоваться, открыв файлDocumentation/ logo.svg.
XÀÊÅÐ 07 /127/ 09 |
079 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|
|
|||
|
|
|
|
|
BUY |
>>m |
|
|
|
||||
w |
Click |
to |
|
|
|
|
unixoid |
|
|
||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
||
|
|
|
df |
|
|
n |
e |
|
|
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
КРИТИКА |
EXT4 |
|
|
МИГРИРУЕМ |
|
|
|||||||
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
||||||||||||
|
|
Многочисленные техники, направленные на увеличение произ- |
|
|
|
НАEXT4FS |
|
|
||||||||
|
|
|
водительности новой файловой системы, сыграли злую шутку с ее |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
создателями. Резкая критика обрушилась в их адрес после вклю- |
|
|
Сейчас мы разберемся, как перейти на ext4 без потери |
данных. |
|
|
|||||||
|
|
|
чения поддержки ext4 в дистрибутив Ubuntu. Суть проблемы за- |
|
|
Сразу должен предупредить: после выполнения приведенных |
|
|
||||||||
|
|
|
|
|
|
|
||||||||||
|
|
|
ключалась в следующем: благодаря отложенному распределению |
|
|
действий ext3-раздел больше нельзя будет смонтировать как |
|
|
||||||||
|
|
|
и увеличению периода сброса данных на диск, между созданием |
|
|
ext3 — только как ext4! Открой терминал и набери: |
|
|
||||||||
|
|
|
нового файла и его фактической записью на диск могло проходить |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
до 150 секунд. Если в течение этого периода происходило отклю |
- |
|
|
|
# tune2fs -O extents,uninit_bg,dir_index /dev/èìÿ_óñò- |
|
|
||||||
|
|
|
чение питания компа, файл бесследно исчезал. Разработчики |
|
|
|
ройства |
|
|
|
|
|
|
|
||
|
|
|
ext4 сняли с себя ответственность, сказав, что подобным образом |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
ведет себя любая современная ФС (XFS, Reiser4), а пинать следует |
|
|
На момент ввода этой команды |
устройство |
должно быть размон- |
|
|
||||||
|
|
|
разработчиков приложений, которые не заботятся о выполнении |
|
|
тировано. Если требуется |
преобразовать |
корневую файловую |
|
|
||||||
|
|
|
системного вызова sync() после записи важных данных. В пример |
|
|
систему в ext4, то команду следует вводить с LiveCD. |
|
|
||||||||
|
|
|
был поставлен редактор emacs, который никогда не теряет файлы |
|
|
После этого проверим файловую систему: |
|
|
||||||||
|
|
|
íà ext4. |
|
|
# fsck -pf /dev/имя_устройства |
|
|
||||||||
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
Монтирование производится следующим образом: |
|
|
|
||||
|
|
|
|
|
|
|
|
|
# mount -t ext4 /dev/имя_устройства /точка_монтирования |
|
|
|||||
|
|
|
|
|
|
|
|
|
# mount -t ext4 /dev/disk/by-uuid/UUID-устройства /точ- |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
ка_монтирования |
|
|
|||||
|
|
|
|
|
|
|
|
|
Если раздел автоматически монтируется через /etc/fstab, не |
|
|
|||||
|
|
|
|
|
|
|
|
|
забудь исправить файловую систему на ext4: |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ECLIPS-ПЛАГИНДЛЯРЕДАКТИРОВАНИЯПОЛИТИК
TOMOYO LINUX
КОНФИГУРАТОРПОЛИТИКTOMOYO LINUX
и не попытался реализовать вновь. Одними из таких людей стали разработчики MAC-системы TOMOYO Linux (elinux.org/TomoyoLinux).
Пройдя долгий и тернистый путь, сопровождаемый множеством переработок дизайна, они добились-таки включения своей разработки в ядро версии 2.6.30. Набор модулей ядра TOMOYO Linux очень похож на AppArmor, но концептуально более изящен. Он прост
080
UUID=UUID-раздела |
/точка ext4 |
|
defaults,errors=remount-ro,relatime |
0 1 |
Если ты изменил тип файловой системы корневого раздела, то необходимо отредактировать файл /boot/grub/menu.lst и добавить опцию «rootfstype=ext4» в список параметров ядра. Например:
title Linux root (hd0,1)
kernel /boot/vmlinuz-2.6.28.1 root=UUID=879f797c- 944d-4c28-a720-249730705714 ro quiet splash rootfstype=ext4
initrd /boot/initrd.img-2.6.28.1 quiet
Денис Колисниченко (dhsilabs@mail.ru, www.dkws.org.ua), автор многих книг и статей, посвященных Linux.
в использовании и поддерживает режим обучения, однако пока не представляет той гибкости, которой обладает SELinux.
Другая система обеспечения безопасности, принятая в ядро версии 2.6.30, была разработана сотрудниками IBM. Она представляет собой инфраструктуру для контроля целостности исполняемых файлов. Ее следует использовать совместно с SELinux или Slim (Simple Linux Integrity Module — простая реализация песочницы, используемая в серверном ПО IBM).
Система предоставляет набор средств, которые позволяют привязать цифровую подпись и контрольную сумму к любому файлу. Если злоумышленник получит прямой доступ к машине и сможет воспользоваться LiveCD для модификации файлов основной системы, система заблокирует доступ к измененным файлам после следующей загрузки.z
XÀÊÅÐ 07 /127/ 09
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|||
P |
|
|
|
|
|
NOW! |
o |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|
|
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
BUY |
>>m |
|
||||
|
w |
Click |
to |
|
|
|
|
unixoid |
||||
|
|
|
|
|
|
|||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
||
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INODE |
... |
БЛОКИ С ПРЯМОЙ
АДРЕСАЦИЕЙ
БЛОКИ С КОСВЕННОЙ
АДРЕСАЦИЕЙ
БЛОКИ С ДВОЙНОЙ
КОСВЕННОЙ АДРЕСАЦИЕЙ
МАКСИМ «HATCHET» ПОЛЕВОЙ
/MAKS.HATCHET@YANDEX.RU/
ОПЕРАЦИЯ «РЕИНКАРНАЦИЯ»
РучноевосстановлениеданныхвLinux
Восстановитьудаленныефайлыспомощьюспециальныхпрограммможетдажеучительинформатики, авотпроделатьтуже операциюпутемручногоредактированияуправляющихструктур файловойсистемыспособендалеконекаждый. Вэкстремальной ситуациинужногософтаможетнеоказатьсяподрукой.
Придетсяполагатьсятольконасебяисобственныезнания.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
>> unixoid
Сегоднямыпоговориморучномвосстановле- |
# tune2fs -l /dev/hda1 |
Таблицапредставляетсобоймассивструктур |
||
ниифайловсфайловыхсистемext2 иext3. Сра- |
|
типаext2_inode, размеркоторогозадается |
||
|
||||
зухочутебяпредупредить, чтоничегосложного |
Тыувидишьмассуинформации, отражающей |
вовремясозданияфайловойсистемыине |
||
вэтомнет. Дизайнофициальныхфайловыхсис- |
текущеесостояниефайловойсистемы, атакже |
изменяетсясовременем(смотриполе«Inode |
||
темLinux оченьпростипонятендаженовичку. |
значения, заданныеприеесозданииинеизме- |
Count» супер-блока). Каждыйэлементэтого |
||
Все, чтооттебяпотребуется— внимательность |
няемыесовременем. Одноизтакихзначений |
массиваописываетодинфайлихраниттакую |
||
иголованаплечах. |
— «Block size», которое, скореевсего, будет |
информацию, кактип(обычный, каталог, ссылка |
||
Следующиедваразделапосвященытому, как |
равно4096, тоесть4 Кб. Эторазмеродного |
ит.д.), схемаразмещениянадиске, логический/ |
||
организованохранениефайловвext2/3, ичто |
блокафайловойсистемы, базовойнеделимой |
физическийразмер, дата/времясоздания/ |
||
происходит, когдапользовательвыполняет |
единицыхранимойинформации. Все, что |
модификации/последнегодоступа/удаления, |
||
командуrm. Последующиеразделыописывают |
находитсявФС, разбитонаогромноеколичест- |
количествоссылокнафайлиправадоступа. |
||
техникувосстановления, основаннуюнаинфор- |
вотакихблоков, идажееслиразмерфайла |
Структураext2_inode, выступающаявроли |
||
мациипервыхдвух. |
меньшеразмераблока, дляегохранениябудет |
элементамассива, определенавфайлеsource/ |
||
АНАТОМИЯФАЙЛОВОЙ |
использованцелыйблок, абольшиефайлы |
include/linux/ext2_fs.h ивыглядиттак: |
||
могутзаниматьсотнитысячблоков. Общееко- |
|
|
|
|
СИСТЕМЫEXT2/EXT3 |
личествоблоковфайловойсистемыпрописано |
|
Структураinode |
|
Вначалеразделарасположенboot-сектордли- |
вполе«Block count», аколичествосвободных |
|
struct ext2_inode { |
|
ной1024 байта. Ониспользуетсянекоторыми |
— во«Free blocks». |
|
/* Режим доступа к файлу */ |
|
загрузчикамидляхранениясвоейвторойчасти |
Сразузасупер-блокомследуютдескрипторы |
|
__u16 i_mode; |
|
(например, Grub записываеттудакодStage 1.5). |
группикартысвободногопространства(битма- |
|
/* UID владельца файла */ |
|
Далееследуетсупер-блок, вкоторомхранится |
пы), накоторыхмынебудемостанавливаться. |
|
__u16 i_uid; |
|
ключеваяинформацияоструктурефайловой |
Авотрасположеннаясразузанимиinode- |
|
/* Размер файла в байтах */ |
|
системы(своегородаглавныйконфиг). Чтобы |
таблицавызываетособыйинтерес, потому |
|
__u32 i_size; |
|
прочитатьинформациюсупер-блока, запусти |
какименноонаявляетсяцентрализованным |
|
/* Время последнего доступа */ |
|
следующуюкоманду: |
хранилищемвсейинформацииокаждомфайле. |
|
__u32 i_atime; |
|
|
|
|
|
|
082 |
XÀÊÅÐ 07 /127/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
|
|
|
|
разделу. Этохорошодляустойчивостифайлак |
|
|
|
|
|
|
|
|
|
|
разрушению, ноплохосточкизренияпростоты |
|
|
|
|
|
|
|
|
|
|
егопоследующеговосстановления. |
|
|
|
|
|
|
|
|
|
|
Именафайловхранятсявкаталогах, которые |
|
|
|
|
|
|
|
|
|
|
насамомделеестьнечтоиное, какфайлы |
|
|
|
|
|
|
|
|
|
|
специальноготипа. Вкаталогзаписанапосле- |
|
|
|
|
|
|
|
|
|
|
довательностьструктуртипаext2_dir_entry_2 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
(илиext2_dir_entry встарыхядрах), которая |
|
|
|
|
|
|
|
|
|
|
выглядитследующимобразом: |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СТРУКТУРАКАТАЛОГОВОЙЗАПИСИ |
|
|
|
|
|
|
|
|
|
|
struct ext2_dir_entry_2 { |
|
|
|
|
|
|
|
|
|
|
/* Ссылка на inode */ |
|
|
|
|
|
|
|
|
|
|
__u32 inode; |
|
|
|
|
|
|
|
|
|
|
/* Длина данной записи */ |
|
|
|
|
|
|
|
|
|
|
__u16 rec_len; |
|
|
|
|
|
|
|
|
|
|
/* Длина имени файла */ |
|
|
|
|
|
|
|
|
|
|
__u8 name_len; |
|
|
|
|
|
|
|
|
|
|
/* Тип файла */ |
|
|
|
|
|
|
|
|
|
|
__u8 file_type; |
|
|
|
|
|
|
|
|
|
|
/* Имя файла */ |
|
|
|
|
|
|
|
|
|
|
char name [EXT2_NAME_LEN]; |
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
#define EXT2_NAME_LEN 255 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Когдаприложениевыполняетсистемныйвы- |
|
|
|
|
|
|
|
|
|
|
зовopen() илиcreat() длясозданияфайла, ядро |
|
|
ДАМПСУПЕР-БЛОКАСПОМОЩЬЮDUMPE2FS |
заполняетсвободныйinode вinode-таблице |
||||||||
|
новымиданными. Затемдобавляетвтекущий |
|||||||||
|
|
|
|
|
|
|
|
|
каталогновуюзаписьтипаext2_dir_entry_2, |
|
|
|
|
|
|
|
|
|
|
записываетвнееимяфайла(полеname), его |
|
|
|
|
|
|
|
|
|
|
||
|
/* Время создания */ |
|
|
#define EXT2_IND_BLOCK EXT2_DIR_ |
|
тип(file_type) ипомещаетссылкунасозданный |
||||
|
__u32 i_ctime; |
|
|
BLOCKS |
|
inode водноименноеполе. Витоге, пройдя |
||||
|
/* Время модификации */ |
|
|
#define EXT2_DIND_BLOCK (EXT2_IND_ |
|
поцепочкеструктуримассивоввобратном |
||||
|
__u32 i_mtime; |
|
|
BLOCK + 1) |
|
порядке, можнобыстронайтиданные, закреп- |
||||
|
/* Время удаления */ |
|
|
#define EXT2_TIND_BLOCK (EXT2_DIND_ |
|
ленныезафайлом— покаонжив. |
||||
|
__u32 i_dtime; |
|
|
BLOCK + 1) |
|
КАКПРОИСХОДИТ |
||||
|
/* GID группы */ |
|
|
#define EXT2_N_BLOCKS (EXT2_TIND_ |
|
|||||
|
__u16 i_gid; |
|
|
BLOCK + 1) |
|
УДАЛЕНИЕФАЙЛА |
||||
|
/* Количество ссылок на файл (0 — |
|
|
|
|
|
|
Вобщихчертахпроцедураудаления(разлин- |
||
|
|
|
|
|||||||
|
файл удален) */ |
|
|
|
Ссылкиназакрепленныезафайломблоки |
ковки) файлавыглядитследующимобразом. |
||||
|
__u16 i_links_count; |
|
|
хранятсявмассивеi_block, первые12 элемен- |
Драйверфайловойсистемыопределяет |
|||||
|
/* Количество блоков, принадлежа- |
|
|
товкоторогопредставляютсобой32-битные |
каталог, закоторымзакрепленудаляемыйфайл |
|||||
|
щих файлу */ |
|
|
|
адресапервых12 блоковфайла. Ихназывают |
инаходитinode файлавпоследовательности |
||||
|
__u32 i_blocks; |
|
|
блокамиспрямойадресацией. Тринадцатый |
структуртипаext2_dir_entry_2. Послечего |
|||||
|
/* Разные флаги */ |
|
|
|
элементмассивахранитссылкунаблок, храня- |
отыскиваетнужныйinode вinode-таблицеи |
||||
|
__u32 i_flags; |
|
|
щийадресаследующихблоковданных(«блок |
уменьшаетегосчетчикссылок(i_links_count) |
|||||
|
/* Зависимые от ОС значения */ |
|
|
косвеннойадресации»). Четырнадцатый |
наединицу. Еслисчетчикнестановитсяравен |
|||||
|
union osd1; |
|
|
элементмассива— ссылканаблок, хранящий |
нулю, удалениянепроисходит(ссылканафайл |
|||||
|
/* Ссылки на блоки */ |
|
|
|
ссылкинаблокикосвеннойадресации(«двой- |
моглаостатьсявдругомкаталоге); впротивном |
||||
|
__u32 i_block [EXT2_N_BLOCKS]; |
|
|
нойблоккосвеннойадресации»). И, наконец, |
случае— пишитеписьма, драйверприступает |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
/* Версия файла (используется |
|
|
в15 элементемассивахранитсяссылкана |
кгрязнойработе. Всепринадлежащиефайлу |
|||||
|
NFS) */ |
|
|
блок, содержащийссылкинаблокидвойной |
блокипомечаютсякакнеиспользуемыевкарте |
|||||
|
__u32 i_version; |
|
|
косвеннойадресации. |
свободногопространства. Обновляетсяполе |
|||||
|
/* ACL-атрибуты файла */ |
|
|
Такаявотпутаная(ноэффективная) древовид- |
времениудаления, иinode освобождается. В |
|||||
|
__u32 i_file_acl; |
|
|
наясхемаразмещенияданныхвфайловых |
концеконцов, драйверобнуляетполеinode |
|||||
|
/* ACL-атрибуты каталога (наследу- |
|
|
системахext2 иext3. Приэтомблокикосвенной |
файлавфайлекаталогаиувеличиваетдлину |
|||||
|
ются во время создания файла) */ |
|
|
адресациинеобязательнодолжныследо- |
предыдущейзаписинаразмерудаляемой |
|||||
|
__u32 i_dir_acl; |
|
|
ватьдругзадругом, дляфайловойсистемы |
(именнодляэтогонужнополеrec_len). |
|||||
|
/* Положение последнего фрагмента */ |
|
|
— этоточнотакиежеблокиданных. Дляих |
Нетруднозаметить, чтофактическогоудаления |
|||||
|
__u32 i_faddr; |
|
|
распределенияиспользуетсястандартный |
информациинепроисходит. Болеетого, inode |
|||||
|
/* Зависимые от ОС значения */ |
|
|
механизм, которыйможетвернутьссылкуна |
файлаостаетсянаместеипродолжаетхранить |
|||||
|
union osd2; |
|
|
блок, расположенныйвлюбойточкеразде- |
всюинформациюобудаленномфайле. Ссылки |
|||||
|
}; |
|
|
|
ла. Врезультатесхемаразмещенияданных |
наблокиданныхтакжеостаютсянаместе, но |
||||
|
#define EXT2_DIR_BLOCKS 12 |
|
|
файламожетоказатьсяразбросаннойповсему |
самиблокипомечаютсякакнеиспользуемые, |
|||||
|
|
|
|
|
|
|
|
|
|
|
XÀÊÅÐ 07 /127/ 09 |
083 |