Для монтирования устройств и файловых систем, в Linux используется команда mount. Общий синтаксис команды выглядит так:

mount ключи -t тип_файловой_системы -o опции_файловой_системы устройство каталог_назначения

Где:

  • ключи - глобальные опции для команды,
  • -t - задаёт тип файловой системы,
  • -o - опции для заданной файловой системы,
  • устройство - путь к физическому устройству или каталогу,
  • каталог_назначения - каталог назначения или "куда" будет монтироваться устройство (каталог).

Если указаны устройство и каталог_назначения, то команда не читает опции в /etc/fstab .

Помимо универсальной команды моунт, есть и специализированные команды, ориентированные на конкретную файловую систему:

  • mount.fuse
  • mount.fuse.ntfs
  • mount.nfs
  • mount.nfs4
  • mount.ntfs
  • mount.ntfs-fuse
  • mount.ntfs-3g
  • mount.cifs
  • mount.lowntfs-3g

Для отмонтирования устройства(каталога) существует команда umount. Синтаксис у неё такой:

umount ключи -t тип_файловой_системы -o опции_файловой_системы

Здесь действия по отмонтированию производятся комплексно - по всем файловым системам, указанным опциями -t и -o.

umount ключи устройство_или_каталог_назначения

Во втором случае отмонтируется конкретная примонтированная ранее точка. Вместо устройство_или_каталог_назначения может быть либо устройство (раздел) которое монтировалось, либо точка монтировани - т.е. куда монтировалось.

В случае, если на примонтированной системе есть "занятые" файлы, отмонтировать её не удастся. При этом команда выдаст сообщение "device is busy".

Примеры использования mount в Linux

Замечание

В некоторых дистрибутивах, команду mount может ввести только пользователь root или другой пользователь, кому разрешено через sudo это делать. В остальных случаях, интерпретатор выдаёт сообщение "Команда не найдена".

Ввод mount без ключей и параметров выдаёт список всех примонтированных файловых систем в текущий момент и параметров монтирования:

# mount
 /dev/sda1 on / type ext3 (rw,commit=0)
 devpts on /dev/pts type devpts (rw)
 shm on /dev/shm type tmpfs (rw,nosuid,nodev)
 /dev/sda2 on /boot type ext3 (rw,commit=0)
 /dev/sda5 on /usr type ext3 (rw,commit=0)
 /dev/sda6 on /var type ext3 (rw,commit=0)

Опции чтения\записи

Без опций -t и -o пробует монтировать раздел /dev/sda1 с файловой системой ext3 в каталог /mnt в режиме "только чтение". В случае, если в операционной системе нет библиотек для поддержки той или иной файловой системы или система на указанном разделе будет не ext3, команда выдаст сообщение о невозможности монтирования:

 # mount /dev/sdа1 /mnt

Включим возможность чтения и записи в файловую систему:

 # mount -o rw /dev/sdа1 /mnt

Аналогично можно отключить запись и сделать принудительно "только чтение":

 # mount -o ro /dev/sdа1 /mnt

Опции выбора типа файловых систем

Монтирование не ext3 файловой системы в режиме "только чтение"

 # mount -t vfat /dev/sdа4 /mnt

Монтирование обычного CD\DVD диска в /mnt

 # mount -t iso9660 -o ro /dev/sr0 /mnt

Где: iso9660 - файловая система компакт-дисков, ro - система не сможет записать на диск, но чтобы не материлась можно и указать, что не обязательно.

Если на диске имеются файлы с размером больше 2048 мегабайт, то диск записывается в файловой системе udf, поэтому и монтировать его надо соответственно:

 # mount -t udf -o ro /dev/sr0 /mnt

Монтирование "виндовс-шары"

 # mount -t cifs -o rw,username=user,password=pass //ftp.server.ru/share /mnt

Где:

  • cifs - файловая система SMB,
  • user= и password= - идентификационные параметры подключения к "шаре",
  • //ftp.server.ru/share - полный DNS или WINS путь к каталогу шары. Обратите внимание, что в Windows слэши располагаются наоборот.

Если "шара" предоставляет доступ всем (без запроса логина\пароля) в качестве параметров опций user и password могут быть произвольные имена или guest, иначе нужно указать именно те, с которыми производится доступ. Пример монтирования с гостевыми параметрами:

 # mount -t cifs -o rw,guest //ftp.server.ru/share /mnt

Опции выбора кодировки символов

Помимо разных файловых систем, возможен вариант и разных кодировок. Если все файлы и каталоги созданы на латинице - проблем не будет, но если на других языках, возможно что Вы увидите нечитаемые символы. Рассмотрим эти варианты.

Монтирование "флешки", записанной в Windows

 # mount -t vfat -o rw,iocharset=utf8 /dev/sdс1 /mnt

Обратите внимание, что параметр записывается после запятой в секции опций после -o. Здесь iocharset=utf8 указывает что надо конвертировать имена существующей системы в utf8. Если ваш терминал или операционная система в целом настроена на кодировку koi8-r, то вместо utf8 нужно подставить koi8-r.

Аналогично, добавляя параметр iocharset можно монтировать разделы с отличной от существующей кодировкой. Для примера возьмём случай монтирования виндовс-шары, где кодировкой является кодовая таблица cp866:

 # mount -t cifs -o rw,username=user,password=pass,iocharset=utf8 //ftp.server.ru/share /mnt

Опции владельцев и прав доступа

Монтирование файловых систем в каждом конкретном случае требует работы с правами доступа и владельцами файлов\каталогов чтобы "вместить" правила самой файловой системы в концепцию прав *nix. Рассмотрим наиболее встречающиеся варианты.

Монтирование NTFS-раздела с установкой прав на файлы и каталоги

По умолчанию, для каждой файловой системы, при монтировании, приняты предопределённые права. Так, например, при монтировании NTFS-раздела, без дополнительных опций, все файлы и каталоги "видятся" в linux с правами доступа root:root 777 и при копировании файлов возникает две проблемы:

  • проблема снятия разрешения "на выполнение" для обычных файлов;
  • проблема выставления разрешения "на запись" в каталоги примонтированной системы для обычного пользователя.

Многих очень часто вводит в заблуждение, что установка -o rw вроде как даёт право на чтение\запись, а собственно записать ничего нельзя. Дело в том, что -o rw всего-лишь даёт "возможность", но у пользователя, внутри примонтированной системы, также должны быть права "на запись".
Рассмотрим что будет в случае простого монтирования:

 # mount -t ntfs -o rw /dev/sdd1 /mnt
 # ls -l /mnt
   total 658292
   drwxrwxrwx 1 root root         0 Feb  1 12:45 1
   drwxrwxrwx 1 root root         0 Mar  3 17:36 1234
   -rwxrwxrwx 1 root root 237550037 Oct 14  2010 Video.mp4
   -rwxrwxrwx 1 root root 436223753 Jul 24  2010 openclipart-2.0-full.zip
   -rwxrwxrwx 1 root root    313537 Sep 27  2010 Screenshot-1.png

В примонтированном каталоге у всех файлов стали права 777 и владелец root:root. Это монтирование с правами по умолчанию. Естественно, если пользователь смонтировал флешку\раздел из под sudo, он не сможет модифицировать данные в разделе. Это можно исправить путём указания опций владельца и масок для файлов:

 # mount -t ntfs -o rw,uid=1000,gid=1000,fmask=0111 /dev/sdd1 /mnt

Здесь:

  • uid=1000 - все файлы примонтированной системы будут принадлежать пользователю с uid=1000 (смотрим /etc/passwd),
  • gid=1000 - все файлы примонтированной системы будут принадлежать группе с gid=1000 (смотрим /etc/group),
  • fmask=0111 - маска убирает от прав 777 по 111 (математически это выглядит так: 777-111=666).

Кстати, есть ещё опция dmask, с помощью которой можно присваивать конкретные права только каталогам. Если fmask и dmask действуют по отдельности, то umask объединяет их и действует для каталогов и для файлов одинаково.

Результат монтирования с дополнительными опциями:

 # ls -l /mnt
   total 658292
   drwxrwxrwx 1 user user         0 Feb  1 12:45 1
   drwxrwxrwx 1 user user         0 Mar  3 17:36 1234
   -rw-rw-rw- 1 user user 237550037 Oct 14  2010 Video.mp4
   -rw-rw-rw- 1 user user 436223753 Jul 24  2010 openclipart-2.0-full.zip
   -rw-rw-rw- 1 user user    313537 Sep 27  2010 Screenshot-1.png

Теперь пользователь "user" может модифицировать файлы на примонтированной файловой системе.

Монтирование NTFS-разделов в таблице разделов GPT

Для монтирования разделов NTFS, расположенных в таблице разделов GPT (это диски с установленной Windows 7 или Windows 8), необходимо использовать тип файловой системы ntfs-3g. Например:

 # mount -t ntfs-3g -o ro /dev/sdd5 /mnt2

Для просмотра разделов на GPT-диске, команда fdisk -l уже не подойдёт, используем команды:

 # lshw -C disk''

или

 # parted -l

Монтирование виндовс-шары с установкой прав на файлы и каталоги

По умолчанию, при монтировании виндовс-шары через команду типа:

  # mount -t cifs -o rw,username=user,password=pass,iocharset=utf8 //ftp.server.ru/share /mnt

, запись и чтение с ресурса может делать только root. Чтобы отдать права непривилегированному пользователю на локальной машине, следует также добавить параметры uid и gid в опции монтирования с указанием идентификационного номера пользователя и группы (или его символьного аналога - логина и имени группы). Примерно так:

  # mount -t cifs -o rw,username=user,password=pass,iocharset=utf8,uid=localuser,gid=localgroupuser //ftp.server.ru/share /mnt

, где localuser и localgroupuser - логин пользователя и название группы в которую он входит на локальной машине. Теперь этот локальный пользователь сможет читать/модифицировать файлы и каталоги (если на сервере есть соответствующие разрешения).

Монтирование каталогов в каталоги

С помощью опции bind можно смонтировать каталог в другой каталог. Такое бывает необходимо для перемещения содержимого в несколько мест файловой системы одновременно.
Общий синтаксис:

 # **mount** **--bind** //источник// //назначение//

Пример монтирования каталога /share1 в /home/user/Docs

$ ls -l /share1                                         # смотрим что есть в /share1
   total 1
   drwxr-xr-x 2 user user 1024 Apr 15 13:03 1234
   -rw-r--r-- 1 user user    0 Apr 15 13:03 readme.txt
$ cd ~                                                  # переходим в /home
$ mkdir Docs                                            #создаём каталог, куда будет монтироваться /share1
# mount --bind /share1 /home/user/Docs                  #собственно монтирование
$ ls -l Docs                                            #проверяем
   total 1
   drwxr-xr-x 2 user user 1024 Apr 15 13:03 1234
   -rw-r--r-- 1 user user    0 Apr 15 13:03 readme.txt

Несколько слов о правах доступа: права, действующие для источника, действуют и для назначения, но не наоборот.

Монтирование iso и других файлов образов в каталог

Это один из случаев монтирования посредством loop-устройства (устройства программной "петли"). Таким образом можно монтировать бинарные файлы iso9660 и образы разделов жёстких дисков и флеш-накопителей.

Пример монтирования образа DVD-диска в каталог /mnt:

 # mount -t iso9660 -o loop,ro /home/user/debian-508-i386-DVD-2.iso /mnt

Пример монтирования образа vfat-раздела флешки flash.img в каталог /mnt:

 # mount -t vfat -o loop,ro /home/user/flash.img /mnt

Пример монтирования образа ext3-раздела жёсткого диска в каталог /mnt:

 # mount -t ext3 -o loop,ro /home/user/hd_backup.bin /mnt

Для постоянного монтирования, в файле /etc/fstab строка должна выглядеть так:

 /путь/к_папке_в_ФС    /другой_путь    none    bind    0    0

Смотрите также

Печать/экспорт