Cách chính xác để chia sẻ thư mục với Ubuntu đang chạy trong Virtual Box VM với quyền chính xác là gì?


23

Trong VirtualBox, cách tốt nhất để chia sẻ thư mục giữa máy chủ OS X và máy khách Ubuntu là gì?

  • Máy chủ: Mac OS X 10.7.3
  • Khách: Ubuntu 12.04
  • Khách có thư mục dùng chung được gắn thông qua cài đặt VirtualBox với Access = FullAuto-Mount = Yes .

Vấn đề với thiết lập này được minh họa dưới đây. Trong thư mục dùng chung của mình, tôi hoàn toàn không thể thay đổi quyền (không phải là quyền bị từ chối, nhưng chúng không có hiệu lực).

Ubuntu 12.04 (khách):

% ls -l
total 0
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 10
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 2
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 3
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 4
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 5
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 6
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 7
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 8
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 9

Mac OS X 10.7.3 (máy chủ):

$ ls -l
total 0
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 1
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 10
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 2
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 3
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 4
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 5
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 6
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 7
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 8
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 9

Nếu tôi chmod trên khách, không có gì thay đổi:

% chmod +x 1 | ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

Nếu tôi chmod trên máy chủ, nó sẽ thay đổi trên máy chủ nhưng không phải trên máy khách:

$ chmod +x 1 | ls -l 1 # host
-rwxrwx--x  1 <my-mac-user>  staff  0 Apr 17 21:56 1

% ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

À, tôi đã tìm ra rồi, nhưng tôi không thể đăng câu trả lời trong 8 giờ nữa (không đủ điểm). Giải pháp là phải làm sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, trong đó umask là giá trị của umaskngười dùng, uid và gid đến từ id <user>, srclà tên của chia sẻ VBox và /meida/sf_srclà điểm gắn kết mong muốn.
jmdeldin

Câu trả lời:


23

Tôi đã tìm ra rồi!

Để sao chép:

  1. Tắt máy ảo, thêm các thư mục được chia sẻ trong cài đặt của VBox (Vĩnh viễn = Có, Tự động gắn kết = Không)
  2. Khởi động VM
  3. Từ một thiết bị đầu cuối, chạy umask && idnhư người dùng bình thường để có được một cái gì đó như thế này:

    002 # this is your umask
    uid=1000(luser) gid=1000(luser) groups=1000(luser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare),125(vboxsf)
    
  4. sudo mkdir -p /media/sf_src # src is the shared directory

Để gắn kết srcthư mục dưới dạng thử nghiệm:

sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src 
                           |   |        |        |   |-> where to mount
                           |   |        |        |       the file
                           |   |        |        |-> name of the shared dir
                           |   |        |            (in VBox settings)
                           |   |        |
                           \   |        /
                        from the `id` command

Để tự động gắn kết khi đăng nhập, hãy chỉnh sửa /etc/fstabvà thêm vào như sau:

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000

Điều này thật đúng với gì mà tôi đã tìm kiếm! Cuối cùng tôi đã tạo một nhóm người dùng chung cho apache2 và những người dùng của tôi có quyền truy cập vào thư mục được gắn kết. serverfault.com/questions/6895/ từ
thesmart

Cảm ơn! Lưu ý rằng tôi đã có vấn đề lớn cho đến khi tôi phát hiện ra đó /sbin/mount.vboxsflà một liên kết tượng trưng! Xóa nó và sau đó ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfgiải quyết vấn đề! Các cài đặt bổ sung khách có thể không thể liên kết nó. Tôi đã dành xa quá nhiều thời gian để tìm ra này!
csl

2
... bây giờ vấn đề duy nhất dường như là vboxsf không xử lý các liên kết tượng trưng! Như trong, bạn không thể tạo liên kết tượng trưng trong thư mục dùng chung từ VM! (Ít nhất là trên OSX, VirtualBox 4.3.10
csl

Thủ tục này chắc chắn là một trong số ít để đưa bạn đến đó. Tuy nhiên, trong trường hợp của tôi, khi tôi thay đổi thư mục dùng chung và thử phát lệnh ls, thiết bị đầu cuối bị treo
demongolem

4

Vấn đề - vấn đề về quyền trong vbox / ubfox khi truy cập ổ đĩa chia sẻ OSX

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

Mục tiêu là một cách đơn giản để chia sẻ các thư mục giữa các môi trường Mac và Ubuntu. Thật không may, các ví dụ mà tôi đã thấy cho đến nay dường như phức tạp hơn một chút so với thực tế chúng cần phải có, và không thực sự giải thích vấn đề thực sự cần phải giải quyết là gì. Tôi sẽ cố gắng xử lý cả hai vấn đề đó ở đây.

Môi trường ở đây là máy Mac chạy OSX 10.9.5, với Virtual Box 4.3.16 thực thi Ubuntu-14.04.1 với các tiện ích mở rộng Guest được cài đặt. Tháng 9 năm 2014 thứ.

Tôi nghĩ rằng toàn bộ vấn đề ở đây là uid của các thư mục trên Mac và trong Ubuntu phải khớp - Các gid mặc định được gán cho người dùng và các nhóm khác nhau giữa OSX và Ubuntu và đó là vấn đề nằm ở chỗ.

Để truy cập một tập tin, người ta phải sở hữu nó hoặc là thành viên của nhóm sở hữu nó. Và vì quyền truy cập thực sự dựa trên số id của nhóm chứ không phải tên nhóm, tất cả những gì cần thiết là tạo một số nhóm chung ở cả hai bên, mà người dùng thuộc về.

Đó chính xác là những gì giải pháp dưới đây làm. Đừng hiểu lầm về độ dài của những gì được viết, nó thực sự rất đơn giản. Có rất nhiều ví dụ về những gì đang diễn ra.

Tôi sẽ chuyển giữa các bảng điều khiển OSXVBOX ở đây (mac và hộp ảo / ubfox) trong tài liệu này - đảm bảo bạn hiểu cửa sổ nào của bạn.

Lưu ý cuối cùng: Giải pháp hiển thị bên dưới dựa trên việc thiết lập id nhóm chung giữa môi trường OSX và Ubuntu, để các quyền của tệp hoạt động. Có thể có những giải pháp khác, hiện đại hơn. Điều này là thực sự đơn giản và dễ hiểu, và chạy trên các cài đặt cơ bản chưa được trang bị xương trần.

OSX:

Lưu ý rằng đã được thực hiện trên một bản mới 10.9.5 Mac, không có gì trên đó, không được kết nối với mạng công ty, không có gì lạ mắt chạy trên nó ngoài phần mềm chứng khoán. Điều này là đơn giản như nó được.

Khi tôi thực hiện cài đặt mặc định trên Mac, joe_public là người dùng quản trị và uid của anh ta được đặt thành 501 .

Joes-MacBook-Pro:/ joe_public$ id
uid=501(joe_public) gid=20(staff) groups=20(staff),999(vboxsf),401(com.apple.sharepoint.group.1),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),501(access_bpf),33(_appstore),100(_lpoperator),204(_developer),398(com.apple.access_screensharing),399(com.apple.access_ssh)

Lưu ý rằng uid501 - đây là id tài khoản đầu tiên mặc định trên OSX - không có gì đặc biệt

Tôi đã tạo một vài thư mục mà tôi muốn chia sẻ ở phía Mac - Lưu ý rằng tôi đã không đặt chúng trong thư mục người dùng của mình vì lý do sao lưu.

Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/shared
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/public 
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/images

Joes-MacBook-Pro:vdisk joe_public$ ls -al
total 0
drwxr-xr-x   5 joe_public  admin   170 Oct  8 01:08 .
drwxrwxr-t  36 root        admin  1292 Oct  6 02:26 ..
drwxrwxrwx   2 joe_public  admin    68 Oct  6 01:08 images
drwxr-xr-x   3 joe_public  admin   102 Oct  8 01:07 public
drwxrwxrwx   4 joe_public  admin   136 Oct  8 00:45 shared

VBOX:

Hộp ảo mặc định đơn giản và cài đặt Ubuntu - một lần nữa, joe_public là quản trị viên mặc định được tạo khi tôi cài đặt ubfox .

Xin lưu ý một lần nữa, không gian tên giữa OSX và Ubuntu là hoàn toàn khác nhau. Hoàn toàn không có mối quan hệ giữa hai tên ở đây.

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ id
uid=1000(joe_public) gid=1000(joe_public)   groups=1000(joe_public),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

Đã tạo ba điểm gắn kết, sử dụng Cài đặt của Hộp ảo -> gui Thư mục được chia sẻ.

Name      Path              Auto-mount  Access
images    /vdisk/images     Yes         Full
public    /vdisk/pubic      Yes         Read-only
shared    /vdisk/shared     Yes         Full

LƯU Ý: Tôi thực sự phải khởi động lại phiên của mình để tất cả các điểm gắn kết này xuất hiện.

joe_public@joe_public-ubuntu-VirtualBox:~$ mount | grep vboxsf
shared on /media/sf_shared type vboxsf (gid=999,rw)
public on /media/sf_public type vboxsf (gid=999,rw)
images on /media/sf_images type vboxsf (gid=999,rw)

Lưu ý rằng gid cho những cái này là 999 - đây là nhóm vboxsf .

joe_public@joe_public-ubuntu-VirtualBox:~$ grep 999 /etc/group
vboxsf:x:999

Điều này đã được chỉ định tự động bởi Virtual Box phiên bản 4.3.16 cho chúng tôi. Tài liệu vbox chỉ ra cách thay đổi điều này nếu bạn gắn đường dẫn thủ công thông qua dòng lệnh, nhưng ai sẽ nhớ điều đó - Đơn giản chỉ cần lấy các mặc định mà GUI buộc chúng ta ..

Nhưng nó không hoạt động (dự kiến ​​tại thời điểm này - đó là những gì chúng tôi đang cố gắng giải quyết)

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

Lưu ý rằng tại thời điểm này, joe_public không phải là thành viên của nhóm vboxsf đó - và đó sẽ là một vấn đề cho đến khi chúng tôi khắc phục nó. FYI: Đây là các nhóm mặc định được gán cho tài khoản khi nó được tạo.

joe_public@joe_public-ubuntu-VirtualBox:/media$ grep joe_public /etc/group
adm:x:4:syslog,joe_public
cdrom:x:24:joe_public
sudo:x:27:joe_public
dip:x:30:joe_public
plugdev:x:46:joe_public
lpadmin:x:108:joe_public
joe_public:x:1000:
sambashare:x:124:joe_public

Vì vậy, những gì chúng tôi có tại thời điểm này (chúng tôi chưa làm gì để khắc phục nó)

•   On mac,   joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac,   vboxsf does not exist

Chúng tôi không muốn thay đổi gid của người dùng joe_public ở cả hai bên, vì đó là một vấn đề khó khăn đối với các hệ thống đã được cài đặt và không giải quyết điều này cho những người dùng khác. Giải pháp đơn giản nhất là tạo id nhóm phù hợp - vboxsf - ở bên mac và đảm bảo rằng joe_public là thành viên của cả hai bên.

Vì vậy, vẫn còn trên vbox / ubuntu, hãy joe_public một thành viên của 999 vboxsf nhóm

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
joe_public@joe_public-ubuntu-VirtualBox:/$ grep 999 /etc/group
vboxsf:x:999:joe_public

Tôi nghĩ rằng tôi đã đăng xuất khỏi tài khoản của mình và quay lại đây sau khi tôi làm điều này.

OSX:

Bây giờ chúng ta cần tạo một nhóm vboxsf trên mac. Tôi nghi ngờ rằng cái tên thực sự tạo ra sự khác biệt ở đây - đó là id nhóm 999 quan trọng. Xin nhớ rằng các không gian tên hệ thống thư mục (cũng như tên người dùng) khác nhau giữa máy chủ và hệ điều hành VM. Nhưng chỉ để làm cho cuộc sống lành mạnh, tất cả chúng ta gọi nó là vboxsf trên mac. Lý do tương tự tại sao joe_public được sử dụng tên người dùng ở cả hai bên.

OSX không có lệnh add nhóm đơn giản như linux - vì vậy hãy sử dụng lệnh dscl để thực hiện việc này theo nhiều bước. Xin vui lòng xem tài liệu mac os để biết thêm chi tiết về điều này. Lưu ý rằng chúng tôi tạo nhóm vboxsf và thêm joe_public vào nhóm đó tại đây.

sudo dscl . -create /Groups/vboxsf
sudo dscl . -create /Groups/vboxsf name vboxsf
sudo dscl . -create /Groups/vboxsf passwd "*”
sudo dscl . -create /Groups/vboxsf gid 999
sudo dscl . -create /Groups/vboxsf GroupMembership joe_public

Vì vậy, tại thời điểm này, chúng ta nên có

•   On mac, joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac, vboxsf gid is 999
•   On linux, joe_public is member of vboxsf 
•   On mac, joe_public is member of vboxsf

Bằng chứng ở đây là nếu nó hoạt động - vì vậy đó là bước tiếp theo

VBOX:

cd vào thư mục của chúng tôi và chạm vào một tập tin

joe_public@joe_public-ubuntu-VirtualBox:/$ cd /media/sf_shared
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ touch foo

Kiểm tra xem chúng tôi đã tạo một tệp thành công.

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  102 Oct  8 00:44 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

OSX:

Joes-MacBook-Pro:shared joe_public$ cd /vdisk/shared
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  3 joe_public  vboxsf  102 Oct  8 00:44 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:44 foo

Joes-MacBook-Pro:shared joe_public$ touch bar
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  4 joe_public  vboxsf  136 Oct  8 00:45 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:45 bar

VBOX:

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  136 Oct  8 00:45 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

Tất cả dường như đang hoạt động ..

VBOX: XÁC NHẬN ĐÁNH GIÁ CUỐI CÙNG

Những gì chúng tôi đang kiểm tra ở đây là toàn bộ điều này phụ thuộc vào người dùng joe_public là thành viên của nhóm vboxsf - và cách đơn giản nhất chỉ đơn giản là xóa joe_public khỏi nhóm

Xóa người dùng joe_public khỏi nhóm vboxsf

joe_public@joe_public-ubuntu-VirtualBox:~$ sudo gpasswd -d joe_public vboxsf
log out/in ubuntu

Xem liệu chúng tôi có thể truy cập vào thư mục của mình không - và chúng tôi không thể, và điều này chứng tỏ đó là vấn đề về quyền của nhóm

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

Thêm người dùng trở lại vào vboxsf

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
log out/in ubuntu

Nó hoạt động trở lại!

joe_public@joe_public-ubuntu-VirtualBox:~$ ls -al /media/sf_shared
total 4
drwxrwx--- 1 root vboxsf  170 Oct  8 01:48 .
drwxr-xr-x 6 root root   4096 Oct  8 01:25 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

VBOX: - MỘT VẤN ĐỀ THÊM - liên kết tượng trưng trong vbox -------

Nếu bạn truy cập vào / media / sf_ Shared , bạn sẽ thấy rằng các liên kết tượng trưng trong các thư mục được chia sẻ đơn giản là không hoạt động. Đây là một vấn đề thực sự lớn nếu bạn đang cố gắng thiết lập môi trường phát triển linux đầy đủ trên một ổ đĩa chung.

joe_public@joe_public-ubuntu-VirtualBox:/media$ cd sf_images
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ls
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ mkdir test
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2
ln: failed to create symbolic link ‘test2’: Read-only file system

Theo mặc định, các liên kết tượng trưng không được hỗ trợ trên các chia sẻ hộp ảo. Xem dưới đây để giải thích. Về cơ bản theo tôi hiểu, các liên kết tượng trưng là một lỗ hổng bảo mật được "sửa" trong Hộp ảo bằng cách vô hiệu hóa hỗ trợ cho chúng trong khung thời gian 4.1.8 (2011). Tôi đang chạy 4.3.16 tại đây ...

https://www.virtualbox.org/ticket/10085

http://ahtik.com/blog/fixing-your-virtualbox-spl-folder-symlink-error/

May mắn thay, có một cửa sau để kích hoạt lại nó, thông qua lệnh VBoxManage của Host . Như mọi khi, xin vui lòng hiểu các lỗ hổng bảo mật ở đây mà bạn có thể đang mở. Tôi đang sử dụng một cỗ máy phát triển độc lập, vì vậy điều này dường như không phải là vấn đề.

OSX: ------------

Joes-MacBook-Pro:shared pbradstr$ VBoxManage setextradata Ubuntu VBoxInternal2/SharedFoldersEnableSymlinksCreate/shared 1   

Lưu ý: Ubuntu là tên vm của tôi và được chia sẻ là tên thư mục dùng chung.

Bạn có thể lấy tên vm như thế này:

Joes-MacBook-Pro:shared pbradstr$ VBoxManage list vms
"Ubuntu" {8461045a-1cee-4d44-8148-05920a47cee0}
Joes-MacBook-Pro:shared pbradstr$

Và tên thư mục được chia sẻ, thông qua gui của Virtual Box, hoặc

Joes-MacBook-Pro:shared pbradstr$ VBoxManage showvminfo Ubuntu | grep -A 5 "Shared folders"
Shared folders:  

Name: 'shared', Host path: '/vdisk/shared' (machine mapping), writable
Name: 'public', Host path: '/vdisk/public' (machine mapping), readonly
Name: 'images', Host path: '/vdisk/images' (machine mapping), writable

Tôi đã khởi động lại toàn bộ hệ thống hộp ảo ở đây, tôi không tìm ra yêu cầu tối thiểu để thực hiện.

Dù sao, để kiểm tra điều này, hãy quay lại cửa sổ vbox của bạn

VBOX: ---------

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2

Không có lỗi - và để xác minh

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -ald test*
drwxrwx--- 1 root vboxsf 102 Oct  8 11:33 test
lrwxrwx--- 1 root vboxsf   4 Oct  8 13:10 test2 -> test

OSX: ----------

Và trở lại về phía mac - chỉ để chứng minh tất cả đều hoạt động

Joes-MacBook-Pro:shared pbradstr$ ln -s test test3
Joes-MacBook-Pro:shared pbradstr$ ls -ald test*
drwxr-xr-x  4 joe_public  admin  136 Oct  8 13:20 test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:10 test2 -> test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:21 test3 -> test

Xin lưu ý, tôi chỉ thử nghiệm điều này trên máy chủ OSX và máy khách hộp ảo Ubuntu. Các tài liệu tham khảo mà tôi liệt kê ở trên dường như chỉ ra rằng có thể có vấn đề khi chạy máy chủ dựa trên Windows.

BÀI TẬP TRÁCH NHIỆM CHO SINH VIÊN

Lợi ích của phương pháp được liệt kê ở trên là nó có thể chạy trên một máy độc lập, không có quyền truy cập mạng. Nhưng nếu bạn nghĩ về điều này, vấn đề tên-id-id này đã trở thành một vấn đề phổ biến giữa bất kỳ môi trường điện toán không đồng nhất nào.

Những giải pháp nào khác có sẵn khi giải pháp cho vấn đề đó có sẵn? - Những thứ như Active Directory (một sản phẩm của Microsoft) và những thứ tương tự có thể có thể giải quyết điều này. Sẽ rất thú vị khi có được một bộ sưu tập các giải pháp đó và so sánh các tính năng và sự đánh đổi khác nhau.


3

Đối với tôi tất cả những gì tôi cần làm là:

sudo adduser [username] vboxsf

Thế là đủ để tôi có quyền truy cập vào các thư mục được chia sẻ. Thư mục có một nhóm vboxsf, người dùng chỉ cần được gán cho nhóm đó để có quyền truy cập. Nếu bạn cần đặt quyền truy cập chặt chẽ hơn hoặc quyền truy cập dễ kiểm soát hơn, bạn có thể cần thực hiện các bước để cài đặt thủ công với quyền người dùng.

Đối với tôi, giải pháp fstab không hoạt động và khiến máy không khởi động đúng.


3

Sau khi bạn tạo thư mục dùng chung trong cài đặt Virtualbox, Ubuntu sẽ tự động gắn kết nó cho bạn vào lần tới khi bạn khởi động hệ thống (bạn sẽ thấy một biểu tượng trên màn hình của bạn).

nhập mô tả hình ảnh ở đây

Nhưng nếu bạn không sử dụng tài khoản root, bạn sẽ không có quyền truy cập vào nó. Điều bạn cần làm là thêm tài khoản người dùng của mình vào nhóm người dùng có tên 'vboxsf':

sudo usermod -G vboxsf -a $USER

Sau đó đăng xuất và đăng nhập lại. Bạn có thể truy cập vào thư mục chia sẻ bây giờ.


3

Kể từ VirtualBox v4.0, thật dễ dàng để giải quyết các vấn đề về quyền này! Bạn không cần phải lo lắng về mkdir, mount, chmod, umask, vv Để truy cập vào thư mục tự động gắn trên chia sẻ của bạn (mà xuất hiện trong /mediavới sf_tiền tố theo mặc định), chỉ có một điều bạn cần làm: Thêm tên người dùng của bạn vào vboxsfnhóm thông qua sudo usermod -a -G vboxsf [username].

Để thuận tiện, bạn cũng có thể muốn tạo các liên kết tượng trưng đến các thư mục được chia sẻ trong homethư mục của mình (ví dụ ln -s /media/sf_Stuff ~/Stuff:).

Nguồn: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


Điểm hay về liên kết tượng trưng.
Shaun Dychko

0

Tôi đã tìm thấy cái này, tôi đã thử nghiệm và nó hoạt động trong Ubuntu và Xubfox, chỉ có tính năng automount không hoạt động với tôi

I. Cài đặt bổ sung khách

Đầu tiên, cần phải cài đặt Bổ sung khách của VirtualBox vào hệ thống máy chủ:

Chọn trong menu của VitualBox: Thiết bị -> Cài đặt bổ sung khách

Nó gắn một ISO mới cho hệ thống máy chủ. Một đĩa CD mới xuất hiện trong Ubuntu (hoặc gắn nó). Chạy với quyền root tập lệnh cài đặt VBoxLinuxAdditions-x86.run (vì đây là máy Mac dựa trên Intel) trong cửa sổ Terminal:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Có lẽ bạn sẽ được yêu cầu khởi động lại Ubuntu.

Cài đặt bổ sung khách có nhiều ưu điểm như áp dụng độ phân giải màn hình (kích thước cửa sổ của bạn là độ phân giải hệ thống, tức là không có thanh cuộn), chế độ chuột dễ dàng (không cần nhấn nút lệnh trái để nhả con trỏ chuột) và, những gì chúng ta đang tìm kiếm cho, thư mục chia sẻ.

II. Tạo thư mục dùng chung

Mục tiêu là truy cập vào một thư mục dùng chung, cách nào dễ hơn là sử dụng sshd hoặc Samba.

Chọn trong menu của VitualBox: Thiết bị -> Thư mục được chia sẻ ...

  • Nhấp vào nút Thêm thư mục chia sẻ mới.
  • Chọn Đường dẫn thư mục - một thư mục trên ổ cứng Mac của bạn, ví dụ: / Users / ondrej / Pictures.
  • Chọn Tên thư mục - tên xác định thư mục dùng chung này trong Ubuntu (dưới dạng hệ thống máy chủ), ví dụ: hình ảnh.
  • Chọn Make Permanent - nếu bạn muốn duy trì định nghĩa thư mục dùng chung này.
  • Bấm vào OK.
  • Nhấn OK để đóng danh sách các thư mục được chia sẻ.

III. Mount thư mục chia sẻ

Gắn thư mục chia sẻ đã tạo vào một thư mục có quyền cho người dùng của bạn. Hãy mở một cửa sổ Terminal trên Ubuntu và:

Tạo một thư mục trong đó sẽ là thư mục chia sẻ được gắn kết. (Bỏ qua bước này nếu đã có thư mục cho việc này.)

mkdir DIR

ví dụ: (trong / tmp)

mkdir share

Nhận người dùng của bạn uid:

id

Kết quả sẽ là một cái gì đó như:

uid=1000(ondrej)gid=1000(ondrej)groups=4(adm),20(dialout),24(cdrom),
46(plugdev),112(lpadmin),119(admin),120(sambashare),1000(ondrej)

vì vậy, số người dùng của tôi là 1000. Gắn thư mục dùng chung SHARED_FOLDER_NAME vào thư mục MOUNTED_FOLDER với quyền sở hữu cho người dùng với uid USER_ID là root:

sudo mount -t vboxsf -o uid=USER_ID SHARED_FOLDER_NAME MOUNTED_FOLDER

ví dụ

sudo mount -t vboxsf -o uid=1000 pictures /tmp/share

Chỉ định tham số uid cho phép ghi vào thư mục dùng chung cho người dùng của bạn. Thư mục được gắn MOUNTED_FOLDER (ví dụ / tmp / share) chứa các tệp từ thư mục dùng chung trên ổ cứng Mac của bạn. Có thể ghi vào thư mục chia sẻ là tốt. Tùy chọn, một thư mục chia sẻ có thể được tự động gắn vào khởi động máy ảo. Thêm dòng sau vào tệp / etc / fstab (dưới dạng root, ví dụ sudo vim / etc / fstab):

SHARED_FOLDER_NAME /PATH/TO/MOUNTED/FOLDER vboxsf uid=1000,gid=1000 0 0

ví dụ

pictures /tmp/share vboxsf uid=1000,gid=1000 0 0

trong đó các giá trị uid và gid có thể được tìm thấy trong đầu ra của lệnh id (xem bước 2 để biết ví dụ chi tiết). Thư mục dùng chung cũng sẽ khả dụng sau khi khởi động lại máy ảo.

Nguồn: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via- Shared-Folders /


0

Hệ điều hành máy chủ : macOS
VM (khách) Hệ điều hành : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Cả hệ điều hành máy chủ và hệ điều hành khách phải có cùng một người dùng (thêm trong văn bản: tên người dùng ).

Giai đoạn 1: Cài đặt VirtualBox Guest Additions :

1.1. Xác định vị trí bổ sung khách VirtualBox,

$ cd /Applications/VirtualBox.app/Contents/MacOS/
$ cp VBoxGuestAdditions.iso ~/Downloads/

1.2. Khởi động VM

1.3. Nhấp vào biểu tượng CD trong thanh tác vụ dưới cùng bên phải

1.4. Chọn "Chọn hình ảnh đĩa ..." "và tìm kiếm VBoxGuestAdditions.iso

1.5. Trong loại thiết bị đầu cuối khách (bạn cũng có thể thực hiện việc này từ thiết bị đầu cuối máy chủ nếu bạn SSH vào nó):

$ sudo su
$ apt update
$ apt upgrade
$ apt-get install dkms build-essential linux-headers-generic gcc make
$ mount /dev/cdrom /mnt
$ cd /mnt
$ sh ./VBoxLinuxAdditions.run
$ reboot

Giai đoạn 2: Thiết lập thư mục dùng chung:

2.1. Tạo quy tắc trong VM:

  • Dừng VM
  • Đi đến Settings > Shared Folders
  • Nhấp vào Add new port forwarding rulenút màu xanh lá cây ở trên cùng bên phải của cửa sổ.
  • Tìm kiếm và chọn thư mục bạn muốn chia sẻ (ví dụ: / path / to / shared / host_folder )
  • Chọn Auto-mountMake Permanenttùy chọn
  • Khởi động VM

2.2. Để gắn thư mục dùng chung, /optbạn phải tạo shared_folder_dirthư mục con và đặt quyền thích hợp cho thư mục đó:

$ sudo mkdir -p /opt/shared_folder_dir
$ sudo chmod ug+w -Rv /opt/shared_folder_dir
$ sudo chown username:username -Rv /opt/shared_folder_dir

2.3. Thêm tên người dùng vào nhóm vboxsf :

$ sudo adduser username vboxsf
$ sudo usermod -a -G vboxsf username

2.4. Khởi động lại VM để áp dụng các thay đổi:

$ sudo reboot

Giai đoạn 3: Tự động gắn host_foldervào /opt/shared_folder_dir:

3.1. Thay đổi /etc/rc.local của VM:

$ sudo nano /etc/rc.local

và đặt ngay sau đây exit 0:

# 'folder_name' = given in the shared folders configuration
# 'path/to/shared/folders' = guest path to access the shared folders from
# 'id' = prints uid/gid
# sudo mount -t vboxsf -o uid={uid},gid={gid} {shared_folder_name} {path/to/shared/folder}
sleep 5
sudo mount -t vboxsf -o uid=1000,gid=1000 host_folder /opt/shared_folder_dir
exit 0
<<< EOF >>>

Lưu ý: Tôi đã thêmsleep 5để thực hiện thao tác gắn kết sau khi VirtualBox Guest Additions bắt đầu. Bạn có thể kiểm tra bằngjournalctl -blệnh.

3.2. Khởi động lại VM để áp dụng các thay đổi:

$ sudo reboot

Xem thêm


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.