¿Cuál es la forma correcta de compartir directorios con Ubuntu ejecutándose en una VM Virtual Box con los permisos correctos?


23

En VirtualBox, ¿cuál es la mejor manera de compartir un directorio entre un host OS X y un invitado Ubuntu?

  • Host: Mac OS X 10.7.3
  • Invitado: Ubuntu 12.04
  • El invitado tiene un directorio compartido montado a través de la configuración de VirtualBox con Access = Full y Auto-Mount = Yes .

El problema con esta configuración se ilustra a continuación. En mi directorio compartido, no puedo cambiar los permisos en absoluto (no es un error denegado de permisos, pero simplemente no surten efecto).

Ubuntu 12.04 (invitado):

% 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

Si me chmod en el invitado, nada cambia:

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

Si chmod en el host, cambia en el host pero no en el invitado:

$ 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, lo descubrí, pero no puedo publicar la respuesta por otras 8 horas (no hay suficientes puntos). La solución es hacerlo sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, donde umask es el valor del umaskusuario, de dónde provienen uid y gid id <user>, srces el nombre del recurso compartido VBox y /meida/sf_srces el punto de montaje deseado.
jmdeldin

Respuestas:


23

Lo he descubierto!

Reproducir:

  1. Apague la VM, agregue carpetas compartidas en la configuración de VBox (Permanente = Sí, Auto-Mount = No)
  2. Inicie la VM
  3. Desde una terminal, ejecute umask && idcomo usuario normal para obtener algo como esto:

    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 el srcdirectorio como prueba:

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 montarlo automáticamente al iniciar sesión, edite /etc/fstaby agregue lo siguiente:

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

¡Esto es exactamente lo que estaba buscando! Terminé creando un grupo de usuarios compartido para apache2 y mis usuarios que tienen acceso a la carpeta montada. serverfault.com/questions/6895/…
thesmart

¡Gracias! ¡Tenga en cuenta que tuve grandes problemas hasta que descubrí que /sbin/mount.vboxsfera un enlace simbólico colgante! ¡Borrándolo y luego ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfresolvió el problema! La instalación de adiciones de invitados probablemente no pudo vincularlo. Pasé mucho demasiado tiempo calcular esto!
csl

2
... ahora el único problema parece ser que vboxsf no maneja enlaces simbólicos. ¡Como en, no puedes crear enlaces simbólicos en la carpeta compartida desde la VM! (Al menos en OSX, VirtualBox 4.3.10
csl

Este procedimiento ciertamente es uno de los pocos que lo llevarán allí. Sin embargo, en mi caso, cuando cambio al directorio compartido e intento emitir un comando ls, el terminal se cuelga
demongolem

4

El problema: problemas de permisos en vbox / ubuntu para acceder a una unidad compartida OSX

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

El objetivo es una forma sencilla de compartir directorios entre entornos Mac y Ubuntu. Desafortunadamente, los ejemplos que he visto hasta ahora parecen ser un poco más complejos de lo que realmente deben ser, y realmente no explican cuál es el problema real que debe resolverse. Intentaré manejar ambos problemas aquí.

El entorno aquí es una Mac con OSX 10.9.5, con Virtual Box 4.3.16 ejecutando Ubuntu-14.04.1 con extensiones Guest instaladas. Septiembre 2014 cosas.

Creo que todo el problema aquí es que el uid de los directorios en la Mac y en Ubuntu deben coincidir: los gid predeterminados asignados para usuarios y grupos son diferentes entre OSX y Ubuntu, y ahí es donde radica el problema.

Para acceder a un archivo, uno debe poseerlo o ser miembro del grupo que lo posee. Y como el acceso se basa realmente en el número de identificación del grupo, no en el nombre del grupo, todo lo que se necesita es crear un número de grupo común en ambos lados, al que pertenezcan los usuarios.

Eso es exactamente lo que hace la solución a continuación. No se deje engañar por la longitud de lo que está escrito, en realidad es muy simple. Hay muchos ejemplos de lo que está sucediendo.

Voy a cambiar entre las consolas OSX y VBOX aquí (mac y virtual-box / ubuntu) dentro de este documento; asegúrese de comprender en qué ventana está.

Nota final: La solución que se muestra a continuación se basa en establecer una identificación de grupo común entre los entornos OSX y Ubuntu, para que los permisos de archivo funcionen. Puede haber otras soluciones más modernas. Este es realmente simple y comprensible, y se ejecuta en instalaciones básicas sin adornos.

OSX: —————

Tenga en cuenta que se realizó en una Mac 10.9.5 recién preparada, sin nada, no conectada a una red corporativa, nada más sofisticado que el software estándar. Esto es tan simple como se pone.

Cuando hice la instalación predeterminada en la Mac, joe_public es el usuario administrador y su uid se configuró en 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)

Tenga en cuenta que el uid es 501 , este es el primer ID de cuenta predeterminado en OSX, nada especial

Creé algunos directorios que quiero compartir en el lado de Mac. Tenga en cuenta que no los puse en mi directorio de usuario por razones de respaldo.

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: ——————

Instalación virtual simple predeterminada de ubuntu y box: nuevamente, joe_public es el administrador predeterminado creado cuando instalé ubuntu.

Tenga en cuenta una vez más que el espacio de nombres entre OSX y Ubuntu es completamente diferente. No hay absolutamente ninguna relación entre los dos nombres aquí.

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)

Creé tres puntos de montaje, usando la configuración de Virtual Box -> Carpetas compartidas gui.

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

NOTA: De hecho, tuve que reiniciar mi sesión para que aparecieran todos estos puntos de montaje.

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)

Tenga en cuenta que el gid para estos es 999: este es el grupo vboxsf .

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

Esto fue asignado automáticamente por Virtual Box versión 4.3.16 para nosotros. La documentación de vbox muestra formas de cambiar esto si monta la ruta manualmente a través de la línea de comando, pero quién va a recordar eso: simplemente tome los valores predeterminados que la GUI nos impone.

Pero no funciona (esperado en este punto, eso es lo que estamos tratando de resolver)

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

Tenga en cuenta que en este momento joe_public no es miembro de ese grupo vboxsf , y eso será un problema hasta que lo arreglemos . FYI: estos son los grupos predeterminados asignados a la cuenta cuando se crea.

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

Entonces, lo que tenemos en este momento (aún no hemos hecho nada para solucionarlo)

•   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

No queremos cambiar el gid del usuario joe_public en ninguno de los lados, ya que es un fastidio en los sistemas ya instalados y no resuelve esto para otros usuarios. La solución más simple es hacer una identificación de grupo coincidente, vboxsf , en el lado de Mac, y asegurarse de que joe_public sea ​​miembro de ambos lados.

Por lo tanto, todavía en vbox / ubuntu, hacen joe_public un miembro de la 999 vboxsf grupo

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

Creo que salí de mi cuenta y volví a ingresar aquí después de hacer esto.

OSX: —————

Ahora necesitamos crear un grupo vboxsf en la mac. Dudo que el nombre realmente haga una diferencia aquí: es la identificación del grupo 999 lo que es importante. Recuerde que los espacios de nombres del sistema de directorio (así como los nombres de usuario) son diferentes entre el host y los sistemas operativos VM. Pero solo para hacer que la vida sea sensata , todos lo llamamos vboxsf en la Mac. El mismo razonamiento por el cual joe_public usa un nombre de usuario en ambos lados.

OSX no tiene un simple comando agregar grupo como Linux, así que use el comando dscl para hacerlo en varios pasos. Consulte la documentación de Mac OS para obtener más detalles al respecto. Observe que creamos el grupo vboxsf y agregamos joe_public a ese grupo aquí.

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

Entonces, en este punto, deberíamos tener

•   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

La prueba aquí es si funciona, así que ese es el siguiente paso

VBOX: ——————

cd en nuestro directorio y toque un archivo

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

Comprueba que creamos un archivo con éxito.

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

Todo parece estar funcionando ...

VBOX: —————— VERIFICACIÓN FINAL

Lo que estamos verificando aquí es que todo esto depende de que el usuario joe_public sea ​​miembro del grupo vboxsf , y la forma más simple es simplemente eliminar joe_public del grupo

Eliminando al usuario joe_public del grupo vboxsf

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

Ver si podemos acceder a nuestro directorio, y no podemos, y esto demuestra que es un problema de permiso de grupo

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

Agregar usuario nuevamente a vboxsf

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

Funciona de nuevo!

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: - UN PROBLEMA MÁS - enlaces simbólicos en vbox -------

Si va a / media / sf_shared , encontrará que los enlaces simbólicos en directorios compartidos simplemente no funcionan. Este es un problema realmente grande si está intentando configurar un entorno de desarrollo de Linux completo en una unidad compartida.

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

De forma predeterminada, los enlaces simbólicos no son compatibles con los recursos compartidos de caja virtual. Vea a continuación las explicaciones. Básicamente, según tengo entendido, los enlaces simbólicos son un agujero de seguridad que se "solucionó" en Virtual Box al deshabilitar el soporte para ellos en el marco de tiempo 4.1.8 (2011). Estoy ejecutando 4.3.16 aquí ...

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

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

Afortunadamente, hay una puerta trasera para volver a habilitarla, a través del comando VBoxManage del Host . Como siempre, comprenda los agujeros de seguridad que puede estar abriendo aquí. Estoy en una máquina de desarrollo independiente, por lo que esto no parece ser un problema.

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

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

Nota: Ubuntu es el nombre de mi vm, y shared es el nombre del directorio compartido.

Puede obtener el nombre de VM de esta manera:

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

Y el nombre de las carpetas compartidas, ya sea a través de la GUI de Virtual Box o

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

Reinicié todo el sistema de caja virtual aquí, no descubrí el requisito mínimo para que tenga.

De todos modos, para probar esto, regrese a su ventana de vbox

VBOX: ---------

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

Sin error, y 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: ----------

Y de vuelta en el lado de Mac, solo para demostrar que todo 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

Tenga en cuenta que solo he probado esto en un host OSX y un cliente de Ubuntu virtual box. Las referencias que enumeré anteriormente parecían indicar que podría haber un problema al ejecutar un host basado en Windows.

EJERCICIO IZQUIERDO PARA EL ESTUDIANTE ———————

El beneficio del método mencionado anteriormente es que puede ejecutarse en una máquina en espera, sin acceso a la red. Pero si piensa en esto, este problema de name-verses-id tiene que ser un problema común entre cualquier entorno informático heterogéneo.

¿Qué otras soluciones están disponibles donde están disponibles las soluciones a ese problema? - Cosas como Active Directory (un producto de Microsoft) y similares podrían resolver esto. Sería interesante obtener una colección de esas soluciones y comparar varias características y compensaciones.


3

Para mí, todo lo que necesitaba hacer era:

sudo adduser [username] vboxsf

Eso fue suficiente para que obtuviera acceso a las carpetas compartidas. La carpeta tiene un grupo de vboxsf, el usuario solo necesita ser asignado a ese grupo para obtener acceso. Si necesita establecer un acceso más estricto o un acceso más controlable, es posible que deba seguir los pasos para montarlo manualmente con los ID de usuario correctos.

Para mí, la solución fstab no funcionó y causó que la máquina no se iniciara correctamente.


3

Después de crear una carpeta compartida en la configuración de Virtualbox, Ubuntu la montará automáticamente la próxima vez que inicie el sistema (verá un icono en su escritorio).

ingrese la descripción de la imagen aquí

Pero si no está utilizando una cuenta raíz, no tendrá permiso para acceder a ella. Lo que debe hacer es agregar su cuenta de usuario a un grupo de usuarios llamado 'vboxsf':

sudo usermod -G vboxsf -a $USER

Luego cierre sesión y vuelva a iniciar sesión. Puede acceder a la carpeta compartida ahora.


3

Desde VirtualBox v4.0, ¡es fácil resolver estos problemas de permisos! No es necesario que preocuparse de mkdir, mount, chmod, umask, etc. Para acceder a las carpetas compartidas de auto-montado (que aparecen en /mediala sf_prefijos por defecto), sólo hay una cosa que hay que hacer: Haz tu nombre de usuario para el vboxsfgrupo a través sudo usermod -a -G vboxsf [username].

Para mayor comodidad, es posible que también desee crear enlaces simbólicos a esas carpetas compartidas dentro de su homecarpeta (por ejemplo, ln -s /media/sf_Stuff ~/Stuff).

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


Buen punto sobre el enlace simbólico.
Shaun Dychko

0

Encontré esto, lo probé y funcionó en Ubuntu y Xubuntu, solo la función de montaje automático no funcionó para mí

I. Instalar adiciones de invitados

En primer lugar, es necesario instalar las adiciones de invitados de VirtualBox en el sistema host:

Elija en el menú de VitualBox: Dispositivos -> Instalar adiciones de invitados ...

Monta un nuevo ISO para el sistema host. Aparece un nuevo CD en Ubuntu (o montarlo). Ejecute como root el script de instalación VBoxLinuxAdditions-x86.run (porque es una Mac basada en Intel) en una ventana de Terminal:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Probablemente se le pedirá que reinicie Ubuntu.

La instalación de Guest Additions tiene muchas ventajas, como la adopción de la resolución de pantalla (el tamaño de la ventana es la resolución del sistema, es decir, sin barras de desplazamiento), el modo de mouse fácil (no es necesario presionar el botón de comando izquierdo para soltar el cursor del mouse) y, lo que estamos buscando para, carpetas compartidas.

II Crear carpeta compartida

El objetivo es acceder a una carpeta compartida, lo que es una manera más fácil que usar sshd o Samba.

Elija en el menú de VitualBox: Dispositivos -> Carpetas compartidas ...

  • Haga clic en el botón Agregar nueva carpeta compartida.
  • Elija una ruta de carpeta: una carpeta en el disco duro de su Mac, por ejemplo, / Users / ondrej / Pictures.
  • Elija un nombre de carpeta: un nombre que identifica esta carpeta compartida en Ubuntu (como un sistema host), por ejemplo, imágenes.
  • Seleccione Hacer permanente: si desea mantener esta definición de carpeta compartida.
  • Haga clic en OK
  • Haga clic en Aceptar para cerrar la lista de carpetas compartidas.

III. Montar carpeta compartida

Monte la carpeta compartida creada en una carpeta con permisos para su usuario. Abramos una ventana de Terminal en Ubuntu y:

Cree una carpeta donde se montará la carpeta compartida. (Omita este paso si ya tiene una carpeta para esto).

mkdir DIR

por ejemplo (en / tmp)

mkdir share

Obtenga su usuario uid:

id

El resultado será algo así como:

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

así que el número de usuario de mi usuario es 1000. Monte la carpeta compartida SHARED_FOLDER_NAME en la carpeta MOUNTED_FOLDER con la propiedad del usuario con uid USER_ID como root:

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

p.ej

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

Especificar el parámetro uid permite escribir en la carpeta compartida para su usuario. La carpeta montada MOUNTED_FOLDER (por ejemplo, / tmp / share) contiene archivos de la carpeta compartida en su disco duro Mac. También es posible escribir en la carpeta compartida. Opcionalmente, una carpeta compartida se puede montar automáticamente al iniciar la máquina virtual. Agregue la siguiente línea al archivo / etc / fstab (como root, por ejemplo, sudo vim / etc / fstab):

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

p.ej

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

donde los valores uid y gid se pueden encontrar en la salida del comando id (consulte el paso 2 para ver un ejemplo detallado). La carpeta compartida estará disponible también después de reiniciar la máquina virtual.

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


0

SO host : macOS
VM (invitado) SO : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Tanto el SO host como el SO invitado deben tener el mismo usuario (más adelante en el texto: nombre de usuario ).

Etapa 1: Instale las adiciones de VirtualBox Guest :

1.1. Localice las adiciones de invitados de VirtualBox,

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

1.2. Inicie la VM

1.3. Haga clic en el icono del CD en la barra de tareas inferior derecha

1.4. Seleccione "Elegir imagen de disco ..." "y busque VBoxGuestAdditions.iso

1.5. En el tipo de terminal de invitado (también puede hacerlo desde el terminal de host si ingresa SSH en él):

$ 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: Configuración de carpetas compartidas:

2.1. Crear reglas en VM:

  • Detener la VM
  • Ir Settings > Shared Folders
  • Haga clic en el Add new port forwarding rulebotón verde en la esquina superior derecha de la ventana.
  • Busque y seleccione la carpeta que desea compartir (por ejemplo: / ruta / a / shared / host_folder )
  • Seleccione las opciones Auto-mountyMake Permanent
  • Inicie la VM

2.2. Para montar una carpeta compartida /opt, debe crear una shared_folder_dirsubcarpeta y configurar los permisos adecuados para ello:

$ 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. Agregue nombre de usuario al grupo vboxsf :

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

2.4. Reinicie VM para aplicar cambios:

$ sudo reboot

Etapa 3: montaje automático host_folderen /opt/shared_folder_dir:

3.1. Cambiar VM /etc/rc.local:

$ sudo nano /etc/rc.local

y coloque el siguiente justo arriba 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: agreguésleep 5para ejecutar la operación de montaje después de que VirtualBox Guest Additions haya comenzado. Puede verificar eso porjournalctl -bcomando.

3.2. Reinicie VM para aplicar cambios:

$ sudo reboot

Ver también


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.