Se você estiver executando um sistema comparável ao Ubuntu 12.10, usando o udev, você deve instruir o udev a atribuir permissões adequadas ao volume lógico que você deseja atribuir ao Virtualbox.
Para verificar as permissões atuais no volume lógico:
$ ls -lL /dev/mapper/vg_usbraid-vm_webserver
brw-rw---- 1 root disk 252, 8 Oct 26 09:26 vg-lv
id
uid=1000(username) gid=1000(groupid) groups=1000(groupid),4(adm),20(dialout),24(cdrom),46(plugdev),115(lpadmin),117(admin),122(sambashare)
E verifique se o ID do grupo do dispositivo está listado na lista de grupos do comando id
.
O problema no exemplo acima é que nem 'root' nem 'disk' estão na lista que id
cospe. Embora seja fácil estender a lista de grupos para um usuário, isso não é exatamente o que você deseja, pois adicionar root
ou disk
à sua conta de usuário é um grande risco de segurança. Você poderia, como usuário normal, gravar em qualquer disco em um nível muito baixo. Uma solução melhor é explicada abaixo.
Com as informações limitadas disponíveis no momento em que escrevo, não posso entrar em muitos detalhes, mas foi o que fiz para realizar uma VM Vbox em execução a partir de um Volume lógico com meu próprio nome de usuário:
Crie o seguinte arquivo: /etc/udev/rules.d/65-vmdmsetup.rules
com conteúdo:
SUBSYSTEM!="block", GOTO="vm_device_mapper_end"
KERNEL!="dm-*", GOTO="vm_device_mapper_end"
ACTION!="add|change", GOTO="vm_device_mapper_end"
# Obtain device status
IMPORT{program}="/sbin/dmsetup export -j%M -m%m"
ENV{DM_NAME}!="?*", GOTO="vm_device_mapper_end"
ENV{DM_NAME}=="vg_usbraid-vm_webserver", GROUP="groupid"
LABEL="vm_device_mapper_end"
Onde:
-
vg_usbraid
é o nome do grupo de volumes -
vm_webserver
é o nome do volume lógico -
groupid
é o id do grupo que vem com seu nome de usuário. Verifique por 'gid =' na saída deid
É claro que você precisa recarregar o udev, mas erros de digitação nas regras do udev podem travar seu sistema. Portanto, certifique-se de ter fechado o máximo de aplicativos possível e, talvez, apenas execute um sync
para liberar o máximo possível de dados para o disco. Considere aumentar o nível de registro para que, caso não funcione, pelo menos você tenha alguma pista sobre o que deu errado.
$ udevadm control --log-priority=info
$ sudo udevadm control --reload
No registro do Ubuntu é redirecionado para /var/log/syslog
.
Somente quando o udev é configurado, você deve criar o volume lógico, caso contrário, o udev não verá os eventos. Se o seu LV já existe, execute um:
$ sudo udevadm trigger --subsystem-match=block
Em seguida, verifique se as permissões foram definidas corretamente usando:
$ ls -lL vg_usbraid-vm_webserver
brw-rw---- 1 root groupid 252, 8 Oct 26 09:26 vg_usbraid-vm_webserver
^^^^^^^
E retorne a alavanca de registro para a configuração padrão:
$ sudo udevadm control --log-priority=err