2014-02-28 17:27:18 +00:00
|
|
|
---
|
2016-01-19 18:08:53 +00:00
|
|
|
layout: "docs"
|
2014-02-28 17:27:18 +00:00
|
|
|
page_title: "SMB - Synced Folders"
|
|
|
|
sidebar_current: "syncedfolder-smb"
|
2016-01-19 18:08:53 +00:00
|
|
|
description: |-
|
2016-01-19 19:54:13 +00:00
|
|
|
Vagrant can use SMB as a mechanism to create a bi-directional synced folder
|
|
|
|
between the host machine and the Vagrant machine.
|
2014-02-28 17:27:18 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
# SMB
|
|
|
|
|
|
|
|
**Synced folder type:** `smb`
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
Vagrant can use [SMB](https://en.wikipedia.org/wiki/Server_Message_Block)
|
2014-02-28 17:27:18 +00:00
|
|
|
as a mechanism to create a bi-directional synced folder between the host
|
|
|
|
machine and the Vagrant machine.
|
|
|
|
|
|
|
|
SMB is built-in to Windows machines and provides a higher performance
|
|
|
|
alternative to some other mechanisms such as VirtualBox shared folders.
|
|
|
|
|
|
|
|
<div class="alert alert-info">
|
2016-01-19 19:54:13 +00:00
|
|
|
<strong>Windows only!</strong> SMB is currently only supported
|
|
|
|
when the host machine is Windows. The guest machine can be Windows
|
|
|
|
or Linux.
|
2014-02-28 17:27:18 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
To use the SMB synced folder type, the machine running Vagrant must be
|
2015-04-22 21:06:08 +00:00
|
|
|
a Windows machine with PowerShell version 3 or later installed. In addition to this, the command prompt executing Vagrant
|
2014-02-28 17:27:18 +00:00
|
|
|
must have administrative privileges. Vagrant requires these privileges in
|
|
|
|
order to create new network folder shares.
|
|
|
|
|
|
|
|
The destination machine must be able to mount SMB filesystems. On Linux
|
|
|
|
the package to do this is usually called `smbfs` or `cifs`. Vagrant knows
|
|
|
|
how to automatically install this for some operating systems.
|
|
|
|
|
|
|
|
## Options
|
|
|
|
|
|
|
|
The SMB synced folder type has a variety of options it accepts:
|
|
|
|
|
|
|
|
* `smb_host` (string) - The host IP where the SMB mount is located. If this
|
2016-01-19 18:08:53 +00:00
|
|
|
is not specified, Vagrant will attempt to determine this automatically.
|
2014-02-28 17:27:18 +00:00
|
|
|
|
|
|
|
* `smb_password` (string) - The password used for authentication to mount
|
|
|
|
the SMB mount. This is the password for the username specified by
|
|
|
|
`smb_username`. If this is not specified, Vagrant will prompt you for it.
|
|
|
|
It is highly recommended that you do not set this, since it would expose
|
|
|
|
your password directly in your Vagrantfile.
|
|
|
|
|
|
|
|
* `smb_username` (string) - The username used for authentication to mount
|
|
|
|
the SMB mount. This is the username to access the mount, _not_ the username
|
|
|
|
of the account where the folder is being mounted to. This is usually your
|
2015-03-23 00:47:55 +00:00
|
|
|
Windows username. If you sign into a domain, specify it as `user@domain`.
|
2016-01-19 18:08:53 +00:00
|
|
|
If this option is not specified, Vagrant will prompt you for it.
|
2014-02-28 17:27:18 +00:00
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
The following is an example of using SMB to sync a folder:
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
```ruby
|
2014-02-28 17:27:18 +00:00
|
|
|
Vagrant.configure("2") do |config|
|
|
|
|
config.vm.synced_folder ".", "/vagrant", type: "smb"
|
|
|
|
end
|
2016-01-19 18:08:53 +00:00
|
|
|
```
|
2014-02-28 17:27:18 +00:00
|
|
|
|
2015-07-09 15:55:18 +00:00
|
|
|
## Preventing Idle Disconnects
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
On Windows, if a file is not accessed for some period of time, it may
|
2015-07-09 15:55:18 +00:00
|
|
|
disconnect from the guest and prevent the guest from accessing the SMB-mounted
|
|
|
|
share. To prevent this, the following command can be used in a superuser
|
|
|
|
shell. Note that you should research if this is the right option for you.
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
```
|
2015-07-09 15:55:18 +00:00
|
|
|
net config server /autodisconnect:-1
|
2016-01-19 18:08:53 +00:00
|
|
|
```
|
2015-07-09 15:55:18 +00:00
|
|
|
|
2014-02-28 17:27:18 +00:00
|
|
|
## Limitations
|
|
|
|
|
|
|
|
Because SMB is a relatively new synced folder type in Vagrant, it still
|
|
|
|
has some rough edges. Hopefully, future versions of Vagrant will address
|
|
|
|
these.
|
|
|
|
|
|
|
|
The primary limitation of SMB synced folders at the moment is that they are
|
|
|
|
never pruned or cleaned up. Once the folder share is defined, Vagrant never
|
|
|
|
removes it. To clean up SMB synced folder shares, periodically run
|
2016-01-19 18:08:53 +00:00
|
|
|
`net share` in a command prompt, find the shares you do not want, then
|
2014-02-28 17:27:18 +00:00
|
|
|
run `net share NAME /delete` for each, where NAME is the name of the share.
|
2015-12-24 20:48:32 +00:00
|
|
|
|
|
|
|
## Common Issues
|
|
|
|
|
|
|
|
### "wrong fs type" Error
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
If during mounting on Linux you are seeing an error message that includes
|
2015-12-24 20:48:32 +00:00
|
|
|
the words "wrong fs type," this is because the SMB kernel extension needs to
|
|
|
|
be updated in the OS.
|
|
|
|
|
|
|
|
If updating the kernel extension is not an option, you can workaround the
|
|
|
|
issue by specifying the following options on your synced folder:
|
|
|
|
|
2016-01-19 18:08:53 +00:00
|
|
|
```ruby
|
2015-12-24 20:48:32 +00:00
|
|
|
mount_options: ["username=USERNAME","password=PASSWORD"]
|
2016-01-19 18:08:53 +00:00
|
|
|
```
|
2015-12-24 20:48:32 +00:00
|
|
|
|
|
|
|
Replace "USERNAME" and "PASSWORD" with your SMB username and password.
|
|
|
|
|
|
|
|
Vagrant 1.8 changed SMB mounting to use the more secure credential file
|
|
|
|
mechanism. However, many operating systems ship with an outdated filesystem
|
2016-01-19 18:08:53 +00:00
|
|
|
type for SMB out of the box which does not support this. The above workaround
|
2015-12-24 20:48:32 +00:00
|
|
|
reverts Vagrant to the insecure before, but causes it work.
|