Accessing VM-folders the easy way

samba-copy.jpg

People like to try out things. Most things tend to be risky and dangerous, and normally mess up your working system. So that’s why we use virtualization technologies.

Let’s imagine you are a web developer. You normally use Windows or Mac OS X and you do not have any intension to change that. But you need a development environment to test things, and that’s where you have a choice. You can grab a native web-server for your system, which means partial incompatibility to your production environment, system instability and conflicts to other software in most cases. But you can also install a clean web-server-optimized OS (Debian?) in a virtual machine (VMWare, Parallels?). This will guarantee full portability to your production server and overall stability. The only real problem is the workflow – editing files on your local file system and then pushing them onto the VM is really annoying. Not each system supports Shared Folders, especially Unix-like ones. But there is a way:

We are going to setup Samba to share folders. Our intension is to keep the configuration work for Samba as minimal as possible, since there is no need in a full-fledged CIFS domain controller.

  • Install Samba. For Debian/Ubuntu: apt-get install samba. If you are being asked for the name of your workgroup, just enter it in uppercase
  • Locate the configuration file smb.conf. Usually in /etc/samba/smb.conf or /usr/local/samba/smb.conf
  • Open smb.conf and uncomment the line containing security = user. It enables a very simple authentication mode, where Samba users are mapped one-to-one to the local system users, and CIFS file permissions are identical to those of the local file system
  • Comment the lines containing passdb backend = tdbsam and obey pam restrictions = yes
  • Check if the name of the workgroup is correct, if not – change it to the right one
  • Go to the [homes]-Section of the file and set writable = yes

Now we’re done with the basic configuration. But we need a user. The most convenient way is to add one with the same username and the same password as the one that you are using on your host OS. Let’s say, bob is your username.

  • First, we need to add a system user:
    useradd -m bob
    -m creates a home directory for the user, which will be your Samba-share.
  • Then, we add a Samba user with the same name and password:
    smbpasswd -a bob
  • Restart Samba to apply changes we made to its configs:
    /etc/init.d/samba restart
  • Finally, mount your share. Let’s say, the IP of your VM is 11.11.11.11.
    For Windows systems, you just have to open \\11.11.11.11 in the Windows Explorer and then authenticate. The shared folder bob is your home directory on the VM.
    If you’re cool and use Mac OS X, you open the Finder, press ⌘K (or Menu: Go->Connect to Server) and enter smb://11.11.11.11. The rest is self-explanatory.

If you don’t need files which are outside of your home directory – congratulations, we’re done by now! But if you do need access to, for instance, /var/www/, there is a way:

  • Gain read/write-access to the folder. Possibly like this:
    chown -R root:bob /var/www
    chmod -R g+x /var/www
  • Create a share for the folder:
    [docroot]
    path = /var/www
    writable = yes
    valid users = bob
  • Reload Samba configuration with /etc/init.d/samba reload
  • Mount the new share – its name is now docroot

Feel free to mail me if you experience problems or have a better solution. Check this link for an excellent book on Samba.

Dieser Beitrag wurde am 14. Juli 2007 um 21:04 veröffentlicht und ist unter *nix, Tech, Web abgelegt. Lesezeichen hinzufügen für Permanentlink. Folge allen Kommentaren hier mit dem RSS-Feed für diesen Beitrag.

Ein Gedanke zu „Accessing VM-folders the easy way

  1. Its much cleaner to create a „pseudo-user“ and use that user to be able to write to directories.

    Thats the force_user option.

    D.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: