Compartir archivos en Virtualbox sin Guest Additions

En el pasado recomendé que cuando su sistema huesped no tuviera instalado las Guest Additions conectaran la tarjeta de red virtual como bridge y que montaran con NFS o Samba carpetas de red; pero con las revelaciones de Snowden sobre el espionaje mundial de la NSA a cada una de las personas del mundo,  y sobre todo los exploits de la NSA a Samba (SMB), WannaCry, ya no podemos considerarlo seguro. Porque WannaCry explota la seguridad de ese método.

Método de sólo Lectura:

Este primer método es muy sencillo, práctico y el más seguro, si quieres compartir archivos de tu sistema operativo anfitrión a huesped es tan sencillo como crear una imagen de los archivos a compartir.

Crear una imagen iso (no recomendado):

Si bien no es recomendado este método, las imágenes isos suelen funcionar sin importar el sistema operativo. Para crear una imagen iso necesitamos del programa genisoimage en Linux que tradicionalmente se llama mkisofs, actualmente mkisofs es un enlace simbólico a genisoimagen. Para poder ejecutarlo instala genisoimagen.

Su uso básico:

mkisofs -o imagen.iso /carpeta

Crear una imagen squashfs (recomendado)

Este método es muy recomendado porque una imagen squashfs es un sistema de archivos especial de Linux, especialmente utilizado para los LiveCDs; de forma que conserva adecuadamente todos los permisos de Linux, los nombres de inodos (archivos) y los enlaces simbólicos. Además comprime el contenido por defecto, utilizando mucho menos espacio que un archivo iso normal. Para poder crear una imagen squashfs necesitas tener instalado squashfs-tools.

Su uso básico:

mksquashfs /carpeta imagen.iso


A continuación en las propiedades de tu máquina virtual , en la pestaña almacenamiento, monta la imagen virtual que creaste.

En la imagen la imagen iso es de 4.84MB, resources.iso, el cual es en realidad una imagen squashfs

Método con Ramdisk (Lectura y Escritura)

Este método sólo funciona con un sistema anfitrión en Linux, pero sin importar el sistema virtualizado, ya sea Mac, Windows, etc.

Este es un método avanzado, así que hazlo con cuidado. Este método es seguro puesto que no se comprometen los módulos externos de virtualbox, los módulos externos siempre es un punto de vulnerabilidad en un sistema operativo. También destaca su su sencillez porque te evita instalar inecesariamente los Guest Additions en tu sistema virtual.

Otro ejemplo de su uso es que OpenBSD (el sistema operativo más seguro que existe), no tiene soporte de los Guest Additions de VirtualBox. Así que a los usuarios de estas familias de sistemas operativos, Unix-like les resultará muy útil también.

1. Crea un inodo /dev/ram:

mknod -m 660 /dev/ram b 1 1

2. Formatea tu ramdisk y específica su tamaño:

En el siguente comando se muestra como formatear a ext2 que es el formato de disco recomendado para usarse con los sistemas Linux, sin embargo pueden formatearse a otros sistemas de archivos como vfat, que es el sistema de archivo fat.

Donde debes remplazar 8192 con el tamaño deseado en kilobytes:

mkfs -q /dev/ram 8192

3. Obten los permisos de acceso:

 Donde debes remplazar user con tu nombre de usuario del sistema.

sudo chown user /dev/ram

4. Ejecuta el siguente comando como usuario no root para crear un archivo de disco de VirtualBox:

Remplaza ramdisk.vmdk en el lugar donde deseas guardar el archivo de disco para virtualbox. Puedes ejecutar el comando tal como aparece y se creara en tu directorio HOME sin problema alguno.

VBoxManage internalcommands createrawvmdk -filename ramdisk.vmdk -rawdisk /dev/ram

5. Agrega el archivo de disco como un nuevo disco duro en la misma sección de la última imagen.

 Tips adicionales:

Si usas gentoo puedes compilar el kernel para que por defecto exista el inodo /dev/ram, porque al reiniciar tu PC se pierde el inodo /dev/ram y deberás volver a crearlo para poder usar el Ramdisk en el siguiente inicio. Altertativamente si no usas Gentoo puedes compilar tu propio kernel.

Lo que yo hago que ahora uso Fedora es utilizar el script rc.local de systemd: /etc/rc.d/rc.local, el cual reproduce los 3 primeros pasos que hicimos en esta guía, pues deben repetirse en cada inicio:


mknod -m 660 /dev/ram b 1 1
mkfs -q /dev/ram 8192
chown user /dev/ram

No olvides habilitar rc.local si no está habilitado con:
systemctl enable rc-local.service

Ahora en tu sistema Linux huesped deberá aparecer como /dev/sdb por lo general, puedes montarlo simplemente así:

mount /dev/sdb /mnt

Si tu sistema huesped es Windows, si bien no lo he probado, si  el RamDisk se formateó en vfat o ntfs, debe aparecer como una nueva unidad en tu PC o Equipo.

Si quieres acceder a los archivos en tu sistema anfitrión, debes montar /dev/ram así:

mount /dev/ram /mnt

Nota: Todos los archivos en /dev/ram se perderan permanentemente al apagar o desconectar tu PC. Tan permanentemente que ni la NSA ni la CIA los podrá recuperar.

 

 

 

 

 

These bottons respect your privacy