virtualbox上centos与windows文件共享的坑,别用virtualbox自带的自动挂载

这个问题一定要分享,困扰了三天,终于解决。

我在什么样的情景下遇到这个问题?

在学Laravel,想要在windows编辑代码,然后通过virtualbox上centos共享文件夹的方式,在Linux上运行代码。

Linux上的环境是使用Laradock搭建的,这是一个基于docker的集成环境。

目录

一、操作环境

二、先说结论

三、这有什么影响?

四、原因

五、手动挂载怎么操作?

六、一些资料


一、操作环境

virtualbox6+,windows10,centos7.6,docker19.03 , laradock

二、先说结论

virtualbox设置共享文件夹的时候,尽量不要使用virtualbox【自动挂载】功能,就是设置共享文件夹时候不要勾选【自动挂载】的选择框。因为自动挂载和手动挂载,共享文件夹的执行权限是不同的!!

-rwxrwx---  root vboxsf index.html  #自动挂载模式下,文件的权限是770
-rwxrwxrwx  root root   index.html  #手动挂载模式下,文件的权限是777

发现了吗?使用virtualbox【自动挂载】模式下,共享文件除了root用户和vboxsf组外,其他用户和组根本没有权限!!

三、这有什么影响?

一般LNMP环境Nginx和php使用的用户都不是root,所以他们能读吗?肯定返回404啊。

不要天真的以为chmod就好了,因为那根本就不管用!!!

ok,那我把Nginx和php使用的用户(这里假设www-data)加入到vboxsf组就好了吧?

sudo usermod -aG vboxsf www-data

对于一些情况,这样确实是可以的。但是如果用的是Docker呢,PHP和Nginx用的都是docker镜像?Dockfile里面新建了一个www-data的用户,docker的宿主机并没有这一用户,而且docker容器里面也没有vboxsf这一个组啊!!无论怎么折腾docker里的Nginx,都没有操作共享文件夹的权限啊··············

四、原因

首先,virtualbox共享文件夹有两种方式,一种是手动挂载(Manual Mounting)即进入到centos执行命令行,并且添加到开机任务。另一种是自动挂载(Automatic Mounting)。自动挂载就是在设置【共享文件夹】时勾选【自动挂载】选项,这样无需再执行命令行和添加开机任务,每次开机都会自己挂载。

其次,在勾选自动挂载的情况下,virtualbox会自动在/media文件夹下,新建带有前缀“sf_”的文件夹,例如sf_laravel。这个文件夹的权限就是770。严格限制root用户和vboxsf组才有权限。这是virtualbox设定并且限制的。看Virtualbox官方文档

Access to an automatically mounted shared folder is granted to everyone in a Windows guest, including the guest user. For Linux and Oracle Solaris guests, access is restricted to members of the group vboxsf and the root user.

五、手动挂载怎么操作?

1、virtualbox客户端【设置】-【共享文件夹】。注意这里【共享文件夹名称】稍后command有用到

2、启动虚拟机,进入centos。把名为laravel的共享挂载到/var/www下

mount -t vboxsf laravel /var/www

编辑/etc/fstab。添加如下用于开机启动

laravel   /var/www   vboxsf   defaults  0   0

六、一些资料

virtualbox官方文档:

    https://www.virtualbox.org/manual/UserManual.html#sf_mount_manual

通过VirtualBox实现虚拟机中共享本地目录,权限不足:

    https://www.linuxidc.com/Linux/2017-11/148333.htm

CentOS7 在 VirtualBox 上的安装配置(2) -- VirtualBox 增强包安装篇:

   https://segmentfault.com/a/1190000006233585#articleHeader2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值