При монтировании файловых систем, в которых не предусмотрено прав доступа (например, FAT), утилита mount назначает владельца файловых объектов и права доступа к ним по умолчанию. Владельцем объявляется пользователь, производивший монтирование, а права доступа к файлам и каталогам устанавливаются в 0755.
Монтирование файловых систем пользователями производится на основе разрешений, записанных в текстовом конфигурационном файле утилиты mount /etc/fstab. Содержимое этого файла приведено на рис. 3.2 и представляет собой таблицу из шести столбцов.
dev/hda1
/mnt/ntfs
ntfs
defaults
dev/hda2
/mnt/fat32
vfat
defaults
dev/hda3
swap
swap
defaults
dev/hda4
/
ext2
defaults
devpts
/dev/pts
devpts
gid=5, mode=620
/proc
/proc
proc
defaults
/dev/fd0
/mnt/floppy
msdos
defaults, users, noauto
/dev/hdc
/mtt/cdrom
iso9660
ro, user, noauto
Рис. 3.2. Содержимое файла /etc/fstab
В первом столбце указывается дисковое (блочное) устройство, точнее раздел диска или диск целиком, на котором содержится файловая система, подлежащая монтированию. Типовые названия блочных устройств были приведены в предыдущем параграфе. Кроме блочных устройств в таблице присутствуют два псевдоустройства: файловая система /proc, рассмотренная в параграфе 2.5, и псевдотерминал devpts[3].
Второй столбец таблицы указывает точку (каталог) монтирования. Каталог к моменту монтирования должен существовать. Имена точкам монтирования обычно даются таким образом, чтобы они ассоциировались с конкретными устройствами (например, /mnt/floppy или /mnt/cdrom).
Третий столбец содержит тип файловой системы. Следует напомнить, что файл подкачки в системах Linux, идентифицируемый в таблице как swap, может размещаться на отдельном логическом разделе жесткого магнитного диска, отдельном диске или в файле; в случае его размещения в файле файловая система с файлом подкачки должна монтироваться до его подключения.
В четвертом столбце таблицы указываются параметры монтирования. Это те параметры, которые указываются после аргумента –о в командной строке утилиты mount :
· ro – (read only) – файловая система монтируется только для чтения (обычно этот параметр указывается для привода чтения оптических дисков, а также для других устройств памяти, монтирование которых не должно сопровождаться записью, например при проведении криминалистических исследований),
· rw – файловая система монтируется для чтения и записи (по умолчанию). При этом не следует забывать, что оптические диски CD-R/DVD-R по определению монтируются в режиме read only,
· exec/noexec– разрешить или запретить запуск исполняемых файлов, расположенных в данной файловой системе. Таким образом, например, можно запретить запуск неизвестных и потенциально опасных программ из подключаемой файловой системы. Запрет noexec эквивалентен снятию права на исполнение для всех обычных файлов и защищает только от случайного запуска исполняемого файла. Стоит скопировать файл программы на другой носитель и установить для него право на исполнение – и программу можно запускать. Этот запрет также не действует на файлы сценариев, которые, как известно, можно запускать посредством указания их имени после имени командного интерпретатора, имея только право на чтение,
· suid/nosuid– принимать во внимание или игнорировать дополнительные атрибуты SUID/SGID, позволяющие запуск исполняемых файлов из примонтированной файловой системы с правами владельца файла или его группы,
· dev/nodev– разрешить или запретить использование на примонтированном разделе файлов специальных устройств,
· nouser/user(s)– запретить или разрешить пользователям монтировать данную файловую систему. Параметр user указывает, что монтировать файловую систему может любой пользователь. Отличие параметров user и users заключается в правах на размонтирование устройства. Параметр user означает, что размонтировать устройство может только тот, кто его монтировал, а users дает права на размонтирование любому пользователю,
· defaults– использовать параметры по умолчанию, что заменяет набор параметров rw, suid, dev, exec, auto, nouser. Если в четвертом столбце одновременно указаны параметры defaults и user(s), то значения параметров по умолчанию изменяются на noexec, nosuidиnodev. Утилита mount обрабатывает параметры слева направо, замещая ранее встреченные значения параметров значениями, указанными далее. Поэтому указание user перед defaults равносильно отмене первого параметра.
Пятый столбец таблицы может содержать 0 или 1. Единица разрешает производить резервное копирование данной файловой системы утилитой dump, а нуль – не разрешает.
Шестой столбец используется утилитой проверки файловых систем fsck (file system check). Если указан «0», то файловая система не проверяется, цифры «1» или «2» указывают очередность проверки.
Аналогичный формат таблицы монтирования используется еще в двух файлах: виртуальном /proc/mounts и реальном /etc/mtab. В эти файлы процесс mount записывает информацию об уже смонтированных файловых системах.
Создание и монтирование файла, содержащего в себе файловую систему (в Linux возможно и такое!) заключается в следующем:
с помощью утилиты dd создается файл требуемого объема (например, 10 Мб), состоящий из двоичных нулей:
на виртуальном диске создается файловая система (например, ext2fs):
mke2fs -F /tmp/virt_disk1;
создается точка монтирования (можно это сделать в том же каталоге /tmp):
mkdir /tmp/virt_fs;
с помощью устройства обратной связи /dev/loop0 монтируется виртуальный диск с созданной файловой системой ext2fs:
mount –t ext2 –o loop=/dev/loop0 /tmp/virt_disk1
/tmp/virt_fs.
Файл-образ диска, полученный путем копирования, монтируется также с указанием параметра –o loop=/dev/loop0.
Прежде чем подключать (монтировать) файловую систему, следует проверить её целостность. Если файловая система не была отключена должным образом, при попытке подключить ее без проверки пользователю будет выдано сообщение о невозможности выполнить подключение и предложено воспользоваться утилитой проверки и восстановления файловой системы fsck(или e2fsck). Это справедливо для файловой системы ext2fs, в случае же наличия на исследуемом разделе файловой системы ext3fs ошибка будет исправлена с помощью журнала.
Порядок запуска утилиты при проверке:
e2fsck -fy /dev/hda7,
где f – принудительное выполнение проверки в случае, если файловая система этого не требует; y – работа без запросов пользователю.
Демонтируются файловые системы с помощью команды umount. Она записывается в двух вариантах:
umount <device>
или umount <dir>
Демонтирование всех файловых систем, перечисленных в файле /etc/fstab, можно произвести с помощью одной команды