- Linux mount от имени пользователя
- Примеры использования mount в Linux
- Опции чтения\записи
- Опции выбора типа файловых систем
- Опции выбора кодировки символов
- Опции владельцев и прав доступа
- Монтирование NTFS-раздела с установкой прав на файлы и каталоги
- Монтирование виндовс-шары с установкой прав на файлы и каталоги
- Монтирование каталогов в каталоги
- Монтирование iso и других файлов образов в каталог
- Mount device with specific user rights
- 1 Answer 1
Linux mount от имени пользователя
Для отмонтирования устройства(каталога) существует команда 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, команда выдаст сообщение о невозможности монтирования:
Включим возможность чтения и записи в файловую систему:
Аналогично можно отключить запись и сделать принудительно «только чтение»:
Опции выбора типа файловых систем
Монтирование не ext3 файловой системы в режиме «только чтение»:
Монтирование обычного 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
//ftp.server.ru/share — полный DNS или WINS путь к каталогу шары. Обратите внимание, что в Windows слэши располагаются наоборот.
Если «шара» предоставляет доступ всем (без запроса логина\пароля) в качестве параметров опций user и password могут быть произвольные имена или guest, иначе нужно указать именно те, с которыми производится доступ. Пример монтирования с гостевыми параметрами:
# mount -t cifs -o rw,guest //ftp.server.ru/share /mnt
Монтирование разделов FreeBSD в Linux:
# mount -t ufs -o ufstype=ufs2,ro /dev/sdd1 /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),
Кстати, есть ещё опция 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 уже не подойдёт, используем команды:
Монтирование виндовс-шары с установкой прав на файлы и каталоги
По умолчанию, при монтировании виндовс-шары через команду типа:
# 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
Mount device with specific user rights
How can I mount a device with specific user rights on start up? I still have some problems figuring it out. I would like to mount the divide with uid=1000 and gid=1000 . My current entry to the /etc/fstab/ file looks like this:
dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
@skub: The owner of /var/www/ is root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000 didin’t work so well (Ubuntu removed the entry after a failed restart).
@skub: It’s a VirtualBox shared folder, so /dev is is right. I figured it out by now, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www works just fine.
I’ve been messing around with this problem in vbox for a while now too. From what I’ve gathered, the correct solution (to the question you aren’t asking) is to add your user into the vboxsf group, and then it doesn’t matter who the owner of the files are — you will have permission to edit them. alcobrov.blogspot.com/2012/06/…
1 Answer 1
To mount a device with certain rights, you can use the -o Option directive while mounting the device. To mount the device you described, run:
mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint
For example mounting a VirtualBox shared folder to /var/www with www-data as owner would look like this:
mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www
If you want to mount the device on startup, you can add the following entry to your /etc/fstab file:
/device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID
Again, with the same example the entry to the /etc/fstab file would look like this:
dev /var/www vboxsf umask=0022,gid=33,uid=33
For filesystems that does not support mounting as a specific user (like ext4) the above will give the error
Unrecognized mount option "uid=33" or missing value
to change the owner of an ext4 mount simply run
chown username /mountpoint
after it has been mounted.