next up previous contents index
Дал╕: Перев╕рка ц╕л╕сност╕ файлових систем Вгору: Файлов╕ системи Назад: Створення файлово╖ системи

  
Монтування та розмонтування

Перед тим, як користуватися файловою системою, ╖╖ треба змонтувати. П╕сля монтування, для того, щоб п╕дтримувати в робочому порядку, система перейма╓ на себе обов'язки по контролю файлово╖ системи. Оск╕льки вс╕ файли в Юн╕кс╕ розташован╕ в ╓диному дерев╕, п╕сля монтування виявля╓ться, що все, що знаходилось до монтування в окрем╕й файлов╕й систем╕, ста╓ складовою директор╕╓ю в цьому дерев╕.

Наприклад, рисунок [*] показу╓ три окрем╕ файлов╕ системи, кожна з╕ сво╖м власним коренем (кореневою директор╕╓ю). П╕сля того, як дв╕ останн╕ файлов╕ системи змонтован╕ в точках /home  та /usr  першо╖ файлово╖ системи, утворю╓ться ╓дине дерево директор╕й показане на рисунку [*].


  
Рисунок: Три окрем╕ файлов╕ системи.
\includegraphics{disks/hd-mount-separate.ps}


  
Рисунок: /home  та /usr  змонтовано.
\includegraphics{disks/hd-mount-mounted.ps}

Операц╕╖ монтування виконуються наступними командами:

$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
$
$

Команд╕ mount  потр╕бно давати два ар╜ументи. Перший з них - це спец╕альний файл пристрою, який в╕дпов╕да╓ диску чи п╕дрозд╕лу з файловою системою. Другий - директор╕я, в як╕й потр╕бно змонтвуати дану файлову систему. П╕сля того, як виконано ц╕ дв╕ команди, все, що знаходиться в змонтованих фалових системах, буде виглядати як склад директор╕й /home  та /usr . Кажуть, що ``/dev/hda2  змонтовано на /home '', ╕, анало╜╕чно для /usr . Щоб подивитися, що знаходиться в т╕й, чи ╕нш╕й файлов╕й систем╕ (п╕сля ╖╖ монтування), сл╕д дивитися, що знаходиться в т╕й директор╕╖, на як╕й ця файлова система змонтована, так, як н╕би-то це - звичайна директор╕я. В╕дм╕тьте р╕зницю м╕ж спец╕альним файлом пристрою (/dev/hda2  та директор╕╓ю, на яку його змонтовано (/home . Перший з них да╓ доступ до ``сирого'' диску (або розд╕лу), в той час, як друга - опису╓ доступ до ``готово╖'' директор╕╖ на диску. Директор╕ю, в як╕й проводиться монтування файлово╖ системи, називають точкою монтування.

Л╕наксом, як уже в╕дм╕чалося, п╕дтримуються файлов╕ системи багатьох тип╕в. Команда mount  намага╓ться вгадати тип файлово╖ системи, яку вона монту╓. Але кр╕м цього можна також користуватися параметром -t тип_файлово╖_системи, щоб явно вказати тип. ╤нколи це необх╕дно, бо бува╓, що шлях здогадок п╕дводить. Наприклад, щоб змонтувати файлову систему DOS на дискет╕, потр╕бно виконати команду:

$ mount -t msdos /dev/fd0 /floppy
$

В╕д директор╕╖, на вершин╕ яко╖ монту╓ться файлова система, не вимага╓ться, щоб вона була пустою, але необх╕дно, щоб вона ╕снувала. Однак, вс╕ файли, як╕ ╕снували в ц╕й директор╕╖ до монтування будуть недоступними п╕сля того, як файлова система змонтована. (Будь як╕ файли, в╕дкрит╕ на час монтування будуть залишатися доступними, так само, як ╕ файли в дан╕й директор╕╖, як╕ мають жорстк╕ ссилки на себе з ╕нших частин файлово╖ системи, можуть бути доступними з використанням цих ╕нших ╕мен.) Цим не завда╓ться жодно╖ шкоди, ╕ ╕нколи такий ефект можна використати на користь. Наприклад, уяв╕мо соб╕, що /tmp  та /var/tmp  ╓ синон╕мами, та /tmp  ╓ символ╕чною ссилкою на /var/tmp . П╕д час старту системи, коли файлова система /var  ще не змонтована, для тимчасових файл╕в використову╓ться директор╕я /var/tmp , яка знаходиться на коренев╕й файлов╕й систем╕. П╕сля того, як /var  змонтована, директор╕я /var/tmp  в коренев╕й директор╕╖ робиться недоступною, ╕ зам╕сть не╖ використову╓ться змонтована на ╖╖ вершин╕ файлова система. Якби директор╕я /var/tmp  не ╕снувала, то було б неможливо користуватися тимчасовими файлами до того, як змонтована /var .

Якщо Ви не збира╓тесь записувати н╕чого в файлову систему, яку монту╓те, Ви можете скористуватися параметром -r для того, щоб змонтувати цю файлову систему в режим╕ т╕льки читання81. Отримавши цей параметр, ядро зупинить будь-яку спробу записати що-небуть в файлову систему ╕ ядро не буде зм╕нювати час доступу82 до inode'╕в файл╕в в дан╕й файлов╕й систем╕. Монтування в режим╕ ``т╕льки читання'' необх╕дне для нос╕╖в, на як╕ запис неможливий, таких, наприклад, як компакт-диски83.

Уважний читач мабуть уже в╕дм╕тив одну головоломку, а саме: як же монту╓ться ``сама перша'' файлова система - та, яка назива╓ться кореневою файловою системою84, бо вона м╕стить кореневу директор╕ю. Звичайно ж, ╕з зрозум╕лих причин, цю файлову систему не можна змонтувати на вершин╕ ╕ншо╖. В╕дпов╕дь в цьому випадку дуже проста - це звичайно ж фокус.8586. Коренева файлова система чар╕вним способом виявля╓ться змонтованою при запуску системи, ╕ можна завжди розраховувати на те, що вона змонтована - якщо неможливо змонтувати кореневу файлову систему, система просто не загрузиться. Назва то╖ файлово╖ системи, яка маг╕чно монту╓ться як коренева, або комп╕лю╓ться безпосередньо в саме ядро, або встановлю╓ться за допомогою LILO чи rdev 87.

При старт╕ системи коренева система завжди монту╓ться спочатку в режим╕ ``т╕льки читання''. П╕зн╕ше ╕з стартових скрипт╕в запуска╓ться fsck  для перев╕рки ц╕л╕сност╕ файлово╖ системи, ╕ пот╕м файлова система перемотову╓ться88 в режим╕ дозволу запису. Загалом команда fsck  не повинна виконуватися на змонтованих файлових системах, оск╕льки будь-як╕ зм╕ни до файлово╖ системи, над якою вона викону╓ться, викличуть велик╕ проблеми. Але, оск╕льки коренева система в даному випадку змонтована з доступом т╕льки на читання, fsck  може коригувати потр╕бн╕ д╕лянки без проблем, ╕ операц╕я перемонтування запише вс╕ потр╕бн╕ зм╕ни з пам'ят╕ на диск.

В багатьох системах при старт╕ потр╕бно монтувати також ╕нш╕ файлов╕ системи (кр╕м коренево╖ та своп). Вс╕ вони описуються в файл╕ /etc/fstab 89. Подробиц╕ про формат файлу ╓ в стор╕нц╕ п╕дказки fstab . Те, як конкретно додатков╕ файлов╕ системи монтуються залежить в╕д багатьох фактор╕в, ╕ це може конф╕╜урувати кожен окремий системний адм╕н╕стратор так, як це потр╕бно. Коли розд╕л про процес старту системи буде зак╕нчено, в ньому можна буде це прочитати.

Якщо файлова система б╕льше не потр╕бна, ╖╖ можна розмонтувати командою umount 90. Для umount  потр╕бен один параметр - або точка монтування файлово╖ системи, або ╖╖ спец╕альний файл. Наприклад, щоб розмотувати директор╕╖, змонтован╕ в попередньому приклад╕, потр╕бно виконати команди:

$ umount /dev/hda2
$ umount /usr
$ $

Подальш╕ в╕домост╕ про команду див╕ться в стор╕нц╕ п╕дказки по н╕й. Не забудьте, що завжди потр╕бно розмонтовувати змонтовану дискету. Не витягуйте просто так дискету з дисководу! Через кешування диску в пам'ят╕, дан╕ можуть справд╕ записуватися на диск багато п╕зн╕ше ╕ не обов'язково записан╕ на диск, якщо його ще не розмонтовано 91. Отже, якщо Ви витягнете дискету зарано - отрима╓те см╕ття зам╕сть даних. Якщо Ви т╕льки читали з дискети, то, можливо н╕чого страшного не трапиться, але, якщо записали щось (нав╕ть випадково), результатом може бути катастрофа.

Для монтування та розмонтовування файлових систем потр╕бно мати прив╕ле╖ супер-користувача, тобто т╕льки користувач root  може це робити. Причиною цього ╓ те, що, якщо будь-хто може монтувати чи розмонтовувати, скаж╕мо дискету на будь-як╕й директор╕╖, то, в цьому випадку було б дуже просто створити, наприклад, Троянського коня замаскованого п╕д /bin/sh , або ╕ншу часто вживану програму. Однак, звичайним користувачам ╕нколи треба монтувати дискети, ╕ для цього ╕сну╓ к╕лька способ╕в:

Для реал╕зац╕╖ останнього вар╕анту треба додати до /etc/fstab  приблизно такий рядок:
/dev/fd0 /floppy msdos user,noauto 0 0

Стовпчики в рядку так╕: пристр╕й, який треба змонтувати, директор╕я, в як╕й потр╕бно монтувати файлову систему, тип файлово╖ системи, параметри, частота створення резервних коп╕й (використову╓ться командою dump ), та номер проходу для fsck  (Цей параметр служить для того, щоб встановити порядок, в якому команда fsck  повинна перев╕ряти файлов╕ ситеми при старт╕ системи. 0 означа╓, що перев╕рка не потр╕бна).

Параметр noauto запоб╕га╓ монтуванню дано╖ файлово╖ системи при старт╕ системи (тобто команда mount -a  не змонту╓ цю файлову систему). Параметр user дозволя╓ монтувати цю файлову систему будь-якому користувачев╕, ╕, (з м╕ркувань безпеки) забороня╓ виконання будь-яких програм (як нормальних, так ╕ з встановленим setuid) та використання будь-яких спец╕альних файл╕в пристро╖в ╕з змонтовано╖ таким чином файлово╖ системи.93 Якщо такий рядок включено в файл /etc/fstab , то будь-який користувач може змонтувати дискету виконавши команду:

$ mount /floppy
$
Дискету можна (╕, звичайно ж, потр╕бно) розмонтовувати в╕дпов╕дною командою umount .

94 Якщо Вам потр╕бно забезпечити можлив╕сть монтування к╕лькох тип╕в дискет, Ви повинн╕ забезпечити також ╕ в╕дпов╕дн╕ точки монтування для вс╕х них ╕ в╕дпов╕дн╕ рядки для кожного типу в /etc/fstab . Параметри можуть бути р╕зними для них вс╕х. Наприклад, щоб дати доступ до обох файлових систем - MS-DOS та ext2 на дискетах, Вам потр╕бно мати так╕ рядки в /etc/fstab :

/dev/fd0    /dosfloppy    msdos   user,noauto  0  0
/dev/fd0    /ext2floppy   ext2    user,noauto  0  0

Для файлових систем MS-DOS (не т╕льки дискети, а взагал╕ - вс╕ з них), було б бажано обмежети доступ використанням uid чи gid та параметром umask , як╕ в подробицях описан╕ в стор╕нц╕ п╕дказки mount . Якщо Ви не надто безпечн╕, то монтування файлово╖ системи MS-DOS да╓ (як м╕н╕мум) доступ на читання для будь-кого, що взагал╕-то не бажано.


next up previous contents index
Дал╕: Перев╕рка ц╕л╕сност╕ файлових систем Вгору: Файлов╕ системи Назад: Створення файлово╖ системи
Dmytro Kovalev
1999-06-10