Windows 10+Hyper-V环境下Vagrant无法挂载SMB共享文件夹求助
解决Vagrant Homestead(Hyper-V)SMB挂载权限拒绝问题
嘿,我看了你遇到的SMB挂载问题,结合你的环境和操作记录,这里有几个关键的修复点和建议:
1. 先把VirtualBox来宾工具清掉!
你现在用的是Hyper-V作为provider,但你在虚拟机里装了virtualbox-guest-x11——这完全是南辕北辙啊!Hyper-V的虚拟机根本不需要VirtualBox的来宾组件,反而可能和Hyper-V自带的集成服务冲突。赶紧卸载它:
sudo apt-get remove --purge virtualbox-guest-x11
Homestead的Hyper-V镜像默认已经带了Hyper-V来宾集成服务,不用额外装别的。
2. 把SMB共享的权限和配置捋顺
(1)Windows主机的共享权限要拉满
你说已经共享了Sites文件夹,这个方向是对的,但得确保权限设置到位:
- 右键
Sites文件夹 → 属性 → 共享标签 → 高级共享 → 权限,添加你设置的vagrant用户,勾选完全控制。 - 切换到安全标签 → 编辑 → 添加
vagrant用户,同样勾选完全控制。
另外,记得开启SMB 1.0/CIFS支持(虽然你说开了SMB功能,但Hyper-V下有时候需要这个):控制面板→程序→启用或关闭Windows功能,找到「SMB 1.0/CIFS文件共享支持」勾选后重启主机。
(2)修正Homestead.yaml里的配置
你的yaml里有几个小坑:
smb_host别用127.0.0.1,Hyper-V虚拟机和主机通信得用主机的实际局域网IP(比如错误日志里的192.168.1.14),或者直接删掉这个参数,Vagrant会自动检测。folders里的map路径必须是Windows绝对路径,比如C:/Users/sgrat/Sites/mysite,你写的Sites/mysite是相对路径,Vagrant可能找不到。- 还要注意Homestead默认会把你的Homestead目录挂载到
/vagrant,这个也会用SMB,要么确保这个目录权限没问题,要么在folders里明确配置它。
修正后的folders块示例:
folders: - map: C:/Users/sgrat/Sites/mysite to: /home/vagrant/mysite type: "smb" smb_username: vagrant smb_password: vagrant # 如果需要默认的/vagrant挂载,加上这段: - map: C:/Users/sgrat/Desktop/Sites/Homestead to: /vagrant type: "smb" smb_username: vagrant smb_password: vagrant
3. 再确认下虚拟机里的cifs-utils
虽然你说检查过,但再敲一遍命令确保它是最新的:
sudo apt-get update && sudo apt-get install cifs-utils -y
这是Linux挂载SMB必须的工具,不能少。
4. 关于你更新的疑问:修改共享路径是否正确?
完全正确!把map指向你手动共享的文件夹,Vagrant可以直接复用这个共享,比让它自动创建共享更稳定。不过一定要用绝对路径,别用相对路径,不然Vagrant找不到文件夹。
最后一步:重新测试
- 先退出虚拟机:
exit - 以管理员身份打开命令提示符/PowerShell,运行:
vagrant reload --provision
划重点:必须管理员权限!Vagrant创建SMB共享需要这个权限,不然肯定会权限不足。
如果还是不行,试试用你Windows主机的本地管理员账号作为smb_username和smb_password——有时候系统自带的管理员权限比你新建的vagrant用户更容易通过SMB验证。另外检查下Hyper-V的虚拟交换机,确保虚拟机和主机在同一个网络,能ping通主机IP。
内容的提问来源于stack exchange,提问作者fudo
相关产品推荐
相关产品推荐

