Problemas de permisos de archivos con carpetas compartidas en Virtual Box (Ubuntu Guest, Windows Host)


103

Estoy usando Ubuntu en Virtual Box y tengo una carpeta que se comparte entre el host (Windows) y la VM (Ubuntu). Cuando abro cualquier archivo en la carpeta compartida en Ubuntu, no puedo cambiarlo ya que su propietario está configurado como root.

¿Cómo puedo cambiar la propiedad de mí mismo?

Aquí está la salida de ls -l:

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

La salida de dfes:

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

Las opciones en VM son automount y la readoly no está marcada.

Intenté usarlo /media/sf_Ubuntu, pero recibí un error de permiso:

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

Tenga en cuenta que estoy en el 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)

¿Cómo montaste la carpeta compartida? ¿Dejas que las utilidades de invitado de VirtualBox lo monten automáticamente (es decir, / media / sf_something) o lo montaste manualmente usando el comando mount?
EightBitTony

Además, ¿puede describir cómo ha configurado el recurso compartido en VirtualBox en Windows? Hay tres opciones para compartir, solo lectura, montaje automático y permanente, qué opciones ha marcado.
EightBitTony

Publique actualizaciones para su pregunta, no como comentarios. Incluya la salida dfy el comando que utilizó para montar manualmente el sistema de archivos.
EightBitTony

Gracias, verá que hay un sistema de archivos / media / sf_Ubuntu. Esa es su carpeta compartida, no necesita montarla manualmente. Le sugiero que desmonte lo / home / m / Desktop, y simplemente use / media / sf_Ubuntu que funciona según mi respuesta a continuación.
EightBitTony

@ Tony: no puedo acceder a esta carpeta. Por favor, vea mi pregunta original que añado más información
user654019

Respuestas:


159

La forma habitual de obtener acceso a los archivos ahora es permitir que VirtualBox monte automáticamente la carpeta compartida (lo que hará que aparezca debajo /media/sf_directory_name) y luego agregar su usuario habitual de Ubuntu al vboxsfgrupo (como root #).

# usermod -aG vboxsf <youruser>

Por defecto, sin acción manual, las monturas se ven así,

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

entonces el vboxsfgrupo tiene acceso completo. Al agregar su usuario a ese grupo, obtiene acceso completo. Para que no te preocupes por cambiar sus permisos (que no tienen sentido en el host de Windows), solo tienes que darte acceso.

En este caso específico, esta es la carpeta compartida montada automáticamente,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

y es ese directorio el que debe usarse para acceder a la Carpeta compartida, colocando al usuario local en el vboxsfgrupo. Si desea un enlace "mejor" en el directorio de inicio de su usuario, siempre puede crear un enlace simbólico.

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

Deberá reiniciar su VM para que estos cambios surtan efecto

Si monta manualmente la carpeta compartida, debe usar las opciones relevantes en el mountcomando para configurar la carpeta con la propiedad correcta (es decir, las opciones gid, uid y umask mount). Esto se debe a que el sistema operativo host no admite el mismo sistema de permisos que Linux, por lo que VirtualBox no tiene forma de saber quién debe ser el propietario de los archivos.

Sin embargo, recomiendo encarecidamente configurar la carpeta compartida para que se monte automáticamente (es una configuración en la configuración de Carpeta compartida en VirtualBox).


Para evitar dudas, no creo que pueda cambiar los permisos normalmente de todos modos, en ese sistema de archivos si está montado de la manera habitual,

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
Cuando probé esto, recibí el mensaje de que el usuario ya está en el grupo, pero cuando intento cambiar un archivo en la carpeta compartida, recibo un error cuando quiero guardarlo. El error es: No se pudo guardar el archivo /home/m/Desktop/vbox_shared/test.tst Error inesperado: error al cambiar el nombre del archivo temporal: el archivo de texto está ocupado.
usuario654019

Ese es un problema diferente, potencialmente no debido a los permisos. ¿Se puede crear un nuevo archivo o modificar un archivo diferente? Espera - / home / m / Desktop / vbox_shared? ¿Has montado manualmente la carpeta compartida? Esa no es la ruta predeterminada.
EightBitTony

Al verificar el sistema, descubrí que solo tengo permiso para crear o eliminar archivos y no tengo permiso de lectura / escritura. ¿Cómo me lo puedo dar a mí mismo?
usuario654019

99
Parece que es necesario reiniciar para que surta efecto.
Eric Wang

3
USTED MERECE UNA CERVEZA POR ESTA RESPUESTA !!! No pude lograr que esto funcione en absoluto hasta que me encontré con esto. No puedo creer que esto ya no esté ahí fuera. ¡Ojalá pudiera votarlo más de una vez!
Tensigh

3

Acabo de tener el mismo problema con mi carpeta compartida Win-Ubuntu, y la forma en que lo resolví fue agregando a mi usuario al grupo vboxsf, editando el archivo / etc / group. Espero que esto funcione para usted. Aquí abajo puedes encontrar un breve esquema de cómo edité el archivo

(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
Nunca debe editar / etc / group directamente, use las herramientas apropiadas para este trabajo (en este caso usermod -aG <group> <user>).
raimue

La razón principal, si no solo, por la que se recomienda esto es porque si accidentalmente comete un error al actualizar manualmente un archivo como / etc / group, puede invalidar el DB y esencialmente bloquearlo.
Spencer Williams

2

Tuve el mismo problema y resolví la instalación de la última versión de VirtualBox Guest Additions ; en mi caso estaba actualizando de 4.3.8 a 4.3.10.

Cuando finalizó la instalación, la carpeta / media / sf_name no tenía más "root" como propietario del grupo, sino "vboxsf" como correcto.


1

¿Has probado sudo?

$sudo chown username filename

No creo que esto funcione en las carpetas compartidas de VirtualBox.
EightBitTony

¡sudo funciona en todas partes! : Enlace
Extn3389

12
No estoy seguro de si hablas en serio, pero te haré el humor. La carpeta compartida montada es un vboxfssistema de archivos de tipo, no respeta chownel de.
EightBitTony

Lo siento, pensé que esto podría funcionar.
Extn3389

1
Sí, pero no cambió el dueño. Después de ejecutar este comando en un terminal para un archivo, y luego mirar al propietario del archivo, todavía pertenece a la raíz.
user654019

1

Si tiene el lujo de controlar las opciones del comando de montaje (por ejemplo, si se monta manualmente o se usa /etc/fstab), puede usar la -o uid=771opción para el comando de montaje.

Una entrada en /etc/fstabse vería como

scanresults    /data/scanresults    vboxsf    uid=771    0 0

1

Habilite el acceso completo de lectura y escritura a una carpeta compartida en un host de Windows desde un invitado de Ubuntu para un usuario de Linux no root

Este paso le permitirá acceder a un determinado directorio en su máquina host de Windows desde el terminal invitado de Linux. En este ejemplo, el nombre del recurso compartido desde la perspectiva OVB será vshare (que es el valor predeterminado), la ruta de acceso completa al sistema operativo Windows (el sistema operativo host) será "C: \ var \" y la ruta de archivo completa a acceder desde el invitado vm será "/ vagabundo", y finalmente el nombre del usuario para habilitar el acceso completo de escritura / rea será "usted".

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

1. Instale los requisitos previos de Guest Additions

Instale los requisitos previos de Guest Additions emitiendo el siguiente 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 las adiciones de invitados

No use el archivo .iso para descargar y el instalador desde allí, ¡simplemente no funcionará!

sudo apt-get install virtualbox-guest-dkms 

3. Cambie su para que el directorio compartido se monte automáticamente en el arranque de VM

Cambie su para que el directorio compartido se monte automáticamente en el arranque de vm agregando las siguientes líneas al final de su archivo fstab (tenga en cuenta el "vshare" conf y el uid = 10001):

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

4. agregarse al grupo vboxsf

Debe agregarse al grupo vboxsf para poder editar como no root desde su vm los archivos en su máquina host. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. reiniciar y verificar

Reinicie el vm e inicie sesión a través de ssh para verificar el uso compartido de archivos. # ssh a vm ssh you @ host-name

# check as yourself that you have 
find /vagrant

0

Las adiciones de cajas virtuales deben instalarse nuevamente después de actualizar su sistema de invitado. Creo que el problema es que cuando se actualizan algunos componentes en ubuntu, algunos componentes cambian, después de instalar vb-adiciones, sf_forlder_name estará accesible. Mi problema resuelto de esta manera. La solución de Pisu funciona.


En mi experiencia, las adiciones de invitados de caja virtual solo tienen que actualizarse cuando se actualiza el sistema host VirtualBox. No cuando cambia algún software en el cliente. ¿Qué software del cliente actualizó para que esto sea necesario?
Anthon

1
No, Nicky tiene razón. Debe volver a instalar las adiciones de invitados si actualiza el kernel del sistema operativo invitado.
Spencer Williams

-2
  • Desmontar acciones como root
  • Realice los cambios necesarios con chownychmod
  • reiniciar y pagar las acciones tienen los derechos adecuados
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.