What gives with the restrictions on mounting devices?

18 views
Skip to first unread message

Stuart Perkins

unread,
Mar 1, 2020, 7:48:21 AM3/1/20
to qubes...@googlegroups.com
I have a 300gb drive image I mount on whichever machine I want to put common things...pictures/documents/etc...and this happens:

Here is my mount scrip..{/mnt/2tb is the mount point for my 2 terrabyte drive}

==============
[admin@dom0 ~]$ cat bin/mount300g.sh
if [ A${1} == A ]
then VM=untrusted
else VM=${1}
fi
MOUNTED=`qvm-block|grep 300g.img|wc -l`
if [ ${MOUNTED} == 1 ]
then
ONVM=`qvm-block|grep 300g.img|awk '{print $3}'`
echo Already Mounted on ${ONVM}
exit 0
fi
sudo losetup -f /mnt/2tb/300g.img
LOOPDEV=`losetup --list | grep -F 300g.img|awk '{print $1}'|awk -F/ '{print $3}'`
qvm-block attach ${VM} dom0:${LOOPDEV}
VMDEV=`qvm-block|grep 300g.img|awk -Fxvd '{print "xvd" substr($2,1,1)}'`
echo Mounted on ${VM} as ${VMDEV}
qvm-run -p ${VM} 'sudo mount -a'
==============


And here is what happens on a freshly opened dom0 command window...

==============
[admin@dom0 ~]$ mount300g.sh untrusted
qvm-block: error: backend vm 'dom0' doesn't expose device 'loop21'
Mounted on untrusted as
mount: /home/user/300g: can't find UUID="b7a87607-d757-41f8-95fe-408268f3b62b".
==============

So, I remove it by dropping the mount with losetup...

Then I issue a "cd" command, which does nothing since I'm still at the home directory...

Then I re-try the mount, and it succeeds...

==============
[admin@dom0 ~]$ mount300g.sh untrusted
Mounted on untrusted as xvdi
==============

Two questions:

1. What sort of half-done edit is this nonesense? It is embarrassing.

2. What exactly is trying to be controlled by restricting the exposure of loop devices to manual mounting anyway? My machine, and I'll mount what I want where I want.

unman

unread,
Mar 1, 2020, 10:03:51 AM3/1/20
to qubes...@googlegroups.com
I wouldnt do this.
I wouldnt do it like this - there's no error checking, you dont test
outputs before moving on to next stage,`mount -a` is almost certainly
not what you want.

That said, it works for me - 300G image on a 1TB drive

What shell are you running? (I note you dont specify in the script)
Is `cd` at all relevant, or would *any* command do?
Would it work if you just waited for a few minutes?

My guess is that there's some issue between the *first* losetup and the
LOOPDEV variable, and on the second run you pick up the *first* - you
could test this with a long sleep between the losetup line and the
LOOPDEV line.

Stuart Perkins

unread,
Mar 1, 2020, 11:26:56 AM3/1/20
to qubes...@googlegroups.com
I understand the security implications...and I take the "risks" with my own stuff. I hadn't thought of just a sleep...I may try it with a 3 second sleep in between. One would think the error message would be something "/dev/loop21 does not exist" though if that were the case. Thanks for the hint though...I hadn't thought of just waiting a bit. My use of "cd" is simply a "do nothing" command..I may try something else like an "ls" and see if I get the same results if the wait doesn't do it. Just an oddness of the error message.


Reply all
Reply to author
Forward
0 new messages