Qual é a maneira correta de compartilhar diretórios com o Ubuntu em execução em uma VM do Virtual Box com permissões corretas?


23

No VirtualBox, qual é a melhor maneira de compartilhar um diretório entre um host do OS X e um convidado do Ubuntu?

  • Anfitrião: Mac OS X 10.7.3
  • Convidado: Ubuntu 12.04
  • O convidado tem um diretório compartilhado montado via configurações do VirtualBox com Access = Full e Auto-Mount = Yes .

O problema com esta configuração é ilustrado abaixo. No meu diretório compartilhado, não posso alterar as permissões (não é um erro de permissão negada, mas elas simplesmente não entram em vigor).

Ubuntu 12.04 (convidado):

% ls -l
total 0
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 10
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 2
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 3
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 4
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 5
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 6
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 7
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 8
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 9

Mac OS X 10.7.3 (host):

$ ls -l
total 0
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 1
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 10
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 2
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 3
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 4
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 5
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 6
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 7
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 8
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 9

Se eu chmod no convidado, nada muda:

% chmod +x 1 | ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

Se eu chmod no host, ele muda no host, mas não no convidado:

$ chmod +x 1 | ls -l 1 # host
-rwxrwx--x  1 <my-mac-user>  staff  0 Apr 17 21:56 1

% ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

Ah, eu descobri, mas não posso postar a resposta por mais 8 horas (pontos insuficientes). A solução é fazer sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, onde o umask é o valor do umaskusuário, uid e gid id <user>, srco nome do compartilhamento VBox e /meida/sf_srco ponto de montagem desejado.
precisa saber é o seguinte

Respostas:


23

Eu descobri isso!

Reproduzir:

  1. Desligue a VM, adicione pastas compartilhadas nas configurações do VBox (Permanente = Sim, Montagem Automática = Não)
  2. Inicie a VM
  3. Em um terminal, execute umask && idcomo o usuário normal para obter algo parecido com isto:

    002 # this is your umask
    uid=1000(luser) gid=1000(luser) groups=1000(luser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare),125(vboxsf)
    
  4. sudo mkdir -p /media/sf_src # src is the shared directory

Para montar o srcdiretório como um teste:

sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src 
                           |   |        |        |   |-> where to mount
                           |   |        |        |       the file
                           |   |        |        |-> name of the shared dir
                           |   |        |            (in VBox settings)
                           |   |        |
                           \   |        /
                        from the `id` command

Para montá-lo automaticamente no login, edite /etc/fstabe adicione o seguinte:

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000

Isto é EXATAMENTE o que eu estava procurando! Acabei criando um grupo de usuários compartilhados para o apache2 e meus usuários que têm acesso à pasta montada. serverfault.com/questions/6895/…
thesmart

Obrigado! Observe que eu tive grandes problemas até descobrir que /sbin/mount.vboxsfera um link simbólico pendente! Apagando e ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfresolvendo o problema! A instalação de adições de convidados provavelmente não foi capaz de desvinculá-la. Passei muito tempo demais descobrir isso!
csl

2
... agora o único problema parece ser que o vboxsf não lida com links simbólicos! Por exemplo, você não pode criar links simbólicos na pasta compartilhada da VM! (Pelo menos no OSX, VirtualBox 4.3.10
csl

Esse procedimento certamente é um dos poucos a chegar lá. No meu caso, porém, quando eu mudar para o diretório compartilhado e tente emitir um comando ls, os trava terminais
demongolem

4

O problema - problemas de permissão no vbox / ubuntu acessando uma unidade compartilhada OSX

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

O objetivo é uma maneira simples de compartilhar diretórios entre os ambientes Mac e Ubuntu. Infelizmente, os exemplos que vi até agora parecem ser um pouco mais complexos do que realmente precisam e não explicam realmente qual é o verdadeiro problema que precisa ser resolvido. Vou tentar lidar com esses dois problemas aqui.

O ambiente aqui é um Mac executando o OSX 10.9.5, com o Virtual Box 4.3.16 executando o Ubuntu-14.04.1 com as extensões Guest instaladas. Coisas de setembro de 2014.

Eu acho que todo o problema aqui é que o uid dos diretórios no Mac e no Ubuntu deve corresponder - Os gid padrão atribuídos a usuários e grupos são diferentes entre OSX e Ubuntu, e é aí que está o problema.

Para acessar um arquivo, é necessário possuí-lo ou ser um membro do grupo que o possui. E como o acesso é realmente baseado no número de identificação do grupo, não no nome do grupo, tudo o que é necessário é criar um número de grupo comum nos dois lados, ao qual os usuários pertencem.

É exatamente isso que a solução abaixo faz. Não se deixe enganar pelo tamanho do que está escrito, é realmente muito simples. Existem muitos exemplos do que está acontecendo.

Vou alternar entre os consoles OSX e VBOX aqui (mac e virtual-box / ubuntu) neste documento - certifique-se de entender em qual janela está.

Nota final: A solução mostrada abaixo é baseada no estabelecimento de um ID de grupo comum entre os ambientes OSX e Ubuntu, para que as permissões de arquivo funcionem. Pode haver outras soluções mais modernas. Este é realmente simples e compreensível, e roda em instalações básicas sem adornos.

OSX: —————

Observe que isso foi feito em um Mac pronto para uso 10.9.5, sem nada nele, não conectado a uma rede corporativa, nada sofisticado em execução, exceto software de estoque. Isto é o mais simples possível.

Quando eu fiz a instalação padrão no Mac, joe_public é o usuário administrador e seu uid foi definido como 501 .

Joes-MacBook-Pro:/ joe_public$ id
uid=501(joe_public) gid=20(staff) groups=20(staff),999(vboxsf),401(com.apple.sharepoint.group.1),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),501(access_bpf),33(_appstore),100(_lpoperator),204(_developer),398(com.apple.access_screensharing),399(com.apple.access_ssh)

Observe que o uid é 501 - esse é o primeiro ID de conta padrão no OSX - nada de especial

Criei alguns diretórios que quero compartilhar no lado do Mac - observe que não os coloquei no diretório de usuários por motivos de backup.

Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/shared
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/public 
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/images

Joes-MacBook-Pro:vdisk joe_public$ ls -al
total 0
drwxr-xr-x   5 joe_public  admin   170 Oct  8 01:08 .
drwxrwxr-t  36 root        admin  1292 Oct  6 02:26 ..
drwxrwxrwx   2 joe_public  admin    68 Oct  6 01:08 images
drwxr-xr-x   3 joe_public  admin   102 Oct  8 01:07 public
drwxrwxrwx   4 joe_public  admin   136 Oct  8 00:45 shared

VBOX: ——————

Caixa virtual padrão simples e instalação do ubuntu - novamente, joe_public é o administrador padrão criado quando eu instalei o ubuntu.

Observe novamente que o espaço de nome entre o OSX e o Ubuntu é completamente diferente. Não há absolutamente nenhuma relação entre os dois nomes aqui.

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ id
uid=1000(joe_public) gid=1000(joe_public)   groups=1000(joe_public),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

Criou três pontos de montagem, usando o gui Configuração da Caixa Virtual -> Pastas Compartilhadas.

Name      Path              Auto-mount  Access
images    /vdisk/images     Yes         Full
public    /vdisk/pubic      Yes         Read-only
shared    /vdisk/shared     Yes         Full

NOTA: Na verdade, tive que reiniciar minha sessão para que todos esses pontos de montagem aparecessem.

joe_public@joe_public-ubuntu-VirtualBox:~$ mount | grep vboxsf
shared on /media/sf_shared type vboxsf (gid=999,rw)
public on /media/sf_public type vboxsf (gid=999,rw)
images on /media/sf_images type vboxsf (gid=999,rw)

Observe que o gid para esses é 999 - este é o grupo vboxsf .

joe_public@joe_public-ubuntu-VirtualBox:~$ grep 999 /etc/group
vboxsf:x:999

Isso foi atribuído automaticamente pela Virtual Box versão 4.3.16 para nós. A documentação do vbox mostra maneiras de como alterar isso se você montar o caminho manualmente através da linha de comando, mas quem se lembrará disso - basta aceitar os padrões que a GUI impõe sobre nós.

Mas não funciona (esperado neste momento - é isso que estamos tentando resolver)

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

Observe que, neste momento, joe_public não é membro desse grupo vboxsf - e isso será um problema até que possamos corrigi-lo. FYI: Estes são os grupos padrão atribuídos à conta quando ela é criada.

joe_public@joe_public-ubuntu-VirtualBox:/media$ grep joe_public /etc/group
adm:x:4:syslog,joe_public
cdrom:x:24:joe_public
sudo:x:27:joe_public
dip:x:30:joe_public
plugdev:x:46:joe_public
lpadmin:x:108:joe_public
joe_public:x:1000:
sambashare:x:124:joe_public

Então, o que temos neste momento (ainda não fizemos nada para corrigi-lo)

•   On mac,   joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac,   vboxsf does not exist

Não queremos alterar o gid do usuário joe_public de nenhum dos lados, pois isso é chato em sistemas já instalados e não resolve isso para outros usuários. A solução mais simples é criar um ID de grupo correspondente - vboxsf - no lado do mac e garantir que joe_public seja um membro dos dois lados.

Portanto, ainda no vbox / ubuntu, faça do joe_public um membro do grupo 999 vboxsf

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
joe_public@joe_public-ubuntu-VirtualBox:/$ grep 999 /etc/group
vboxsf:x:999:joe_public

Acho que saí da minha conta e voltei novamente aqui depois de fazer isso.

OSX: —————

Agora precisamos criar um grupo vboxsf no mac. Duvido que o nome realmente faça a diferença aqui - é o ID do grupo 999 que é importante. Lembre-se de que os espaços para nome do sistema de diretórios (assim como os nomes de usuário) são diferentes entre os sistemas operacionais host e VM. Mas apenas para tornar a vida saudável, todos chamamos de vboxsf no mac. O mesmo raciocínio pelo qual joe_public é usado como um nome de usuário nos dois lados.

O OSX não possui um comando add group simples como o linux - portanto, use o comando dscl para fazer isso em várias etapas. Consulte a documentação do Mac OS para obter mais detalhes sobre isso. Observe que criamos o grupo vboxsf e adicionamos joe_public a esse grupo aqui.

sudo dscl . -create /Groups/vboxsf
sudo dscl . -create /Groups/vboxsf name vboxsf
sudo dscl . -create /Groups/vboxsf passwd "*”
sudo dscl . -create /Groups/vboxsf gid 999
sudo dscl . -create /Groups/vboxsf GroupMembership joe_public

Então, neste momento, deveríamos ter

•   On mac, joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac, vboxsf gid is 999
•   On linux, joe_public is member of vboxsf 
•   On mac, joe_public is member of vboxsf

A prova aqui é se funciona - então esse é o próximo passo

VBOX: ——————

cd em nosso diretório e toque em um arquivo

joe_public@joe_public-ubuntu-VirtualBox:/$ cd /media/sf_shared
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ touch foo

Verifique se criamos um arquivo com sucesso.

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  102 Oct  8 00:44 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

OSX: —————

Joes-MacBook-Pro:shared joe_public$ cd /vdisk/shared
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  3 joe_public  vboxsf  102 Oct  8 00:44 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:44 foo

Joes-MacBook-Pro:shared joe_public$ touch bar
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  4 joe_public  vboxsf  136 Oct  8 00:45 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:45 bar

VBOX: ——————

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  136 Oct  8 00:45 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

Tudo parece estar funcionando ..

VBOX: —————— VERIFICAÇÃO FINAL

O que estamos verificando aqui é que tudo depende do usuário joe_public ser membro do grupo vboxsf - e a maneira mais simples é simplesmente remover joe_public do grupo

Removendo o usuário joe_public do grupo vboxsf

joe_public@joe_public-ubuntu-VirtualBox:~$ sudo gpasswd -d joe_public vboxsf
log out/in ubuntu

Ver se conseguimos acessar nosso diretório - e não podemos - e isso prova que é um problema de permissão de grupo

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

Adicionar usuário novamente ao vboxsf

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
log out/in ubuntu

Funciona de novo!

joe_public@joe_public-ubuntu-VirtualBox:~$ ls -al /media/sf_shared
total 4
drwxrwx--- 1 root vboxsf  170 Oct  8 01:48 .
drwxr-xr-x 6 root root   4096 Oct  8 01:25 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

VBOX: - MAIS UM PROBLEMA - links simbólicos no vbox -------

Se você acessar / media / sf_shared , verá que os links simbólicos nos diretórios compartilhados simplesmente não funcionam. Esse é realmente um grande problema se você estiver tentando configurar um ambiente de desenvolvimento Linux completo em uma unidade compartilhada.

joe_public@joe_public-ubuntu-VirtualBox:/media$ cd sf_images
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ls
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ mkdir test
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2
ln: failed to create symbolic link ‘test2’: Read-only file system

Por padrão, links simbólicos não são suportados em compartilhamentos de caixas virtuais. Veja abaixo explicações. Basicamente, no meu entender, os links simbólicos são uma brecha de segurança que foi "corrigida" no Virtual Box, desativando o suporte a eles no período 4.1.8 (2011). Estou executando o 4.3.16 aqui ...

https://www.virtualbox.org/ticket/10085

http://ahtik.com/blog/fixing-your-virtualbox-shared-folder-symlink-error/

Felizmente, há uma porta traseira para reativá-lo, através do comando VBoxManage do host . Como sempre, entenda as falhas de segurança aqui que você pode estar abrindo. Estou em uma máquina de desenvolvimento autônoma, portanto isso não parece ser um problema.

OSX: ------------

Joes-MacBook-Pro:shared pbradstr$ VBoxManage setextradata Ubuntu VBoxInternal2/SharedFoldersEnableSymlinksCreate/shared 1   

Nota: Ubuntu é o nome da minha vm e shared é o nome do diretório compartilhado.

Você pode obter o nome vm assim:

Joes-MacBook-Pro:shared pbradstr$ VBoxManage list vms
"Ubuntu" {8461045a-1cee-4d44-8148-05920a47cee0}
Joes-MacBook-Pro:shared pbradstr$

E o nome das pastas compartilhadas, através da GUI da Caixa Virtual ou

Joes-MacBook-Pro:shared pbradstr$ VBoxManage showvminfo Ubuntu | grep -A 5 "Shared folders"
Shared folders:  

Name: 'shared', Host path: '/vdisk/shared' (machine mapping), writable
Name: 'public', Host path: '/vdisk/public' (machine mapping), readonly
Name: 'images', Host path: '/vdisk/images' (machine mapping), writable

Reiniciei todo o sistema de caixas virtuais aqui, não descobri o requisito mínimo para isso.

Enfim, para testar isso, volte para a janela do vbox

VBOX: ---------

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2

Nenhum erro - e para verificar

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -ald test*
drwxrwx--- 1 root vboxsf 102 Oct  8 11:33 test
lrwxrwx--- 1 root vboxsf   4 Oct  8 13:10 test2 -> test

OSX: ----------

E de volta ao lado do mac - apenas para provar que tudo funciona

Joes-MacBook-Pro:shared pbradstr$ ln -s test test3
Joes-MacBook-Pro:shared pbradstr$ ls -ald test*
drwxr-xr-x  4 joe_public  admin  136 Oct  8 13:20 test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:10 test2 -> test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:21 test3 -> test

Observe que eu só testei isso em um host OSX e no cliente de caixa virtual do Ubuntu. As referências listadas acima parecem indicar que pode haver um problema ao executar um host baseado no Windows.

EXERCÍCIO ESQUERDO PARA O ESTUDANTE ———————

O benefício do método listado acima é que ele pode ser executado em uma máquina autônoma, sem acesso à rede. Mas se você pensar sobre isso, esse problema de nome-versos-id deve ser um problema comum entre quaisquer ambientes de computação heterogêneos.

Que outras soluções estão disponíveis onde estão disponíveis soluções para esse problema? - Coisas como o Active Directory (um produto da Microsoft) e similares podem resolver isso. Seria interessante obter uma coleção dessas soluções e comparar lá vários recursos e vantagens e desvantagens.


3

Para mim, tudo o que eu precisava fazer era:

sudo adduser [username] vboxsf

Isso foi o suficiente para eu ter acesso às pastas compartilhadas. A pasta possui um grupo de vboxsf, o usuário precisa apenas ser atribuído a esse grupo para obter acesso. Se você precisar definir um acesso mais estrito ou mais controlável, pode ser necessário seguir as etapas de montagem manualmente com o ID do usuário correto.

Para mim, a solução fstab não funcionou e fez com que a máquina não inicializasse corretamente.


3

Depois de criar uma pasta compartilhada nas configurações do Virtualbox, o Ubuntu montará automaticamente para você na próxima vez que você inicializar o sistema (você verá um ícone na área de trabalho).

insira a descrição da imagem aqui

Mas se você não estiver usando uma conta root, não terá permissão para acessá-la. O que você precisa fazer é adicionar sua conta de usuário a um grupo de usuários chamado 'vboxsf':

sudo usermod -G vboxsf -a $USER

Então saia e entre novamente. Você pode acessar a pasta compartilhada agora.


3

Desde o VirtualBox v4.0, é fácil resolver esses problemas de permissão! Você não precisa se preocupar com mkdir, mount, chmod, umask, etc. Para acessar suas pastas auto-montada compartilhada (que aparecem no /mediacom sf_prefixos por padrão), só há uma coisa que você precisa fazer: Adicionar o seu nome de usuário para o vboxsfgrupo via sudo usermod -a -G vboxsf [username].

Por conveniência, você também pode criar links simbólicos para as pastas compartilhadas na sua homepasta (por exemplo, ln -s /media/sf_Stuff ~/Stuff).

Fonte: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


Ponto interessante sobre o link simbólico.
Shaun Dychko

0

Encontrei isso, testei e funcionou no Ubuntu e no Xubuntu, apenas o recurso automount não funcionou para mim

I. Instalar adições de convidados

Primeiramente, é necessário instalar as adições de convidados do VirtualBox no sistema host:

Escolha no menu do VitualBox: Dispositivos -> Instalar adições de convidados…

Ele monta um novo ISO para o sistema host. Um novo CD aparece no Ubuntu (ou monte-o). Execute como root o script de instalação do VBoxLinuxAdditions-x86.run (porque é um Mac baseado em Intel) em uma janela do Terminal:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Provavelmente, você será solicitado a reiniciar o Ubuntu.

A instalação das adições de convidados tem muitas vantagens, como a adoção da resolução da tela (o tamanho da janela é a resolução do sistema, por exemplo, sem barras de rolagem), modo fácil do mouse (não é necessário pressionar o botão de comando esquerdo para liberar o cursor do mouse) e o que estamos procurando para pastas compartilhadas.

II Criar pasta compartilhada

O objetivo é acessar uma pasta compartilhada, o que é uma maneira mais fácil do que usar sshd ou Samba.

Escolha no menu do VitualBox: Dispositivos -> Pastas compartilhadas ...

  • Clique no botão Adicionar nova pasta compartilhada.
  • Escolha um caminho de pasta - uma pasta no disco rígido do seu Mac, por exemplo, / Users / ondrej / Pictures.
  • Escolha um nome de pasta - um nome que identifica essa pasta compartilhada no Ubuntu (como um sistema host), por exemplo, imagens.
  • Selecione Tornar permanente - se você quiser persistir nessa definição de pasta compartilhada.
  • Clique em OK.
  • Clique em OK para fechar a lista de pastas compartilhadas.

III Montar pasta compartilhada

Monte a pasta compartilhada criada em uma pasta com permissões para seu usuário. Vamos abrir uma janela do Terminal no Ubuntu e:

Crie uma pasta onde será montada a pasta compartilhada. (Pule esta etapa se já tiver uma pasta para isso.)

mkdir DIR

por exemplo (em / tmp)

mkdir share

Obtenha seu usuário:

id

O resultado será algo como:

uid=1000(ondrej)gid=1000(ondrej)groups=4(adm),20(dialout),24(cdrom),
46(plugdev),112(lpadmin),119(admin),120(sambashare),1000(ondrej)

o uid do meu usuário é 1000. Monte a pasta compartilhada SHARED_FOLDER_NAME na pasta MOUNTED_FOLDER com propriedade do usuário com o uid USER_ID como raiz:

sudo mount -t vboxsf -o uid=USER_ID SHARED_FOLDER_NAME MOUNTED_FOLDER

por exemplo

sudo mount -t vboxsf -o uid=1000 pictures /tmp/share

A especificação do parâmetro uid permite gravar na pasta compartilhada do seu usuário. A pasta montada MOUNTED_FOLDER (por exemplo, / tmp / share) contém arquivos da pasta compartilhada no disco rígido do seu Mac. Também é possível gravar na pasta de compartilhamento. Opcionalmente, uma pasta compartilhada pode ser montada automaticamente na inicialização da máquina virtual. Adicione a seguinte linha ao arquivo / etc / fstab (como root, por exemplo, sudo vim / etc / fstab):

SHARED_FOLDER_NAME /PATH/TO/MOUNTED/FOLDER vboxsf uid=1000,gid=1000 0 0

por exemplo

pictures /tmp/share vboxsf uid=1000,gid=1000 0 0

onde os valores uid e gid podem ser encontrados na saída do comando id (consulte a etapa 2 para exemplo detalhado). A pasta compartilhada estará disponível também após a reinicialização da máquina virtual.

Fonte: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-shared-folders/


0

SO host : SO macOS
VM (convidado) : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
O SO host e o SO convidado devem ter o mesmo usuário (mais adiante no texto: nome de usuário ).

Etapa 1: Instalar adições de convidados do VirtualBox :

1.1 Localize as adições de convidado do VirtualBox,

$ cd /Applications/VirtualBox.app/Contents/MacOS/
$ cp VBoxGuestAdditions.iso ~/Downloads/

1.2 Inicie a VM

1.3 Clique no ícone do CD na barra de tarefas inferior direita

1.4 Selecione "Escolher imagem do disco ..." "e procure o VBoxGuestAdditions.iso

1.5 No tipo de terminal convidado (você também pode fazer isso no terminal host se fizer o SSH nele):

$ sudo su
$ apt update
$ apt upgrade
$ apt-get install dkms build-essential linux-headers-generic gcc make
$ mount /dev/cdrom /mnt
$ cd /mnt
$ sh ./VBoxLinuxAdditions.run
$ reboot

Etapa 2: Configuração de pastas compartilhadas:

2.1 Crie regras na VM:

  • Pare a VM
  • Vamos para Settings > Shared Folders
  • Clique no Add new port forwarding rule botão verde no canto superior direito da janela.
  • Pesquise e selecione a pasta que você deseja compartilhar (por exemplo: / path / to / shared / host_folder )
  • Selecione as opções Auto-mounteMake Permanent
  • Inicie a VM

2.2 Para montar uma pasta compartilhada, /optvocê deve criar uma shared_folder_dirsubpasta e definir as permissões apropriadas para ela:

$ sudo mkdir -p /opt/shared_folder_dir
$ sudo chmod ug+w -Rv /opt/shared_folder_dir
$ sudo chown username:username -Rv /opt/shared_folder_dir

2.3 Adicione o nome de usuário ao grupo vboxsf :

$ sudo adduser username vboxsf
$ sudo usermod -a -G vboxsf username

2.4 Reinicie a VM para aplicar as alterações:

$ sudo reboot

Etapa 3: Montagem automática host_folderem /opt/shared_folder_dir:

3.1 Altere o /etc/rc.local da VM:

$ sudo nano /etc/rc.local

e coloque o seguinte logo acima exit 0:

# 'folder_name' = given in the shared folders configuration
# 'path/to/shared/folders' = guest path to access the shared folders from
# 'id' = prints uid/gid
# sudo mount -t vboxsf -o uid={uid},gid={gid} {shared_folder_name} {path/to/shared/folder}
sleep 5
sudo mount -t vboxsf -o uid=1000,gid=1000 host_folder /opt/shared_folder_dir
exit 0
<<< EOF >>>

Nota: Adicioneisleep 5para executar a operação de montagem após o início do VirtualBox Guest Additions. Você pode verificar isso porjournalctl -bcomando.

3.2 Reinicie a VM para aplicar as alterações:

$ sudo reboot

Veja também


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.