Могу ли я смонтировать образ файловой системы без прав root? Обычно я бы сделал:
mount -o loop DISK_IMAGE FOLDER
Без использования sudo или установки suid mount
, есть ли подходящий способ сделать это?
Я знаю, что могу использовать fusermount
с некоторыми ISO-образами, но это довольно ограниченно, даже для ISO-образов некоторые из моих образов не могут быть смонтированы, но mount
всегда работают.
mount
бинарный файл не требует разрешений SUID, вы можете использовать fakeroot без проблем.fakeroot
здесь не поможет: он притворяется, что владелец файла отличается, но он не может дать вам разрешения, которых у вас нет, например, для вызова,mount(2)
когда вы не root.Ответы:
Вы не можете монтировать ничего, что администратор не дал вам разрешения на монтирование.
mount
Системный вызов может вызвать только root . Причина этого заключается в том, что существует множество способов повысить привилегии путем монтирования, например монтировать что-либо в системном расположении, создавать файлы, принадлежащие другому пользователю, и использовать программу, которая зависит от владения файлами, создавать файлы setuid или использовать ошибки. в драйверах файловой системы.Команда
mount
setuid root. Но это только позволяет вам монтировать вещи, которые упомянуты вfstab
.Команда
fusermount
setuid root. Он позволяет вам монтировать только через драйвер FUSE и ограничивает ваши возможности предоставлять таким образом файлы с произвольным владением или разрешениями (в большинстве случаев все файлы на монтировании FUSE принадлежат вам).Лучше всего найти файловую систему FUSE , способную считывать образ вашего диска. Для образов ISO 9660 попробуйте как fuseiso, так и поддержку ISO 9660 от UMfuse (доступна в
fuseiso9660
комплекте с Debian ).источник
sudo
(хотя он имеет установленный бит SUID) позволяет только монтироватьfstab
записи. Из этого следует, что (а) бит SUID имеет смысл, так как обычный пользователь может монтироватьfstab
записи (и ему разрешено выполнятьmount
системный вызов) и (б) чтоmount
утилита имеет ограничение, разрешающееfstab
монтировать записи только не коренные пользователи.fstab
есть, предназначены для rootfs и boot. К креплению USB-накопителей я смотрюlsblk
иmount
соответственно. У меня не было проблем с этим.Debian Wiki показывает несколько способов сделать это. Вот один из способов. (Для этого требуется
udisks2
пакет.)Первый
/dev/loop0
будет использоваться для следующего.Но если бы
udisksctl loop-setup
команда вернулась/dev/loop1
, то/dev/loop1
было бы использовано следующее.Вам может потребоваться запустить, если петлевое устройство (ранее созданное) не смонтировано автоматически:
Вы можете посмотреть файлы на диске
Вы можете размонтировать его, когда закончите
и при необходимости:
источник
sudo
только. Сецид или родственные махинации ?-r
опцияudisksctl loop-setup
означает «только для чтения», которую OP не запрашивал, так что опустите ее, чтобы получить доступное для записи монтирование.Вы можете использовать гостевой модуль FUSE для монтирования нескольких типов образов дисков. Это часть экосистемы guestfs и не требует корневых разрешений.
Взгляните на справочную страницу для более подробной информации.
Примеры
1. Для типичного гостя Windows, основной файловой системой которого является первый раздел:
2. Для типичного гостя Linux с файловой системой / boot в первом разделе и корневой файловой системой на логическом томе:
источник
Можно было бы добавить
/etc/fstab
запись для ISO с параметром user, например/test.iso /mnt/iso auto defaults,user 0 1
Но для редактирования этого файла обычно требуется root-доступ, так что это не очень полезно.
источник
На самом деле очень легко монтировать более или менее все, что вы хотите, как обычный пользователь, без привилегий root, при условии, что в нем была создана правильная запись
/etc/fstab
.Конечно, для модификации
/etc/fstab
требуются права суперпользователя. Но одну запись можно использовать с большой гибкостью, чтобы (u) смонтировать множество разных файлов в разных точках монтирования, без какого-либо дальнейшего редактирования/etc/fstab
.Вот два очень коротких (5 строк + комментарии) Bash-скрипта, которые сделают эту работу:
для монтажа
и для демонтажа
Каталог
/tmp/UFS/
создан, чтобы изолировать ссылки и избежать конфликтов. Но символические ссылки могут находиться в любом месте пользовательского пространства, если они остаются на том же месте (тот же путь)./etc/fstab
Запись никогда не меняется либо.ЖИЗНЕННОЕ ПРЕДУПРЕЖДЕНИЕ: Монтаж ограничен по соображениям безопасности. Повышение его гибкости может открыть двери для вредоносного программного обеспечения. Я не эксперт по безопасности, и я бы порекомендовал вам открывать двери не более чем абсолютно необходимо ... используя опции, чтобы ограничить то, что можно сделать с файловыми системами, которые можно монтировать. Если знающий участник может прокомментировать вопросы безопасности, это может быть полезно.
Доступны различные варианты, чтобы ограничить использование монтируемых файловых систем, например,
noexec
которые препятствуют выполнению двоичных файлов илиnosuid
тем самым способствуют безопасности. На самом деле, эти параметры добавляются в качестве параметров по умолчанию, когда эти параметрыuser
илиusers
используются, что обязательно имеет место в том, что мы делаем ниже. Подумайте дважды, прежде чем изменить эти значения по умолчанию. http://en.wikipedia.org/wiki/FstabДругие варианты могут быть добавлены для дополнительной защиты. Например, опция
owner
в/etc/fstab
записи позволит пользователям иметь дело только с файлами или устройствами, которыми они владеют. Смотритеman mount
список вариантов: http://linux.die.net/man/8/mount .Использование этой
/etc/fstab
записи также может быть ограничено через владение user.group каталогом (или каталогами), содержащим символические ссылки.объяснение
Это объяснение было написано до того, как я понял, что могу упростить вещи до двух сценариев выше. Я не думал о них сразу, отчасти потому, что у меня под рукой чуть более сложная проблема, которую они не могут решить без каких-либо дополнительных механизмов. Таким образом, мое объяснение может быть немного более сложным, чем следовало бы, но у меня не хватает смелости переписать все это с нуля.
Основная идея состоит в том, чтобы создать записи
/etc/fstab
, включающие эту опцию,user
илиusers
так, чтобы пользователь мог попроситьmount
выполнить монтирование, указанное в этой записи, указав в качестве аргумента файл, который нужно смонтировать, или точку монтирования (но не обе в моем опыте) ,Вам также нужен правильный вход
umount
(это немного другая проблема - см. Ниже). Этот параметрuser
обычно лучше, чем тот, который разрешаетusers
доступumount
пользователю, смонтировавшему файловую систему,users
и разрешает его всем. К сожалению, опцияuser
не всегда работает и может повлечь за собой некоторые другие шаги для работы. Это обсуждается в опции «пользователь» для монтирования, а не для монтирования .Сначала вы добавляете к
/etc/fstab
записи, такой как:и использовать
/tmp/UFS/drive
в качестве символической ссылки (или символической ссылки) любое устройство или файл, который вы хотите смонтировать, например файл, содержащий образ файловой системы ISO/home/johndoe/john-image-file.iso
.Вы также определяете
/tmp/UFS/mountpoint
как символическую ссылку на точку монтирования, которую вы хотите использовать, скажем/mnt/iso
.Затем вы можете смонтировать
john-image-file.iso
с помощью команды:Этого достаточно на моем Mageia Linux, так как использование петлевых устройств теперь стало неявным и больше не требует использования
-o loop
явно. Я не знаю, как это вообще сегодня. См. При монтаже, когда мне следует использовать петлевое устройство?Этот монтаж появляется в таблицах и командах:
Операция монтирования может работать для любого файла или диска и требует только создания символической ссылки
/tmp/UFS/drive
на этот файл или на устройство для диска. Конечно, для символической ссылки может быть выбрано другое имя и местоположение, если оно никогда не меняется.Демонтаж файла зависит также от правильного использования символических ссылок. В случае обычного устройства, соответствующего некоторому жесткому диску, вы просто используете те же ссылки.
Однако файлы, содержащие образ файловой системы, монтируются с помощью специального типа устройства, называемого циклическим устройством, которое автоматически выделяется при монтировании файла.
Чтобы отключить файл, вам нужно обратиться к устройству цикла, а не к файлу. Следовательно, вам нужна
/etc/fstab
запись, которая соответствует как петлевому устройству, используемому/etc/mtab
здесь/dev/loop0
, так и точке монтирования здесь/mnt/iso
.Вы не можете создать такую запись заранее, поскольку устройство петли может меняться, так как они распределяются динамически. Обратите внимание, что также возможно использовать устройство с фиксированной петлей, но это неудобно другими способами. См. Http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a-regular-user/ ( этот блог действительно вдохновил ответ здесь ).
Тем не менее, вы можете найти название устройства петли, здесь
/dev/loop0
, задав систему, как мы делали выше, несколькими различными способами. Затем/etc/fstab
можно сделать нашу стандартную запись, чтобы она указывала на правильное петлевое устройство через символическую ссылку/tmp/UFS/drive
и на точку монтирования, как было сделано ранее с помощью/tmp/UFS/mountpoint
. После этого файл может быть размонтирован с помощью любой из следующих команд (при условии, что нет двусмысленности/etc/mtab
, что является другой проблемой):Поскольку две символические ссылки нужны только при выдаче команд, они могут быть изменены динамически. Таким образом, наша единственная
/etc/fstab
запись позволяет монтировать любое количество файлов и монтировать их в любом порядке, без прав root.Другие ссылки:
Возможно ли монтировать и модифицировать петлевой файл без sudo / root?
http://www.tuxfiles.org/linuxhelp/fstab.html
источник
mount
команда повышения прав для каждого обычного пользователя? И поэтому проблемы безопасности, связанные с этим? Поправьте меня если я ошибаюсь.device
илиmountpoint
раздел fstab не указывает на допустимую запись. Пользователь должен войти через консольный сеанс и войти,startx
чтобы явно запустить диспетчер отображения.Пакет libguestfs-tools-c имеет команду guestmount, поэтому
df покажет image.iso
для того, чтобы вынести мы имеем:
источник