Книга: Linux глазами хакера
mount
mount
Команда предназначена для монтирования файловых систем. Она достаточно сложна, и ее используют системные администраторы.
Если вы работали с ОС Windows, то скорей всего привыкли к тому, что дискеты, CD-диски и другие съемные носители становятся доступными сразу же, как только вы поместили их в устройство чтения. В Linux это не так, и многие не могут сжиться с этой особенностью. К таким пользователям отношусь и я, т.к. до сих пор не могу привыкнуть, что нужно выполнять дополнительные команды, хотя и прекрасно понимаю, что они необходимы.
Итак, чтобы CD-ROM стал доступным, надо выполнить команду mount
, указав в качестве параметра устройство /dev/cdrom:
mount /dev/cdrom
После этого содержимое CD можно посмотреть в директории /mnt/cdrom. Получается, что файлы и директории диска как бы сливаются с файловой системой.
Почему именно в директорию /mnt/cdrom подсоединяется CD-ROM? Секрет заключается в том, что для подключения CD-ROM нужно намного больше данных, чем дает одна команда mount dev/cdrom
. Эти сведения хранятся в двух файлах, уже имеющихся в ОС и описывающих основные устройства и параметры по умолчанию — файлы fstab и mtab. Давайте по очереди разберем эти файлы.
Для начала взглянем на fstab:
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda2 / ext3 defaults,errors=remount-ro 0 1
/dev/hda1 none swap sw 0 0
proc /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
none /dev/pts/ devpts gid=5,mode=620 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
Файл содержит строки для основных дисков. Каждая запись состоит из 6 колонок. Обратите внимание на первую строку. Здесь описывается подключение диска hda2. В моей файловой системе это основной диск, поэтому второй параметр — "/". Это значит, что диск будет монтирован как корневой. Третья колонка описывает файловую систему, в данном случае это Ext2. Параметр rw
указывает на то, что устройство доступно для чтения и записи.
Предпоследняя строка в файле описывает устройство CD-ROM. Посмотрите внимательно на второй параметр /mnt/cdrom
. Вот откуда берется путь к содержимому CD-диска. Четвертая колонка содержит опции монтирования, в которых можно описать параметры безопасности. В данном случае для CD-ROM здесь указано несколько опций: noauto, owner, kudzu, ro
. Очень важным здесь является параметр ro
, который говорит о возможности только чтения CD-ROM. Вполне логично установить этот параметр для всех приводов и устройств, с помощью которых хакер сможет снять информацию с сервера.
Файл mtab имеет примерно такое же содержимое:
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda2 / ext3 rw,errors=remount-ro 0 0
proc /proc proc rw 0 0
none /dev/shm tmpfs rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /proc/sys/fs/binfmt_misc binfmt misc rw 0 0
/dev/cdrom /mnt/cdrom iso9660 ro,nosuid,nodev 0 0
Если вы создали какие-то разделы на отдельных дисках, то сможете настраивать и их. Я вам рекомендовал выделить таким образом раздел /home с пользовательскими директориями. Если вы так и сделали, то в файле может быть еще одна строка примерно следующего вида:
/dev/hda3 /home ext3 rw,errors=remount-ro 0 0
Посмотрим на четвертый параметр. В нем содержатся опции монтирования, которыми можно управлять для повышения безопасности системы. Они перечислены через запятую. В нашем примере это rw, errors=remount-ro
. В качестве опций монтирования дополнительно можно использовать:
? noexec
— запрет выполнения файлов. Если вы уверены, что в разделе не должно быть исполняемых файлов, то можно использовать эту опцию. Например, в некоторых системах директория /home должна хранить только документы. Чтобы хакер не смог записать в этот раздел свои программы, с помощью которых будет происходить взлом, добавьте этот параметр. Точнее сказать, программы поместить можно будет, а запустить — нет;
? nosuid
— запрещает использование программ с битами SUID и SGID. В разделе /home их быть не должно, поэтому можно явно запретить применение привилегированных программ. О SUID- и SGID-программах мы поговорим в разд. 4.5;
? nodev
— запрещает использование файлов устройств;
? nosymfollow
— запрещает использование мягких ссылок.
Опции nodev
и nosymfollow
не сильно влияют на безопасность, но могут пригодиться.
Использование параметра noexec
— бесполезное занятие и абсолютно не защищает систему от профессионального хакера, потому что опытный взломщик сможет запустить программу, если для выполнения разрешен хотя бы один раздел. А таковым всегда является раздел с директорией /bin и другие каталоги, которые содержат необходимые для работы программы.
Допустим, что ваш сайт разрабатывается с использованием языка Perl. Если его интерпретатор доступен для выполнения, то взломщик сможет запускать сценарии программ Perl в любом разделе, в том числе и с установленным параметром noexec
. Если для запуска сценария использовать командную строку, то вы получите сообщение о нарушении прав доступа. Но программа выполнится, если написать следующую команду:
perl file.pl
Несмотря на то, что file.pl
находится в разделе, в котором запрещены исполняемые файлы, ошибки не будет, потому что запускается разрешенная программа perl
, которая в свою очередь читает файл (дозволенная операция) и выполняет его в своем адресном пространстве.
Вспомните описание файла mtab, где для CD-ROM стоит запрет на использование SUID- и SGlD-программ. То же самое необходимо сделать, как минимум, с разделами /home и /tmp. Тогда пользователи не смогут создавать в своих директориях привилегированные программы, что позволит предотвратить большое количество возможных атак.
Итак, давайте попробуем смонтировать CD-ROM в другую директорию. Для этого сначала создадим ее:
mkdir /mnt/cd
Теперь выполним команду
mount /dev/cdrom /mnt/cd
Если на вашем компьютере установлено две ОС — Windows и Linux, то диск, скорее всего, содержит файловую систему FAT32 или NTFS. Следующие команды позволяют подключить FAT32 к Linux:
mkdir /mnt/vfat
mount -t vfat /dev/hda3 /mnt/vfat
Первая команда создает директорию /mnt/vfat, куда будет подключаться диск с FAT32.
Во второй команде происходит монтирование диска /dev/hda5. Будем считать, что как раз он и принадлежит Windows. Ключ -t
позволяет указать тип подключаемой файловой системы. Это обязательно. Для CD-ROM мы этого не делали только потому, что вся необходимая информация есть в файле /etc/fstab. Файловая система указана в параметре vfat
. Это имя для FAT32, которое используется в Linux.
Более подробно о работе команды можно узнать на страницах документации (man mount
).
- umount
- Mounting Samba Shares
- Mounting File Systems
- The mount Command
- The umount Command
- Mounting Automatically with
- Mounting the New Partition and Populating It with the Relocated Files
- Mounting a Partition as Read-Only on a Running System
- 9.2.1. Mounting a File System
- 12.3.4. Target NFS Root Mount
- 12.3.5. U-Boot NFS Root Mount Example
- Mounting the