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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章