Qual è il modo corretto di condividere le directory con Ubuntu in esecuzione in una VM Virtual Box con le autorizzazioni corrette?


23

In VirtualBox, qual è il modo migliore per condividere una directory tra un host OS X e un guest Ubuntu?

  • Host: Mac OS X 10.7.3
  • Ospite: Ubuntu 12.04
  • Il guest ha una directory condivisa montata tramite le impostazioni di VirtualBox con Access = Full e Auto-Mount = Sì .

Il problema con questa configurazione è illustrato di seguito. Nella mia directory condivisa, non riesco affatto a modificare le autorizzazioni (non un errore di autorizzazione negata, ma non hanno effetto).

Ubuntu 12.04 (guest):

% 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 (host):

$ 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

Se chmod sull'ospite, nulla cambia:

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

Se chmod sull'host, cambia sull'host ma non sull'ospite:

$ 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

Ah, l'ho capito, ma non posso pubblicare la risposta per altre 8 ore (non abbastanza punti). La soluzione è fare sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, dove umask è il valore umaskdell'utente, da dove provengono uid e gid id <user>, srcè il nome della condivisione VBox ed /meida/sf_srcè il punto di montaggio desiderato.
jmdeldin,

Risposte:


23

L'ho capito!

Per riprodurre:

  1. Arrestare la macchina virtuale, aggiungere cartelle condivise nelle impostazioni di VBox (permanente = Sì, montaggio automatico = No)
  2. Avvia la VM
  3. Da un terminale, esegui umask && idcome l'utente normale per ottenere qualcosa del genere:

    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

Per montare la srcdirectory come test:

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

Per montarlo automaticamente all'accesso, modifica /etc/fstabe aggiungi quanto segue:

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

Questo e 'esattamente quello che stavo cercando! Ho finito per creare un gruppo di utenti condiviso per apache2 e per i miei utenti che hanno accesso alla cartella montata. serverfault.com/questions/6895/…
thesmart

Grazie! Nota che ho avuto grossi problemi fino a quando non ho scoperto che /sbin/mount.vboxsfera un collegamento simbolico penzolante! Cancellandolo e quindi ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfrisolto il problema! L'installazione delle aggiunte degli ospiti probabilmente non è stata in grado di collegarla in modo simbolico. Ho passato gran lunga troppo tempo per capire questo fuori!
CSL

2
... ora l'unico problema sembra essere che vboxsf non gestisca i collegamenti simbolici! Come in, non è possibile creare collegamenti simbolici nella cartella condivisa dalla VM! (Almeno su OSX, VirtualBox 4.3.10
csl

Questa procedura è certamente una delle poche per arrivarci. Nel mio caso, tuttavia, quando
passo

4

Il problema: problemi di autorizzazione in vbox / ubuntu che accedono a un'unità condivisa OSX

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

L'obiettivo è un modo semplice per condividere directory tra ambienti Mac e Ubuntu. Sfortunatamente gli esempi che ho visto finora sembrano essere un po 'più complessi di quanto debbano essere realmente, e non spiegano davvero quale sia il vero problema che deve essere risolto. Cercherò di gestire entrambi questi problemi qui.

L'ambiente qui è un Mac con OSX 10.9.5, con Virtual Box 4.3.16 che esegue Ubuntu-14.04.1 con estensioni Guest installate. Roba di settembre 2014.

Penso che l'intero problema qui sia che l' uid delle directory sul Mac e in Ubuntu deve corrispondere: il gid predefinito assegnato per utente e gruppi è diverso tra OSX e Ubuntu, ed è qui che sta il problema.

Per accedere a un file, è necessario possederlo o essere un membro del gruppo che lo possiede. E poiché l'accesso si basa in realtà sul numero ID del gruppo, non sul nome del gruppo, tutto ciò che è necessario è creare un numero di gruppo comune su entrambi i lati a cui appartengono gli utenti.

Questo è esattamente ciò che fa la soluzione di seguito. Non lasciarti ingannare dalla lunghezza di ciò che è scritto, in realtà è molto semplice. Ci sono solo molti e molti esempi di ciò che sta succedendo.

Scorrerò tra le console OSX e VBOX qui (mac e virtual-box / ubuntu) all'interno di questo documento - assicurati di capire in quale finestra sei.

Nota finale: la soluzione mostrata di seguito si basa sulla creazione di un ID di gruppo comune tra gli ambienti OSX e Ubuntu, in modo che i permessi dei file funzionino. Potrebbero esserci altre soluzioni più moderne. Questo è davvero semplice e comprensibile e funziona su installazioni semplici e disadorno.

OSX: —————

Si noti che è stato fatto su un Mac 10.9.5 nuovo di zecca, con nulla su di esso, non collegato a una rete aziendale, niente di speciale in esecuzione su di esso diverso dal software di serie. Questo è semplice come si arriva.

Quando ho eseguito l'installazione predefinita sul Mac, joe_public è l'utente admin e il suo uid era impostato su 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)

Nota che l' UID è 501 - questo è il primo ID account predefinito su OSX - niente di speciale

Ho creato alcune directory che voglio condividere sul lato Mac. Nota che non le ho inserite nella mia directory utente per motivi di backup.

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: ——————

Semplice scatola virtuale predefinita e installazione di Ubuntu - ancora una volta, joe_public è l'amministratore predefinito creato quando ho installato Ubuntu.

Si noti ancora una volta che lo spazio dei nomi tra OSX e Ubuntu è completamente diverso. Non c'è assolutamente alcuna relazione tra i due nomi qui.

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)

Creato tre punti di montaggio, usando le impostazioni di Virtual Box -> Gui Cartelle condivise.

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

NOTA: in realtà ho dovuto riavviare la sessione per visualizzare tutti questi punti di montaggio.

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)

Si noti che il gid per questi è 999 - questo è il gruppo vboxsf .

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

Questo è stato assegnato automaticamente dalla Virtual Box versione 4.3.16 per noi. La documentazione di Vbox mostra come modificarlo se si monta il percorso manualmente attraverso la riga di comando, ma chi lo ricorderà - Basta prendere le impostazioni predefinite che la GUI ci impone.

Ma non funziona (previsto a questo punto - questo è ciò che stiamo cercando di risolvere)

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

Nota che a questo punto joe_public non è un membro di quel gruppo vboxsf - e questo sarà un problema fino a quando non lo ripareremo. Cordiali saluti: Questi sono i gruppi predefiniti assegnati all'account quando viene creato.

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

Quindi quello che abbiamo a questo punto (non abbiamo ancora fatto nulla per risolverlo)

•   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

Non vogliamo cambiare il gid dell'utente joe_public su entrambi i lati, poiché questo è un problema nel culo su sistemi già installati e non risolve questo problema per altri utenti. La soluzione più semplice è quella di creare un id di gruppo corrispondente - vboxsf - sul lato Mac e assicurarsi che joe_public ne sia membro su entrambi i lati.

Quindi, ancora sul vbox / ubuntu, fanno joe_public un membro del 999 vboxsf gruppo

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

Penso di essermi disconnesso dal mio account e di nuovo qui dopo averlo fatto.

OSX: —————

Ora dobbiamo creare un gruppo vboxsf sul mac. Dubito che il nome in realtà faccia la differenza qui - è l' id del gruppo 999 che è importante. Ricordare che gli spazi dei nomi del sistema di directory (così come i nomi degli utenti) sono diversi tra l'host e i sistemi operativi della VM. Ma solo per rendere la vita sana, la chiamiamo tutti vboxsf sul Mac. Stesso ragionamento per cui a joe_public viene utilizzato un nome utente su entrambi i lati.

OSX non ha un semplice comando aggiungi gruppo come fa Linux - quindi usa il comando dscl per farlo in più passaggi. Per ulteriori dettagli, consultare la documentazione di mac os. Si noti che creiamo il gruppo vboxsf e aggiungiamo joe_public a quel gruppo qui.

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

Quindi, a questo punto, dovremmo

•   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

La prova qui è se funziona - quindi questo è il prossimo passo

VBOX: ——————

cd nella nostra directory e toccare un file

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

Verifica che il file sia stato creato correttamente.

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

Sembra funzionare tutto ..

VBOX: —————— VERIFICA FINALE

Quello che stiamo verificando qui è che tutto dipende dal fatto che l'utente joe_public sia un membro del gruppo vboxsf - e il modo più semplice è semplicemente rimuovere joe_public dal gruppo

Rimozione dell'utente joe_public dal gruppo vboxsf

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

Vedere se possiamo accedere alla nostra directory - e non possiamo, e questo dimostra che si tratta di un problema di autorizzazione del gruppo

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

Aggiungi l'utente di nuovo in vboxsf

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

Funziona di nuovo!

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: - UN ALTRO PROBLEMA - collegamenti simbolici in vbox -------

Se vai in / media / sf_shared , scoprirai che i collegamenti simbolici nelle directory condivise semplicemente non funzionano. Questo è un grosso problema se stai cercando di impostare un ambiente di sviluppo completo per Linux su un'unità condivisa.

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

Per impostazione predefinita, i collegamenti simbolici non sono supportati nelle condivisioni di scatole virtuali. Vedi sotto per le spiegazioni. Fondamentalmente, come ho capito, i collegamenti simbolici sono una falla di sicurezza che sono stati "riparati" in Virtual Box disabilitando il supporto per loro nel periodo di tempo 4.1.8 (2011). Sto correndo il 4.3.16 qui ...

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

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

Fortunatamente c'è una backdoor per riattivarla, tramite il comando VBoxManage dell'host . Come sempre, ti preghiamo di comprendere le falle di sicurezza che potresti aprire. Sono su una macchina di sviluppo autonoma, quindi questo non sembra essere un problema.

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

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

Nota: Ubuntu è il nome della mia VM, e condiviso è il nome della directory condivisa.

È possibile ottenere il nome VM in questo modo:

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

E il nome delle cartelle condivise, tramite la GUI di Virtual Box, oppure

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

Ho riavviato l'intero sistema di scatole virtuali qui, non ho capito il requisito minimo per farlo.

Ad ogni modo, per provarlo, torna alla tua finestra di vbox

VBOX: ---------

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

Nessun errore - e da verificare

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: ----------

E di nuovo sul lato Mac - solo per dimostrare che tutto funziona

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

Nota, l'ho testato solo su un host OSX e client di virtual box Ubuntu. I riferimenti che ho elencato sopra sembravano indicare che potrebbe esserci un problema con un host basato su Windows.

ESERCIZIO A SINISTRA PER LO STUDENTE ———————

Il vantaggio del metodo sopra elencato è che può essere eseguito su una macchina stand-alone, senza accesso alla rete. Ma se ci pensate, questo problema nome-versi-ID deve essere un problema comune tra qualsiasi ambiente di elaborazione eterogeneo.

Quali altre soluzioni sono disponibili dove sono disponibili soluzioni a quel problema? - Cose come Active Directory (un prodotto Microsoft) e simili potrebbero essere in grado di risolverlo. Sarebbe interessante ottenere una raccolta di quelle soluzioni e confrontare lì varie caratteristiche e compromessi.


3

Per me tutto quello che dovevo fare era:

sudo adduser [username] vboxsf

Questo mi è bastato per accedere alle cartelle condivise. La cartella ha un gruppo di vboxsf, l'utente deve solo essere assegnato a quel gruppo per ottenere l'accesso. Se è necessario impostare un accesso più rigoroso o un accesso più controllabile, potrebbe essere necessario seguire le fasi del montaggio manuale con userid-s corretti.

Per me la soluzione fstab non ha funzionato e ha causato l'avvio non corretto della macchina.


3

Dopo aver creato una cartella condivisa nelle impostazioni di Virtualbox, Ubuntu la monterà automaticamente per te al prossimo avvio del sistema (vedrai un'icona sul desktop).

inserisci qui la descrizione dell'immagine

Ma se non stai usando un account root, non avrai i permessi per accedervi. Quello che devi fare è aggiungere il tuo account utente a un gruppo di utenti chiamato 'vboxsf':

sudo usermod -G vboxsf -a $USER

Quindi disconnettersi e accedere nuovamente. Adesso puoi accedere alla cartella condivisa.


3

Fin da VirtualBox v4.0, è facile risolvere questi problemi con le autorizzazioni! Non è necessario preoccuparsi di mkdir, mount, chmod, umask, etc. Per accedere alle cartelle di auto-montato condivisi (che appaiono in /mediacon sf_prefissi di default), c'è solo una cosa che devi fare: Aggiungi il tuo nome utente al vboxsfgruppo tramite sudo usermod -a -G vboxsf [username].

Per comodità, potresti anche voler creare collegamenti simbolici a quelle cartelle condivise all'interno della tua homecartella (ad esempio, ln -s /media/sf_Stuff ~/Stuff).

Fonte: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


Bel punto sul collegamento simbolico.
Shaun Dychko,

0

Ho trovato questo, ho testato e ha funzionato in Ubuntu e Xubuntu, solo la funzione di montaggio automatico non ha funzionato per me

I. Installa aggiunte ospite

Innanzitutto, è necessario installare le aggiunte guest di VirtualBox sul sistema host:

Scegli nel menu di VitualBox: Dispositivi -> Installa aggiunte guest ...

Monta un nuovo ISO per il sistema host. Un nuovo CD appare in Ubuntu (o montalo). Esegui come root lo script di installazione VBoxLinuxAdditions-x86.run (perché è un Mac basato su Intel) in una finestra Terminale:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Probabilmente ti verrà chiesto di riavviare Ubuntu.

L'installazione di Guest Additions presenta molti vantaggi come l'adozione della risoluzione dello schermo (la dimensione della finestra è la risoluzione del sistema, ovvero nessuna barra di scorrimento), la modalità mouse semplice (non è necessario premere il pulsante di comando sinistro per rilasciare il cursore del mouse) e ciò che stiamo cercando per, cartelle condivise.

II. Crea cartella condivisa

L'obiettivo è accedere a una cartella condivisa, che è un modo più semplice che usare sshd o Samba.

Scegli nel menu di VitualBox: Dispositivi -> Cartelle condivise ...

  • Fai clic sul pulsante Aggiungi nuova cartella condivisa.
  • Scegli un percorso cartella - una cartella sul disco rigido del tuo Mac, ad esempio / Users / ondrej / Pictures.
  • Scegli un Nome cartella - un nome che identifica questa cartella condivisa in Ubuntu (come sistema host), ad esempio immagini.
  • Seleziona Rendi permanente - se desideri mantenere questa definizione di cartella condivisa.
  • Clicca su OK.
  • Fare clic su OK per chiudere l'elenco delle cartelle condivise.

III. Monta cartella condivisa

Montare la cartella condivisa creata in una cartella con le autorizzazioni per l'utente. Apriamo una finestra Terminale su Ubuntu e:

Creare una cartella in cui verrà montata la cartella condivisa. (Salta questo passaggio se hai già una cartella per questo.)

mkdir DIR

ad es. (in / tmp)

mkdir share

Ottieni il tuo utente uid:

id

Il risultato sarà qualcosa di simile:

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

quindi il mio utente è 1000. Montare la cartella condivisa SHARED_FOLDER_NAME nella cartella MOUNTED_FOLDER con la proprietà per l'utente con uid USER_ID come root:

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

per esempio

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

La specifica del parametro uid abilita la scrittura nella cartella condivisa per l'utente. La cartella montata MOUNTED_FOLDER (ad es. / Tmp / share) contiene file dalla cartella condivisa sul disco rigido del Mac. È possibile scrivere anche nella cartella di condivisione. Facoltativamente, una cartella condivisa può essere montata automaticamente all'avvio della macchina virtuale. Aggiungi la seguente riga al file / etc / fstab (come root, ad esempio sudo vim / etc / fstab):

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

per esempio

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

dove i valori uid e gid possono essere trovati nell'output del comando id (vedere il passaggio 2 per un esempio dettagliato). La cartella condivisa sarà disponibile anche dopo il riavvio della macchina virtuale.

Fonte: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-shared-folders/


0

Sistema operativo host : macOS
VM (guest) Sistema operativo : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Sia il sistema operativo host che il sistema operativo guest devono avere lo stesso utente (più avanti nel testo: nome utente ).

Fase 1: installare aggiunte Guest VirtualBox :

1.1. Individua le aggiunte Guest di VirtualBox,

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

1.2. Avvia la VM

1.3. Fare clic sull'icona del CD nella barra delle attività in basso a destra

1.4. Seleziona "Scegli immagine disco ..." "e cerca VBoxGuestAdditions.iso

1.5. Nel tipo di terminale guest (è anche possibile farlo dal terminale host se si SSH in esso):

$ 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

Fase 2: installazione delle cartelle condivise:

2.1. Crea regole nella VM:

  • Ferma la VM
  • Vai a Settings > Shared Folders
  • Fai clic su Add new port forwarding rule pulsante verde in alto a destra nella finestra.
  • Cerca e seleziona la cartella che desideri condividere (ad esempio: / path / to / shared / host_folder )
  • Seleziona le opzioni Auto-mounteMake Permanent
  • Avvia la VM

2.2. Per montare una cartella condivisa su /optè necessario creare una shared_folder_dirsottocartella e impostarne le autorizzazioni appropriate:

$ 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. Aggiungi nome utente al gruppo vboxsf :

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

2.4. Riavvia VM per applicare le modifiche:

$ sudo reboot

Fase 3: montaggio automatico host_folderin /opt/shared_folder_dir:

3.1. Cambia /etc/rc.local della VM:

$ sudo nano /etc/rc.local

e posizionare quanto segue proprio sopra 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 >>>

Nota: ho aggiuntosleep 5per eseguire l'operazione di montaggio dopo l' avvio di VirtualBox Guest Additions. Puoi verificarlo tramitejournalctl -bcomando.

3.2. Riavvia VM per applicare le modifiche:

$ sudo reboot

Guarda anche


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.