Linux mount without root

Как смонтировать файл образа без прав root?

Могу ли я смонтировать образ файловой системы без прав root? Обычно я бы сделал:

Без использования sudo или установки suid mount , есть ли подходящий способ сделать это?

Я знаю, что могу использовать fusermount с некоторыми ISO-образами, но это довольно ограниченно, даже для ISO-образов некоторые из моих образов не могут быть смонтированы, но mount всегда работают.

Вы не можете монтировать ничего, что администратор не дал вам разрешения на монтирование. mount Системный вызов может вызвать только root . Причина этого заключается в том, что существует множество способов повысить привилегии путем монтирования, например монтировать что-либо в системном расположении, создавать файлы, принадлежащие другому пользователю, и использовать программу, которая зависит от владения файлами, создавать файлы setuid или использовать ошибки. в драйверах файловой системы.

Команда mount setuid root. Но это только позволяет вам монтировать вещи, которые упомянуты в fstab .

Команда fusermount setuid root. Он позволяет вам монтировать только через драйвер FUSE и ограничивает ваши возможности предоставлять таким образом файлы с произвольным владением или разрешениями (в большинстве случаев все файлы на монтировании FUSE принадлежат вам).

Лучше всего найти файловую систему FUSE , способную считывать образ вашего диска. Для образов ISO 9660 попробуйте как fuseiso, так и поддержку ISO 9660 от UMfuse (доступна в fuseiso9660 комплекте с Debian ).

Debian Wiki показывает несколько способов сделать это. Вот один из способов. (Для этого требуется udisks2 пакет.)

/dev/loop0 будет использоваться для следующего.

Но если бы udisksctl loop-setup команда вернулась /dev/loop1 , то /dev/loop1 было бы использовано следующее.

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

Вы можете посмотреть файлы на диске

Вы можете размонтировать его, когда закончите

и при необходимости:

Вы можете использовать гостевой модуль 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 Запись никогда не меняется либо.

Читайте также:  Счетчики производительности windows sql

ЖИЗНЕННОЕ ПРЕДУПРЕЖДЕНИЕ: Монтаж ограничен по соображениям безопасности. Повышение его гибкости может открыть двери для вредоносного программного обеспечения. Я не эксперт по безопасности, и я бы порекомендовал вам открывать двери не более чем абсолютно необходимо . используя опции, чтобы ограничить то, что можно сделать с файловыми системами, которые можно монтировать. Если знающий участник может прокомментировать вопросы безопасности, это может быть полезно.

Доступны различные варианты, чтобы ограничить использование монтируемых файловых систем, например, 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 на этот файл или на устройство для диска. Конечно, для символической ссылки может быть выбрано другое имя и местоположение, если оно никогда не меняется.

Читайте также:  Windows shell run as user

Демонтаж файла зависит также от правильного использования символических ссылок. В случае обычного устройства, соответствующего некоторому жесткому диску, вы просто используете те же ссылки.

Однако файлы, содержащие образ файловой системы, монтируются с помощью специального типа устройства, называемого циклическим устройством, которое автоматически выделяется при монтировании файла.

Чтобы отключить файл, вам нужно обратиться к устройству цикла, а не к файлу. Следовательно, вам нужна /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.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Решено: mount без root’a (всё равно не даёт, хоть убей)

Модератор: Bizdelnick

Решено: mount без root’a

Сообщение Чучок » 26.03.2007 01:42

Re: Решено: mount без root’a

Сообщение serzh-z » 26.03.2007 01:58

Re: Решено: mount без root’a

Сообщение elide » 26.03.2007 04:02

Re: Решено: mount без root’a

Сообщение 4yKoTkA » 26.03.2007 08:23

Re: Решено: mount без root’a

Сообщение Juliette » 26.03.2007 09:06

Re: Решено: mount без root’a

Сообщение elide » 26.03.2007 17:13

Re: Решено: mount без root’a

Сообщение BiG_NoBoDy » 26.03.2007 17:21

ja toze dumaju mozet dobavit v /etc/fstab

/dev/hda5 / ext3 defaults 1 1

/dev/hda5 / ext3 defaults ,users 1 1

Re: Решено: mount без root’a

ja toze dumaju mozet dobavit v /etc/fstab

/dev/hda5 / ext3 defaults 1 1

/dev/hda5 / ext3 defaults ,users 1 1

Сегодня пятна на солнце, что ли?
Человек хочет смонтировать iso образ через loop. Вот ему уже предложили монтировать корневой каталог с опцией users. Скоро предложат на лошади покататься.

Автор, ответь на вопрос elide, какие ошибки выскакивают при попытке примонтирования?

Re: Решено: mount без root’a

Сообщение BiG_NoBoDy » 26.03.2007 17:48

# mount /home/shark/dbox/Heroes.of.Might.and.Magic.III.-.The.Shadow.of.Death.iso /home/shark/dbox/hcd -t iso9660 -o loop

em paskolku ja slab v kirilice :] nitak ponial :/ bivajet :]

no fstab :] bil primer 🙂 ja dumaju kazdij kotorij ni durak ponial sto eto example 🙂 i kazdij example nisoodtvedstvujet realnim vesciam a podciorknutaja, v etom sluceje bold ciast imejet znocenije ;]

em dlia togo stob user mok primountirivat eto :] nuzno v fstab zanisti :/ ni tolko vot leva sto tolko odin iso smozet primountirvat :/ heh nu ja hatiabi tak delal :] ili prosto zapisal na CD 🙂 CD vet nidorogoje udovolstvije 😉

Источник

mount a cifs share without root/fstab

Hello is it possible to mount a samba share without root privileges?

Читайте также:  Smart pianist yamaha windows

Currently I have a java program that needs to access a smb share. (it will index every file on the smb share and will create some pdfs)

Since the IP or the DNS name of the share could change (it should be changeable on the interface) i can’t put it in the fstab file.

Also i don’t want to run my application as a root user, since that would be really bad. Are there any other things that I could do, that ALL users in a linux system could mount cifs shares without putting the mount point into the fstab file?

1 Answer 1

EDIT:

this old post of mine resurfaced to my attention recently. The part about finding samba shares on the LAN can be gretaly improved, as follows.

First use an nmap script to find the shares:

(if your LAN is not 192.168.1.0/24, please modify accordingly). Notice the use of the option -oX — which sends output to the screen in XML format, the most suitable one for scripting.

Now process the output with xmllint:

This locates the value of the key attribute in all table nodes which have one, producing output in the form:

Notice one annoying feature: versions of xmllint before 2.9.9 cannot separate different matches with a new line, read this answer on a sister site. If you need more info on xpath or xmllint , you may read here and here, respectively.

If you already know the share name, and you are positive there no white spaces in its name, you can combine all of the above to obtain the share name and address, as

which yields something like

cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

You cannot escape being root if you wish to mount a resource for all users: after all, you are trespassing on other users’ system configuration, and only root is allowed to do that.

Despite all of your constrains, you can still do this. You will have to write a shell script that finds the share to be mounted, then mounts it. I will outline it for you (sorry, I am in a rush).

(assuming your LAN is 192.168.1.0, substitute the appropriate numbers for your LAN) will return a list of all active pcs.

feed that list to this command, one at a time,

and it will return the NetBios name of the pc in question.

query the existence of Samba shares with this command:

this will give you a list of all shares on this system, using the netBios name you just found. Amidst these results, you will find the samba share you need.

At this point, you know IP address and NetBios name of the host pc, and of course the name of the Samba share you are interested in. You can now mount the share as root, as you like.

If you script these commands, you can:

execute it at will as root just to test it;

insert it in crontab (as root, crontab -e) with the follwoing line:

having made sure that my_special_script is executable. The share will be mounted then every time you boot.

Источник

Оцените статью