Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux: ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 24

Автор ДСнис ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ

ΠŸΡ€ΠΈ установкС этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π½Π΅Π΅ сразу устанавливаСтся ΠΏΡ€Π°Π²ΠΎ SUID, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дискСты. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запускаСт Π΅Π΅ для форматирования дискСты. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π° root, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ дискСту ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

А Ссли ΠΎΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ошибкС пСрСполнСния стСка (Ρ‚Π°ΠΊΠΈΠ΅ случаи ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈΡΡŒ)? Π’ΠΎΠ³Π΄Π° Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠΈΠΉ Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€Π°Π²Π° root! НСквалифицированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root β€” это Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ просто ΠΊΡ€Π°Ρ… систСмы. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ опасности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования ΠΏΡ€Π°Π² SUID ΠΈ SGID.

БправСдливости Ρ€Π°Π΄ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ряд систСмных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π² частности, Π΄Π΅ΠΌΠΎΠ½ установлСния ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-соСдинСния pppd) разрабатывался с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€Π°Π² SUID ΠΈ SGID, ΠΈ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ максимально Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ, хотя ΠΏΠΎΠ»Π½ΠΎΠΉ увСрСнности Π² этом Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΎ SUID Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самых ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях.

Π― позволю сСбС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ нСсколько Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π°Π² доступа SUID ΠΈ SGID:

1. Π›ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Π½Π° сСрвСрС, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ИспользованиС ΠΏΡ€Π°Π²Π° доступа SUID Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° своСй домашнСй машинС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для установлСния Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ соСдинСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ su.

2. ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ root, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΈΡ… надСТности. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΈΠ· Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ источника, Π»ΡƒΡ‡ΡˆΠ΅ Π΅Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НадСТными источниками ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ сайты ΠΈΠ»ΠΈ FTP-сСрвСры Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² дистрибутивов Linux, Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ нСсанкционированных дСйствий.

3. ΠΠ΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ использованиС SUlD-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Для Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° запись ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, установитС ΠΎΠΏΡ†ΠΈΡŽ nosuid Π² Ρ„Π°ΠΉΠ»Π΅ /etc/fstab.

2.2. Изнанка Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΏΠΎΠ΄ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой понимаСтся внутрСнняя ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ структура, Π·Π°Π²Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° физичСском носитСлС, ΠΈΡ… поиском, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ записью ΠΏΠΎ запросам ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π°ΠΊΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ структуры Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСмСйствС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм строятся ΠΏΠΎ схоТим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ. Π’Π°ΠΊ, DOS/Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму FAT с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ FAT32 ΠΈ VFAT. Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ОБ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Π΅Π΅, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½ΠΎ сСмСйство. Linux ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со мноТСством Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ΠΊΠ°ΠΊ с Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ, ΠΈ с Π΅Ρ‰Π΅ большим ΠΈΡ… количСством ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π₯отя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ срСдства установки Linux Π² Ρ€Π°Π·Π΄Π΅Π» FAT/FAT32 β€” Lin4Win, я Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚.ΠΊ. Π² этом случаС Linux Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ прСдставитСлСм Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм UNIX являСтся «вторая Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ файловая систСма» ext2fs, основная Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ файловая систСма Linux. Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹Ρ…ΠΎΠ΄Π° ядра вСрсии 2.4.16 ΠΎΠ½Π° Π½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ мСсто Β«Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимой с Π½Π΅ΠΉ систСмС ext3fs. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ext3fs, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° устанавливаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ инсталляторами Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных дистрибутивов.

2.2.1. Ѐайловая систСма ext2fs β€” ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΡ†Π° ext3fs

Рассмотрим Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ext2fs.

ЀизичСски ТСсткий диск Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° сСктора Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 512 Π±Π°ΠΉΡ‚. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сСктор дискового Ρ€Π°Π·Π΄Π΅Π»Π° Π² любой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС считаСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ. Π’ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ эта ΠΎΠ±Π»Π°ΡΡ‚ΡŒ содСрТит Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΡƒΡŽ запись β€” Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΏΡ€ΠΈ запускС. На Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… эта ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сСктора ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² логичСскиС Π±Π»ΠΎΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1, 2 ΠΈΠ»ΠΈ 4 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°. ЛогичСский Π±Π»ΠΎΠΊ Π΅ΡΡ‚ΡŒ наимСньшая адрСсуСмая порция Π΄Π°Π½Π½Ρ‹Ρ…: Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π»ΠΎΠΊΠΎΠ². Π‘Π»ΠΎΠΊΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹ Π±Π»ΠΎΠΊΠΎΠ². Π“Ρ€ΡƒΠΏΠΏΡ‹ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π±Π»ΠΎΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, начиная с 1.

Π Π°Π·Π΄Π΅Π» диска, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сформирована файловая систСма ext2fs, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн Ρ‚Π°ΠΊΠΎΠΉ схСмой:

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, примСняСмыС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ext2fs, описаны Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ /usr/include/linux/ext2fs.h.

Π‘ΡƒΠΏΠ΅Ρ€Π±Π»ΠΎΠΊ слуТит Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΉ. Он ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1024 Π±Π°ΠΉΡ‚Π° ΠΈ располагаСтся ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ 1024 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠ½ дублируСтся, Ρ‡Ρ‚ΠΎ позволяСт быстро Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ послС сбоСв.

Π’ супСрблокС опрСдСляСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, максимальноС число Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, объСм свободного пространства ΠΈ содСрТится информация ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ нСзанятыС участки. ΠŸΡ€ΠΈ запускС ОБ супСрблок считываСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ всС измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π²Π½Π°Ρ‡Π°Π»Π΅ находят ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠΏΠΈΠΈ супСрблока, находящСйся Π² ОП, ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° диск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСриодичСски. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ процСссы постоянно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΈ остановС систСмы супСрблок ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записан Π½Π° диск, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ простым Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ питания. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ информация, записанная Π² супСрблокС, окаТСтся Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

Рис. 2.1. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

ПослС супСрблока слСдуСт описаниС (дСскриптор) Π³Ρ€ΡƒΠΏΠΏΡ‹ Π±Π»ΠΎΠΊΠΎΠ². Π₯ранящаяся Π² Π½Π΅ΠΌ информация позволяСт Π½Π°ΠΉΡ‚ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ индСксных дСскрипторов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ индСксных дСскрипторов.

Π‘ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ Π±Π»ΠΎΠΊΠΎΠ² (block bitmap) называСтся структура, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΎΡ‚Π²Π΅Π΄Π΅Π½ Π»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠΎ счСту Π±Π»ΠΎΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ»Ρƒ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ занят. Π­Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° слуТит для поиска свободных Π±Π»ΠΎΠΊΠΎΠ² Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ мСсто ΠΏΠΎΠ΄ Ρ„Π°ΠΉΠ».

Битовая ΠΊΠ°Ρ€Ρ‚Π° индСксных дСскрипторов выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ индСксных дСскрипторов: ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ дСскрипторы заняты.

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ соотвСтствуСт ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ индСксный дСскриптор (inode, i-ΡƒΠ·Π΅Π», ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π»), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ идСнтифицируСтся своим порядковым Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ β€” индСксом Ρ„Π°ΠΉΠ»Π°. Π’ индСксном дСскрипторС хранятся ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… β€” всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°, ΠΊΡ€ΠΎΠΌΠ΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°.

Для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ прСдставляСт собой массив ΠΈΠ· 15 адрСсов Π±Π»ΠΎΠΊΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 12 адрСсов Π² этом массивС ΡΠ²Π»ΡΡŽΡ‚ΡΡ прямыми ссылками Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранятся Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π°. Если Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² 12 Π±Π»ΠΎΠΊΠΎΠ², Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ косвСнной адрСсации. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ адрСс Π² этом массивС являСтся косвСнной ссылкой, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ адрСсом Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится список адрСсов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π°.

Бколько Π±Π»ΠΎΠΊΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ? АдрСс Π±Π»ΠΎΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°, Π±Π»ΠΎΠΊ, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ сказано, β€” 1, 2 ΠΈΠ»ΠΈ 4 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡƒΡ‚Π΅ΠΌ косвСнной адрСсации ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ 256 β€” 1024 Π±Π»ΠΎΠΊΠ°. Π Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊΠΎΠ², считайтС сами.

А Ссли Ρ„Π°ΠΉΠ» Π΅Ρ‰Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅? Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ адрСс Π² массивС-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π±Π»ΠΎΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ косвСнной адрСсации (double indirect block). Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ содСрТит список адрСсов Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, содСрТат списки адрСсов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, послСдний адрСс Π² массивС-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ Π·Π°Π΄Π°Π΅Ρ‚ адрСс Π±Π»ΠΎΠΊΠ° Ρ‚Ρ€ΠΎΠΉΠ½ΠΎΠΉ косвСнной адрСсации, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠ° со списком адрСсов Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ косвСнной адрСсации.

Пока остаСтся нСпонятным, Π³Π΄Π΅ находится имя Ρ„Π°ΠΉΠ»Π°, Ссли Π΅Π³ΠΎ Π½Π΅Ρ‚ Π½ΠΈ срСди Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°, Π½ΠΈ срСди Π΅Π³ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π’ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах имя Ρ„Π°ΠΉΠ»Π° Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π½Π΅ самого Ρ„Π°ΠΉΠ»Π°, Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊ логичСская структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Имя Ρ„Π°ΠΉΠ»Π° хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ» приписан, ΠΈ большС Π½ΠΈΠ³Π΄Π΅. Из этого Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‚ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ слСдствия.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ΄Π½ΠΎΠΌΡƒ индСксному дСскриптору ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ любоС количСство ΠΈΠΌΠ΅Π½, приписанных ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, ΠΈ всС ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ настоящими. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ (ТСстких ссылок) учитываСтся Π² индСксном дСскрипторС. ИмСнно это количСство Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ls -l.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ просто ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ записи ΠΎ Π½Π΅ΠΌ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π½Π° 1 счСтчика ссылок.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ имя ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ индСксного дСскриптора Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΠ΅ΡΡ‚ΠΊΡƒΡŽ ссылку Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ β€” ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ Π½Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ хранСния).

Π‘Π°ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ приписан ΠΊ своСму Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ. ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ всСгда записан Π² индСксный дСскриптор с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 2 (Π½ΠΎΠΌΠ΅Ρ€ 1 ΠΎΡ‚Π²Π΅Π΄Π΅Π½ для списка адрСсов Π΄Π΅Ρ„Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²). Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ хранится ссылка Π½Π° Π½Π΅Π³ΠΎ самого ΠΈ Π½Π° Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ β€” это ΠΈ Π΅ΡΡ‚ΡŒ псСвдоподкаталоги Β«.Β» ΠΈ Β«..Β».