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
virtualbox
permissions
mac
jmdeldin
fonte
fonte
sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src
, onde o umask é o valor doumask
usuário, uid e gidid <user>
,src
o nome do compartilhamento VBox e/meida/sf_src
o ponto de montagem desejado.Respostas:
Eu descobri isso!
Reproduzir:
Em um terminal, execute
umask && id
como o usuário normal para obter algo parecido com isto:sudo mkdir -p /media/sf_src # src is the shared directory
Para montar o
src
diretório como um teste:Para montá-lo automaticamente no login, edite
/etc/fstab
e adicione o seguinte:fonte
/sbin/mount.vboxsf
era um link simbólico pendente! Apagando eln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
resolvendo o problema! A instalação de adições de convidados provavelmente não foi capaz de desvinculá-la. Passei muito tempo demais descobrir isso!O problema - problemas de permissão no vbox / ubuntu acessando uma unidade compartilhada OSX
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 .
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.
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.
Criou três pontos de montagem, usando o gui Configuração da Caixa Virtual -> Pastas Compartilhadas.
NOTA: Na verdade, tive que reiniciar minha sessão para que todos esses pontos de montagem aparecessem.
Observe que o gid para esses é 999 - este é o grupo vboxsf .
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)
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.
Então, o que temos neste momento (ainda não fizemos nada para corrigi-lo)
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
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.
Então, neste momento, deveríamos ter
A prova aqui é se funciona - então esse é o próximo passo
VBOX: ——————
cd em nosso diretório e toque em um arquivo
Verifique se criamos um arquivo com sucesso.
OSX: —————
VBOX: ——————
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
Ver se conseguimos acessar nosso diretório - e não podemos - e isso prova que é um problema de permissão de grupo
Adicionar usuário novamente ao vboxsf
Funciona de novo!
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.
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: ------------
Nota: Ubuntu é o nome da minha vm e shared é o nome do diretório compartilhado.
Você pode obter o nome vm assim:
E o nome das pastas compartilhadas, através da GUI da Caixa Virtual ou
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: ---------
Nenhum erro - e para verificar
OSX: ----------
E de volta ao lado do mac - apenas para provar que tudo funciona
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.
fonte
Para mim, tudo o que eu precisava fazer era:
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.
fonte
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).
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':
Então saia e entre novamente. Você pode acessar a pasta compartilhada agora.
fonte
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/media
comsf_
prefixos por padrão), só há uma coisa que você precisa fazer: Adicionar o seu nome de usuário para ovboxsf
grupo viasudo usermod -a -G vboxsf [username]
.Por conveniência, você também pode criar links simbólicos para as pastas compartilhadas na sua
home
pasta (por exemplo,ln -s /media/sf_Stuff ~/Stuff
).Fonte: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto
fonte
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:
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 ...
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.)
por exemplo (em / tmp)
Obtenha seu usuário:
O resultado será algo como:
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:
por exemplo
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):
por exemplo
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/
fonte
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,
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):
Etapa 2: Configuração de pastas compartilhadas:
2.1 Crie regras na VM:
Settings > Shared Folders
Add new port forwarding rule
botão verde no canto superior direito da janela.Auto-mount
eMake Permanent
2.2 Para montar uma pasta compartilhada,
/opt
você deve criar umashared_folder_dir
subpasta e definir as permissões apropriadas para ela:2.3 Adicione o nome de usuário ao grupo vboxsf :
2.4 Reinicie a VM para aplicar as alterações:
Etapa 3: Montagem automática
host_folder
em/opt/shared_folder_dir
:3.1 Altere o /etc/rc.local da VM:
e coloque o seguinte logo acima
exit 0
:3.2 Reinicie a VM para aplicar as alterações:
Veja também
fonte
De /ubuntu//a/171357/476506
O comando acima dará acesso à pasta compartilhada para "usuário".
fonte