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
virtualbox
permissions
mac
jmdeldin
fuente
fuente
sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src
, donde umask es el valor delumask
usuario, de dónde provienen uid y gidid <user>
,src
es el nombre del recurso compartido VBox y/meida/sf_src
es el punto de montaje deseado.Respuestas:
Lo he descubierto!
Reproducir:
Desde una terminal, ejecute
umask && id
como usuario normal para obtener algo como esto:sudo mkdir -p /media/sf_src # src is the shared directory
Para montar el
src
directorio como prueba:Para montarlo automáticamente al iniciar sesión, edite
/etc/fstab
y agregue lo siguiente:fuente
/sbin/mount.vboxsf
era un enlace simbólico colgante! ¡Borrándolo y luegoln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
resolvió el problema! La instalación de adiciones de invitados probablemente no pudo vincularlo. Pasé mucho demasiado tiempo calcular esto!El problema: problemas de permisos en vbox / ubuntu para acceder a una unidad compartida OSX
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 .
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.
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í.
Creé tres puntos de montaje, usando la configuración de Virtual Box -> Carpetas compartidas gui.
NOTA: De hecho, tuve que reiniciar mi sesión para que aparecieran todos estos puntos de montaje.
Tenga en cuenta que el gid para estos es 999: este es el grupo vboxsf .
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)
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.
Entonces, lo que tenemos en este momento (aún no hemos hecho nada para solucionarlo)
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
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í.
Entonces, en este punto, deberíamos tener
La prueba aquí es si funciona, así que ese es el siguiente paso
VBOX: ——————
cd en nuestro directorio y toque un archivo
Comprueba que creamos un archivo con éxito.
OSX: —————
VBOX: ——————
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
Ver si podemos acceder a nuestro directorio, y no podemos, y esto demuestra que es un problema de permiso de grupo
Agregar usuario nuevamente a vboxsf
Funciona de nuevo!
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.
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: ------------
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:
Y el nombre de las carpetas compartidas, ya sea a través de la GUI de Virtual Box o
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: ---------
Sin error, y para verificar
OSX: ----------
Y de vuelta en el lado de Mac, solo para demostrar que todo funciona
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.
fuente
Para mí, todo lo que necesitaba hacer era:
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.
fuente
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).
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':
Luego cierre sesión y vuelva a iniciar sesión. Puede acceder a la carpeta compartida ahora.
fuente
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/media
lasf_
prefijos por defecto), sólo hay una cosa que hay que hacer: Haz tu nombre de usuario para elvboxsf
grupo a travéssudo 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
home
carpeta (por ejemplo,ln -s /media/sf_Stuff ~/Stuff
).Fuente: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto
fuente
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:
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 ...
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).
por ejemplo (en / tmp)
Obtenga su usuario uid:
El resultado será algo así como:
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:
p.ej
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):
p.ej
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/
fuente
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,
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):
Etapa 2: Configuración de carpetas compartidas:
2.1. Crear reglas en VM:
Settings > Shared Folders
Add new port forwarding rule
botón verde en la esquina superior derecha de la ventana.Auto-mount
yMake Permanent
2.2. Para montar una carpeta compartida
/opt
, debe crear unashared_folder_dir
subcarpeta y configurar los permisos adecuados para ello:2.3. Agregue nombre de usuario al grupo vboxsf :
2.4. Reinicie VM para aplicar cambios:
Etapa 3: montaje automático
host_folder
en/opt/shared_folder_dir
:3.1. Cambiar VM /etc/rc.local:
y coloque el siguiente justo arriba
exit 0
:3.2. Reinicie VM para aplicar cambios:
Ver también
fuente
Desde /ubuntu//a/171357/476506
El comando anterior dará acceso a la carpeta compartida para "usuario".
fuente