85

I'm familiar with the process of installing Guest Additions and sharing host folders with the guest, but is there a way to do the reverse?

I have an XP host and Ubuntu 10.10 guest, with VBox 4.0.2.

In other words, I'd like for the host to have direct access to (at least some of the) files inside the .vdi file.

0

6 Answers 6

51
+150

There is no way to do this with the Guest extensions, however, setup normal Ubuntu file sharing on your guest and you can access the files using the virtual network between the host and the guest. The OSE version of VirtualBox doesn't have shared folders, and this is the recommended sharing method for VirtualBox as described here. How-To Geek has a tutorial here on how to do it with Ubuntu specifically, and it applies to everything outside of home folders as well.

The network driver is smart enough not to send the traffic over the wire, but will still be used to communicate with the guest. I have a few virtual machines I run and use like this, both on Mac and Windows.

3
  • The same method, just using another protocol could be to use something like Dokan SSHFS. Depending on the use case and the configuration it may be more secure and better performing while allowing exploration (with proper rights) of the whole filesystem.
    – Lloeki
    Jun 17, 2011 at 7:17
  • Here is a great tutorial on how to make this work with a Linux Guest and Windows Host using samba: superuser.com/questions/258026/…
    – bjtilley
    Mar 14, 2014 at 21:05
  • in this case, since a Windows box is involved, samba might be a good choice - but if you're connecting mac and linux or linux and linux, use nfs - steps at serverfault.com/questions/716350/…
    – Ben Creasy
    Aug 14, 2017 at 5:37
9

By default, the virtual machine has a NAT connection to the local network, meaning it doesn't have a "real" IP address of its own. If you instead set up a bridged connection, you can use regular file sharing methods from the virtual PC, e.g. Windows file sharing (including SAMBA under Linux/Unix/etc.) or NFS. Of course the VM would have to be running.

It's also possible to mount a VDI as a drive under the host OS, I don't know the details of how to do that on an XP host, and I believe you would have to shut down (rather than suspend) the guest OS to avoid hard drive corruption.

2
  • Depending on how you configured the Guest VM's network adapter, this is the best solution. The way Virtual Box shares a host's folder is by turning it into a network share. You can go the other way with it. Share the guest VM's folder and connect to it as a network share. Beware though, if you setup the Guest's Network adapter as internal only, or NAT, then this is trickier. Best that you set the Network adapter as "bridged," that way they are in the same subnet.
    – surfasb
    Feb 13, 2011 at 2:20
  • 1
    you can setup multiple interfaces, Have one as NAT and the other as HOST-ONLY. You can even fix the address on the host-only side to always have the same address for file sharing
    – nhed
    Mar 21, 2013 at 12:50
2

There is a tricky solution:

  1. In Windows, install cygwin
  2. Use the same user names in both Windows and Linux
  3. In Windows, create directory $HOME/shared and make it a shared folder in VBox
  4. On your Linux create directories ~/shared and ~/shared_local and run: sudo /sbin/mount.vboxsf -o gid=1000,uid=1000 shared ~/shared
  5. Use rsync to synchronize your data in ~/shared with ~/shared_local.

You can use the same bash scripts in both Linux and Windows. You can access any data in your ~/shared from Windows and from Linux using the same path.

1
  • I do not see what benefit this provides over simply sharing host-to-guest via guest additions. Seems to be an over-engineered way of achieving the same thing. In terms of sharing from guest to host, this is not a solution; copy-pasting files between two systems is not the same as sharing a directory, especially when you want to do the reverse for a specific reason. Feb 9 at 4:38
2

This can be done. What you need to do is add an extra network card as host-only network and restart guest machine. During restart it'll prompt to install new network interface, answer yes to that. Once booted the guest machine can be accessed from the host using the IP of the guest. I suggest setting a static IP, 192.168.50.10, for example for the guest. Share out samba and you should be able to talk to it from the host machine. I did it and it's awesome.

1
  • This is arguably the right track. But the advice is too specific to one particular setup.
    – davolfman
    Jan 26, 2021 at 17:28
1

If you mean while the guest is running, then you could use:

  • Samba (as already mentioned)
  • an SFTP share such as SFTP Drive
    • Remember SFTP is a subset of SSH, whereas FTPS is a subset of FTP. This means as long as you can connect using SSH then you can connect using SFTP and get the same file/folder permissions on the guest as the user you used to log on.
0

you can do this by configuring Samba on the guest Linux machine

to be able to access the VM from outside the host you must change the virtual machine networking from NAT to the "bridged"

===== FOR DEVELOPMENT ONLY === Do not do this in production!!! ====

Samba Configuration

Configure Samba service on the guest so that Guest FS will be accessible on the windows network like yet another computer to write / read files from

Install Samba on the guest

shell command sudo apt-get samba

  1. Edit the /etc/samba/smb.conf

Do it as root (sudo) !!

add at the end of the file

[root]
path = /
browseable = yes
guest ok = yes
guest only = yes
read only = no
force user = root
force create mode = 0777
force directory mode = 0777

Now, set a username and password for the Samba share. This command has to be run with root privilege.

shell command sudo smbpasswd -a <username>

- use the same that you use in the guest - it more convenient

it will ask you to set a password. set the same as password for convenience and from Windows you can now access ///root and read/write the whole Linux filesystem

can be the IP of the guest get it with shell command ip a

or host name

shell command hostname

can be changed here \etc\hostname

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.