Mount

У этого термина существуют и другие значения, см. Маунт.

`mount` — утилита командной строки в UNIX-подобных операционных системах. Применяется для монтирования файловых систем.

В статье приведено описание и примеры для операционной системы GNU/Linux.

Часто `mount` используется для SD-карты, USB-накопителя, DVD и других съемных носителей. Команда также доступна в оболочке EFI[1].

## Содержание

* 1 Использование
* 1.1 Размонтирование командой umount
* 1.2 Монтирование USB-дисков
* 1.3 Монтирование NTFS дисков/разделов
* 1.4 Монтирование образов дисков
* 1.4.1 Образы bin/cue
* 1.5 Монтирование сетевых дисков NFS
* 1.6 Монтирование сетевых дисков SMB
* 1.7 Монтирование FTP серверов
* 1.8 Монтирование каталога файловой системы с другого компьютера через ssh
* 2 Параметры монтирования
* 2.1 -t Тип файловой системы
* 2.2 -o Атрибуты доступа
* 3 mount --bind
* 4 Список смонтированных файловых систем
* 5 Файл конфигурации
* 6 Примечания
* 7 Ссылки

## Использование

[править | править код]

`mount /dev/cdrom /mnt/cdrom`

Устройство /dev/cdrom монтируется в каталог /mnt/cdrom, если он существует. Начиная от момента монтирования и пока пользователь не отмонтирует файловую систему (или туда не будет смонтировано что-то иное) в каталоге /mnt/cdrom будет содержаться дерево каталогов устройства /dev/cdrom; те файлы, и подкаталоги, которые раньше находились в /mnt/cdrom, сохранятся, но будут недоступны до размонтирования устройства /dev/cdrom.

### Размонтирование командой umount

[править | править код]

Для размонтирования достаточно указать точку монтирования или имя устройства.

`umount /dev/cdrom`

### Монтирование USB-дисков

[править | править код]

Для распространённого случая, когда USB-диск имеет файловую систему FAT32, команда монтирования выглядит так:

`mount -t vfat -o codepage=866,iocharset=utf8 /dev/sda1 /mnt`

Параметр codepage необходим, чтобы имена созданных файлов корректно отображались в старых ОС (например, DOS). Если дистрибутив использует в качестве кодировки системной локали не UTF-8, то её необходимо указать в параметре iocharset так:

`mount -t vfat -o codepage=866,iocharset=koi8-r /dev/sda1 /mnt`

Реально используемую кодировку можно определить, выполнив команду `locale`.

Полезными опциями при монтировании Flash-дисков являются `sync` и `flush`. Первая приводит к постоянному сбросу на диск буфера записи, так что данные не теряются при отсоединении flash-диска без размонтирования. Побочный эффект такого монтирования — значительное уменьшение в скорости записи. Вторая опция (доступна только в новых ядрах Linux) ведёт к сбросу буфера на диск после записи последнего файла. Это также способствует сохранению данных в случае удаления диска без размонтирования, но не приводит к падению скорости записи.

### Монтирование NTFS дисков/разделов

[править | править код]

`mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,iocharset=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp `

### Монтирование образов дисков

[править | править код]

Если имеется образ диска в виде iso-файла, то для его монтирования нужно указать параметр `-o loop` и, обычно, тип файловой системы `-t iso9660` (необязательно) (`file.iso` — это имя файла образа, а `/mnt/iso` — точка монтирования):

`mount -o loop -t iso9660 file.iso /mnt/iso`

Монтирование образов в форматах, отличных от iso потребует преобразования в iso-образ или использования эмулятора. Для преобразования можно использовать утилиты командой строки (см. ниже) или утилиту kiso с графическим интерфейсом. Монтирование образов дисков в Linux

#### Образы bin/cue

[править | править код]

Для преобразования образа bin/cue в iso-образ можно воспользоваться конвертером bchunk:

`bchunk image.bin image.cue image.iso`

### Монтирование сетевых дисков NFS

[править | править код]

`mount 172.22.2.1:/mnt/iso/ /mnt/iso/`

### Монтирование сетевых дисков SMB

[править | править код]

Пример монтирования сетевых SMB-ресурсов :

`mount -t smbfs -o username=user,password=pass //server/dir /mnt/localdir/`
`mount -t cifs -o username=user,password=pass //server/dir /mnt/localdir/`

(Утилита smbfs заменилась в ядре linux на совместимую с ней cifs.) примечания:

* «-t cifs» можно иногда не указывать, если имя монтируемого устройства вида «//server/dir»

`mount //server/dir /mnt/localdir/ -o username=user,password=pass`

* если для авторизации необходимо указать доменное имя пользователя, то в параметрах команды mount оно указывается как «-o username=domain\\\user», однако при указании монтируемого ресурса в /etc/fstab имя пользователя указывается как «domain/user»:

`//server/dir /mnt/localdir/ cifs user=domain/user,password=pass 0 0`

### Монтирование FTP серверов

[править | править код]

`curlftpfs -v -o iocharset=UTF-8 ftp://user:password@ftp.example.com/ /mnt/ftp`

### Монтирование каталога файловой системы с другого компьютера через ssh

[править | править код]

Модуль ядра Fuse (был принят в официальную ветку ядра начиная с 2.6) позволяет непривилегированным пользователям монтировать различные файловые системы.

Для работы необходимо добавить пользователя в группу fuse, сделать это можно вот так:

`usermod -G -a fuse user`

или

`adduser user fuse`

или вручную отредактировав файл /etc/group. Ещё необходимо, чтобы загружен был модуль ядра fuse:

`modprobe fuse`

После этого, можно смонтировать каталог другого компьютера с помощью sshfs:

`sshfs user@udalenniy_server:/tmp ~/udalennaya_papka`

Для отмонтирования нужно ввести команду:

`fusermount -u ~/udalennaya_papka`

## Параметры монтирования

[править | править код]

В случае необходимости при выполнении команды `mount` можно указать дополнительные параметры монтирования.

### -t Тип файловой системы

[править | править код]

Обычно при монтировании определяется автоматически или берётся из файла конфигурации (см. ниже). Но в отдельных случаях нужно указывать тип файловой системы явно. Например при монтировании DVD диска с файловой системой UDF.

`mount /dev/cdrom /mnt/dvd -t udf`

Если неправильно указать тип файловой системы, то команда `mount` выдаст сообщение об ошибке

mount: wrong fs type, bad option, bad superblock on /dev/cdrom,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail  or so

и посоветует посмотреть в конец файла системных сообщений.

`Unable to identify CD-ROM format.`

В случае успешного монтирования обычно сообщается, что компакт диск монтируется (по умолчанию) в режиме «только для чтения».

`mount: block device /dev/cdrom is write-protected, mounting read-only`

### -o Атрибуты доступа

[править | править код]

* Доступ «только для чтения» (ro) или на «чтение и запись» (rw)
* Разрешение или запрещение запуска программ (noexec)

Пример 1 (для образца, взято монтирование USB диска):

`mount -t vfat -o rw,noexec,iocharset=utf8,codepage=866 /dev/sda1 /mnt/usb`

Пример 2 (для образца, взято монтирование ntfs раздела с установленной Windows XP):

`mount -t ntfs -o noatime,users,rw,fmask=111,dmask=000,locale=ru_RU.UTF-8 /dev/sda1 /mnt/win_xp`

Пример 3 (перемонтировать устройство с доступом на «чтение и запись» (rw))

`mount -o remount,rw /dev/sda2`

## mount --bind

[править | править код]

Команда `mount` с ключом `--bind` или с коротким ключом `-B` применяется в системах на ядре Linux (начиная с 2.4.0) для создания синонима каталога в дереве файловой системы. К примеру, команда:

`mount --bind /mnt/cdrom/Files /var/ftp/cdrom`

позволит обращаться к файлам из /mnt/cdrom/Files через путь /var/ftp/cdrom, где /var/ftp/cdrom — некий уже существующий (возможно, пустой) каталог (его настоящее содержимое будет недоступно до момента размонтирования). Можно также вместо отдельной опции `--bind` написать `-o bind`, что будет иметь аналогичное действие. Также это позволяет добавить правило в файл `/etc/fstab` для монтирования при старте системы:

`/olddir /newdir none bind`

Преимуществом данного способа создания ссылок на каталоги над символьными ссылками является возможность обходить ограничения доступа к файловой системе, возникающие перед процессами, запущенными в среде chroot или серверами, применяющими принцип chroot. Например, FTP-сервер proftpd делает недоступными символьные ссылки, указывающие на файлы и каталоги вне определённого каталога. Действие команды mount --bind напоминает DOS-овский subst.

## Список смонтированных файловых систем

[править | править код]

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

/dev/md/5 on / type reiserfs (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec)
udev on /dev type tmpfs (rw,nosuid)
devpts on /dev/pts type devpts (rw,nosuid,noexec)
/dev/md/4 on /files type xfs (rw,noatime)
/dev/sda3 on /mnt/a type ext3 (rw,noatime)
/dev/sdd2 on /mnt/docs type reiserfs (rw,noatime)
shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev)
usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
nfsd on /proc/fs/nfs type nfsd (rw,noexec,nosuid,nodev)
//ax2/i on /mnt/smb type smbfs (0)
172.22.2.1:/files on /mnt/files type nfs (rw,addr=172.22.2.1)

В этом примере показывается много смонтированных файловых систем (ФС).

* в первой строке сообщается, что в качестве корневой ФС выступает RAID-массив, с ФС типа reiserfs и параметрами монтирования: доступ на чтение и запись (rw) и указанием не обновлять атрибут времени последнего доступа (noatime)
* `sysfs, udev, devpts` — это стандартные (для систем Linux) виртуальные ФС
* `/dev/sda3` — это раздел SATA диска
* `usbfs` — это виртуальная файловая система для работы с USB устройствами
* `//ax2/i` — это путь к сетевому диску SMB
* `172.22.2.1:/files` — путь к сетевому диску NFS, находящемся на сервере с IP-адресом 172.22.2.1

## Файл конфигурации

[править | править код]

Основная статья: fstab

Чтобы облегчить процедуру монтирования, можно внести в файл конфигурации `/etc/fstab` соответствующие строки. Примерное содержимое для этого файла:

# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#/dev/BOOT              /boot           ext2            noauto,noatime  1 2
/dev/sda5               /               reiserfs        noatime         0 1
/dev/sda1               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      iso9660         noauto,ro       0 0
#/dev/fd0               /mnt/floppy     auto            noauto          0 0

# NOTE: The next line is critical for boot!
proc                    /proc           proc            defaults        0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0

В дальнейшем можно будет указывать в команде `mount` только имя устройства или точку монтирования — все дополнительные параметры будут браться из файла конфигурации. Например, применительно к данной конфигурации, команда `mount /mnt/cdrom` будет эквивалентна выполнению команды

`mount /dev/cdrom /mnt/cdrom -t iso9660 -o noauto,ro`

Другое назначения файла конфигурации — автоматическое монтирование файловых систем при загрузке системы. Если не требуется монтировать определённые файловые системы, то для них в файле конфигурации нужно указать параметр `noauto`.

## Примечания

[править | править код]

1. ↑ Mikael Olsson. Loops // PHP Quick Scripting Reference. — Berkeley, CA: Apress, 2013. — С. 25–28. — ISBN 978-1-4302-6283-1, 978-1-4302-6284-8.

## Ссылки

[править | править код]

* mount (8) Linux man page (англ.)
* mount (8) Страница руководства на русском

Команды Unix

Утилиты POSIX.1-2008

* admin
* alias
* ar
* asa
* at
* awk
* basename
* batch
* bc
* bg
* c99
* cal
* cat
* cd
* cflow
* chgrp
* chmod
* chown
* cksum
* cmp
* comm
* command
* compress
* cp
* crontab
* csplit
* ctags
* cut
* cxref
* date
* dd
* delta
* df
* diff
* dirname
* du
* echo
* ed
* env
* ex
* expand
* expr
* false
* fc
* fg
* file
* find
* fold
* fort77
* fuser
* gencat
* get
* getconf
* getopts
* grep
* hash
* head
* iconv
* id
* ipcrm
* ipcs
* jobs
* join
* kill
* lex
* link
* ln
* locale
* localedef
* logger
* logname
* lp
* ls
* m4
* mailx
* make
* man
* mesg
* mkdir
* mkfifo
* more
* mv
* newgrp
* nice
* nl
* nm
* nohup
* od
* paste
* patch
* pathchk
* pax
* pr
* printf
* prs
* ps
* pwd
* qalter
* qdel
* qhold
* qmove
* qmsg
* qrerun
* qrls
* qselect
* qsig
* qstat
* qsub
* read
* renice
* rm
* rmdel
* rmdir
* sact
* sccs
* sed
* sh
* sleep
* sort
* split
* strings
* strip
* stty
* tabs
* tail
* talk
* tee
* test
* time
* touch
* tput
* tr
* true
* tsort
* tty
* type
* ulimit
* umask
* unalias
* uname
* uncompress
* unexpand
* unget
* uniq
* unlink
* uucp
* uudecode
* uuencode
* uustat
* uux
* val
* vi
* wait
* wc
* what
* who
* write
* xargs
* yacc
* zcat

GNU Coreutils

Файловые утилиты|

* chgrp
* chown
* chmod
* cp
* dd
* df
* dir
* dircolors
* install
* ln
* ls
* mkdir
* mkfifo
* mknod[англ.]
* mv
* rm
* rmdir
* shred
* sync
* touch
* vdir

Текстовые утилиты|

* cat
* cksum
* comm
* csplit
* cut
* expand
* fmt
* fold
* head
* join
* md5sum
* nl
* od
* paste
* ptx[англ.]
* pr
* sha1sum
* sort
* split
* sum
* tac
* tail
* tr
* tsort[англ.]
* unexpand
* uniq
* wc

Shell-утилиты|

* basename
* chroot
* date
* dirname
* du
* echo
* env
* expr
* factor[англ.]
* false
* groups[англ.]
* hostid
* id
* link
* logname
* nice
* nohup
* pathchk
* pinky
* printenv[англ.]
* printf
* pwd
* readlink
* seq
* sleep
* stat
* stty
* tee
* test
* true
* tty
* uname
* unlink
* users
* who
* whoami
* yes

другие утилиты|

* size
* Start-stop-daemon
* Surfraw