Problemas de permissão de arquivo com pastas compartilhadas na Caixa Virtual (Ubuntu Guest, Windows Host)


103

Estou usando o Ubuntu no Virtual Box e tenho uma pasta que é compartilhada entre o host (Windows) e a VM (Ubuntu). Quando abro qualquer arquivo na pasta de compartilhamento no Ubuntu, não posso alterá-lo, pois seu proprietário está definido como root.

Como posso mudar a propriedade para mim?

Aqui está a saída de ls -l:

-rwxrwxrwx 1 root root 0 2012-10-05 19:17 BuildNotes.txt

A saída de dfé:

m@m-Linux:~/Desktop/vbox_shared$ df
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/sda1     29640780  10209652  17925440  37% /
none            509032       260    508772   1% /dev
none            513252       168    513084   1% /dev/shm
none            513252        88    513164   1% /var/run
none            513252         0    513252   0% /var/lock
none            513252         0    513252   0% /lib/init/rw
Ubuntu       214153212  31893804 182259408  15% /media/sf_Ubuntu
/dev/sr0         53914     53914         0 100% /media/VBOXADDITIONS_4.2.0_80737
Ubuntu       214153212  31893804 182259408  15% /home/m/Desktop/vbox_shared

As opções na VM são montadas automaticamente e o readoly não é verificado.

Tentou usar /media/sf_Ubuntu, mas obteve erro de permissão:

m@m-Linux:/media$ ls -l 
total 10
drwxrwx--- 1 root vboxsf 4096 2012-10-23 15:35 sf_Ubuntu
drwxrwx--- 2 root vboxsf 4096 2012-10-21 23:41 sf_vbox_shared
dr-xr-xr-x 6 m    m      2048 2012-09-13 07:19 VBOXADDITIONS_4.2.0_80737
m@m-Linux:/media$ cd sf_Ubuntu/
bash: cd: sf_Ubuntu/: Permission denied
m@m-Linux:/media$ cd sf_vbox_shared/
bash: cd: sf_vbox_shared/: Permission denied

Por favor, note que estou no grupo vboxsf:

m@m-Linux:~$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)

Como você montou a pasta compartilhada? Você está permitindo que ele seja montado automaticamente pelos utilitários convidados do VirtualBox (por exemplo, / media / sf_something) ou você o montou manualmente usando o comando mount?
EightBitTony 23/10/12

Além disso, você pode descrever como você configurou o compartilhamento no VirtualBox no Windows? Existem três opções para o compartilhamento, somente leitura, montagem automática e permanente, quais opções você marcou.
EightBitTony

Envie atualizações para sua pergunta - não como comentários. Por favor inclua a saída dfe o comando que você usou para montar manualmente o sistema de arquivos.
EightBitTony

Obrigado - você verá que existe um sistema de arquivos / media / sf_Ubuntu. Essa é a sua pasta compartilhada, você não precisa montá-la manualmente. Eu sugiro que você desmonte a coisa / home / m / Desktop e use / media / sf_Ubuntu, que funciona conforme a minha resposta abaixo.
EightBitTony

@ Tony: Não consigo acessar esta pasta. Por favor, veja minha pergunta original, que eu adiciono mais informações
user654019

Respostas:


159

A maneira comum de obter acesso aos arquivos agora é permitir que o VirtualBox monte automaticamente a pasta compartilhada (que será exibida abaixo /media/sf_directory_name) e adicione seu usuário comum do Ubuntu ao vboxsfgrupo (como root #).

# usermod -aG vboxsf <youruser>

Por padrão, sem ação manual, as montagens são assim,

drwxrwx--- 1 root vboxsf 40960 Oct 23 10:42 sf_<name>

para que o vboxsfgrupo tenha acesso total. Ao adicionar seu usuário a esse grupo, você obtém acesso total. Para que você não se preocupe em alterar as permissões deles (o que não faz sentido no host do Windows), basta dar-se acesso.

Nesse caso específico, essa é a pasta compartilhada montada automaticamente,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

e é esse diretório que deve ser usado para acessar a Pasta Compartilhada, colocando o usuário local no vboxsfgrupo. Se você deseja um link 'melhor' no diretório inicial do usuário, sempre pode criar um link simbólico.

ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared

Você precisará reiniciar sua VM para que essas alterações entrem em vigor

Se você montar manualmente a pasta compartilhada, precisará usar as opções relevantes no mountcomando para definir a pasta com a propriedade correta (por exemplo, as opções gid, uid e umask para mount). Isso ocorre porque o sistema operacional host não suporta o mesmo sistema de permissão que o Linux, portanto, o VirtualBox não tem como saber quem deve possuir os arquivos.

No entanto, eu recomendo apenas configurar a pasta compartilhada para ser montada automaticamente (é uma configuração na configuração da pasta compartilhada no próprio VirtualBox).


Para evitar dúvidas, não acredito que você possa alterar as permissões normalmente, nesse sistema de arquivos, se montado de maneira regular,

tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ sudo chown tony tst.txt
[sudo] password for tony: 
tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ 

2
Quando tentei isso, recebi a mensagem de que o usuário já está no grupo, mas quando estou tentando alterar um arquivo na pasta de compartilhamento, estou recebendo um erro quando quero salvá-lo. O erro é: Não foi possível salvar o arquivo /home/m/Desktop/vbox_shared/test.tst Erro inesperado: erro ao renomear arquivo temporário: Arquivo de texto ocupado.
user654019

Esse é um problema diferente, potencialmente não devido a permissões. Você pode criar um novo arquivo ou modificar um arquivo diferente. Espere - / home / m / Desktop / vbox_shared? Você montou manualmente a pasta compartilhada? Esse não é o caminho padrão.
EightBitTony

Verificando o sistema, descobri que só tenho permissão para criar ou excluir arquivos e não a permissão de leitura / gravação. Como posso dar a mim mesmo?
user654019

9
Parece que a reinicialização é necessária para que ela entre em vigor.
Eric Wang

3
VOCÊ MERECE UMA CERVEJA POR ESTA RESPOSTA !!! Eu não consegui fazer isso funcionar até que me deparei com isso. Não posso acreditar que isso não está mais lá fora. Eu gostaria de poder votar mais de uma vez !!
Tensigh

3

Acabei de ter o mesmo problema com minha pasta compartilhada Win-Ubuntu, e a maneira como a resolvi foi adicionando meu usuário ao grupo vboxsf, editando o arquivo / etc / group. Espero que funcione para voce. Aqui em baixo, você encontra um pequeno esquema de como eu editei o arquivo

(edit /etc/group)
...
...
...
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
openquake:x:1000:
sambashare:x:124:openquake,luisa
vboxsf:x:999:openquake,luisa   ##This is the line I add my user
postgres:x:125:
rabbitmq:x:126:
celery:x:500:
luisa:x:1001:

Luisa.


2
Você nunca deve editar o arquivo / etc / group diretamente, use as ferramentas apropriadas para este trabalho (neste caso usermod -aG <group> <user>).
raimue

O principal, se não apenas, o motivo pelo qual isso é recomendado é que, se você acidentalmente cometer um erro ao atualizar manualmente um arquivo como / etc / group, ele poderá invalidar o banco de dados e essencialmente bloquear você.
Spencer Williams

2

Eu tive o mesmo problema e resolvi instalar a versão mais recente do VirtualBox Guest Additions ; no meu caso, estava atualizando de 4.3.8 para 4.3.10.

Quando a instalação foi concluída, a pasta / media / sf_name não tinha mais "raiz" como proprietário do grupo, mas "vboxsf" como correto.


1

Você já tentou sudo?

$sudo chown username filename

Não acredito que isso funcione em pastas compartilhadas do VirtualBox.
EightBitTony

sudo funciona em qualquer lugar! : Link
Extn3389

12
Não tenho certeza se você está falando sério, mas eu vou lhe dar um humor. A pasta compartilhada montada é um vboxfssistema de arquivos do tipo, que não é do tipo chown.
EightBitTony

Sinto muito, apenas pensei que isso poderia funcionar.
Extn3389

1
Sim, mas não mudou o proprietário. Depois de executar o comando tis em um terminal para um arquivo e, em seguida, examinar o proprietário do arquivo, ele ainda pertence ao root.
user654019

1

Se você tiver o luxo de controlar as opções do comando mount (por exemplo, se estiver montando manualmente ou usando /etc/fstab), poderá usar a -o uid=771opção no comando mount.

Uma entrada em /etc/fstabseria semelhante a

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Habilite o acesso completo de leitura e gravação a uma pasta compartilhada em um host do Windows a partir de um convidado do Ubuntu para um usuário Linux não raiz

Esta etapa permitirá que você acesse um determinado diretório na máquina host do Windows a partir do terminal convidado do Linux. Neste exemplo, o nome do compartilhamento da perspectiva OVB será vshare (que é o padrão), o caminho completo do diretório para o sistema operacional Windows (o sistema operacional host) será "C: \ var \" e o caminho completo do arquivo para acessá-lo a partir do convidado vm será "/ vagrant" e, finalmente, o nome do usuário para ativar o acesso total à área de gravação / gravação será "você".

 # how-to add a shared folder on the host
 VBoxManage sharedfolder add "host-name" -name "vshare" -hostpath "C:\var" -automount

1. Instale os pré-requisitos de adições de convidados

Instale os pré-requisitos de adições de convidados emitindo o seguinte comando:

 sudo apt-get install -y build-essential make gcc  linux-headers-$(uname -r) 
 linux-headers-generic make linux-source  linux-generic linux-signed-generic

2. Instale as adições de convidado

Não use o arquivo .iso para baixar e o instalador a partir daí - ele simplesmente não funcionará !!!

sudo apt-get install virtualbox-guest-dkms 

3. Altere seu para que o diretório de compartilhamento seja montado automaticamente no boot da vm

Mude o seu para que o diretório de compartilhamento seja montado automaticamente na inicialização da vm adicionando as seguintes linhas ao final do seu arquivo fstab (observe o conf "vshare" e o uid = 10001):

/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab 

4. adicione-se ao grupo vboxsf

Você precisa se adicionar ao grupo vboxsf para poder editar como não raiz do seu vm os arquivos em sua máquina host. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. reinicie e verifique

Reinicie o vm e efetue login via ssh para verificar o compartilhamento de arquivos. # ssh para o vm ssh you @ host-name

# check as yourself that you have 
find /vagrant

0

As adições de caixas virtuais precisam ser instaladas novamente após a atualização do sistema convidado. O problema, eu acho, é que quando você atualiza alguns componentes no ubuntu, alguns componentes são alterados. Após a instalação do vb-additions, o sf_forlder_name estará acessível. Meu problema foi resolvido dessa maneira. A solução da Pisu funciona.


Na minha experiência, as adições de convidados da caixa virtual só precisam ser atualizadas quando o sistema VirtualBox do host é atualizado. Não quando qualquer software no cliente é alterado. Qual software no cliente você atualizou para tornar isso necessário?
Anthon

1
Não, Nicky está certo. Você precisa reinstalar as adições de convidados se atualizar o kernel do sistema operacional convidado.
Spencer Williams

-2
  • Desmonte ações como root
  • Faça as alterações necessárias com chownechmod
  • reinicie e faça o checkout dos compartilhamentos com os direitos adequados
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.