Quelle est la bonne façon de partager des répertoires avec Ubuntu exécuté dans une machine virtuelle Virtual Box avec les autorisations appropriées?

23

Dans VirtualBox, quelle est la meilleure façon de partager un répertoire entre un hôte OS X et un invité Ubuntu?

  • Hôte: Mac OS X 10.7.3
  • Invité: Ubuntu 12.04
  • L'invité a un répertoire partagé monté via les paramètres de VirtualBox avec Access = Full et Auto-Mount = Yes .

Le problème avec cette configuration est illustré ci-dessous. Dans mon répertoire partagé, je ne peux pas du tout modifier les autorisations (pas une erreur d'autorisation refusée, mais elles ne prennent tout simplement pas effet).

Ubuntu 12.04 (invité):

% 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 (hôte):

$ 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

Si je chmod sur l'invité, rien ne change:

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

Si je chmod sur l'hôte, cela change sur l'hôte mais pas sur l'invité:

$ 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
jmdeldin
la source
Ah, je l'ai compris, mais je ne peux pas poster la réponse pendant encore 8 heures (pas assez de points). La solution consiste à faire sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, où le umask est la valeur de umaskl'utilisateur, uid et gid sont id <user>, srcest le nom du partage VBox et /meida/sf_srcest le point de montage souhaité.
jmdeldin

Réponses:

23

Je l'ai compris!

Reproduire:

  1. Arrêtez la machine virtuelle, ajoutez des dossiers partagés dans les paramètres de la VBox (permanent = oui, montage automatique = non)
  2. Démarrez la VM
  3. À partir d'un terminal, exécutez en umask && idtant qu'utilisateur normal pour obtenir quelque chose comme ceci:

    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

Pour monter le srcrépertoire comme 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

Pour le monter automatiquement lors de la connexion, modifiez /etc/fstabet ajoutez les éléments suivants:

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000
jmdeldin
la source
Ceci est exactement ce que je cherchais! J'ai fini par créer un groupe d'utilisateurs partagé pour apache2 et mes utilisateurs qui ont accès au dossier monté. serverfault.com/questions/6895/…
thesmart
Merci! Notez que j'ai eu de gros problèmes jusqu'à ce que je découvre que /sbin/mount.vboxsfc'était un lien symbolique pendant! L'effacer et ensuite ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfrésoudre le problème! L'installation des ajouts d'invité n'a probablement pas pu le lier symboliquement. J'ai passé beaucoup trop de temps à comprendre cela!
csl
2
... maintenant le seul problème semble être que vboxsf ne gère pas les liens symboliques! Comme dans, vous ne pouvez pas créer de liens symboliques dans le dossier partagé à partir de la machine virtuelle! (Au moins sur OSX, VirtualBox 4.3.10
csl
Cette procédure est certainement l'une des rares à vous y conduire. Dans mon cas cependant, lorsque je passe dans le répertoire partagé et que j'essaie d'émettre une commande ls, le terminal se bloque
demongolem
4

Le problème - problèmes d'autorisation dans vbox / ubuntu accédant à un lecteur partagé OSX

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

L'objectif est un moyen simple de partager des répertoires entre les environnements Mac et Ubuntu. Malheureusement, les exemples que j'ai vus jusqu'à présent semblent être un peu plus complexes qu'ils ne devraient l'être, et n'expliquent pas vraiment quel est le vrai problème qui doit être résolu. J'essaierai de traiter ces deux problèmes ici.

L'environnement ici est un Mac exécutant OSX 10.9.5, avec Virtual Box 4.3.16 exécutant Ubuntu-14.04.1 avec des extensions invité installées. Trucs de septembre 2014.

Je pense que tout le problème ici est que l' uid des répertoires sur Mac et dans Ubuntu doit correspondre - Les gid par défaut attribués pour les utilisateurs et les groupes sont différents entre OSX et Ubuntu, et c'est là que réside le problème.

Pour accéder à un fichier, il faut soit le posséder, soit être membre du groupe qui le possède. Et comme l'accès est en fait basé sur le numéro d'identification du groupe, et non sur le nom du groupe, tout ce qui est nécessaire est de créer un numéro de groupe commun des deux côtés, auquel les utilisateurs appartiennent.

C'est exactement ce que fait la solution ci-dessous. Ne vous laissez pas induire en erreur par la longueur de ce qui est écrit, c'est en fait très simple. Il y a juste beaucoup, beaucoup d'exemples de ce qui se passe.

Je vais basculer entre les consoles OSX et VBOX ici (mac et virtual-box / ubuntu) dans ce document - assurez-vous de comprendre dans quelle fenêtre vous êtes.

Remarque finale: La solution présentée ci-dessous est basée sur l'établissement d'un identifiant de groupe commun entre les environnements OSX et Ubuntu, afin que les autorisations de fichier fonctionnent. Il peut y avoir d'autres solutions plus modernes. Celui-ci est vraiment simple et compréhensible, et fonctionne sur des installations de base sans fioritures.

OSX: —————

Notez que cela a été fait sur un Mac 10.9.5 tout neuf, sans rien dessus, non connecté à un réseau d'entreprise, rien de spécial à exécuter dessus, à part un logiciel standard. C'est aussi simple que possible.

Lorsque j'ai effectué l'installation par défaut sur le Mac, joe_public est l'utilisateur administrateur et son UID a été défini sur 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)

Notez que l' uid est 501 - c'est le premier identifiant de compte par défaut sur OSX - rien de spécial

J'ai créé quelques répertoires que je souhaite partager côté Mac - Notez que je ne les ai pas mis sous mon répertoire utilisateur pour des raisons de sauvegarde.

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

Boîte virtuelle par défaut simple et installation d'ubuntu - encore une fois, joe_public est l'administrateur par défaut créé lorsque j'ai installé ubuntu.

Veuillez noter une fois de plus que l'espace de nom entre OSX et Ubuntu est complètement différent. Il n'y a absolument aucune relation entre les deux noms ici.

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)

Création de trois points de montage à l'aide de la configuration de Virtual Box -> Gui Dossiers partagés.

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

REMARQUE: j'ai dû redémarrer ma session pour que tous ces points de montage apparaissent.

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)

Notez que le gid pour ceux-ci est 999 - c'est le groupe vboxsf .

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

Cela a été attribué automatiquement par Virtual Box version 4.3.16 pour nous. La documentation de la vbox montre comment changer cela si vous montez le chemin manuellement via la ligne de commande, mais qui s'en souviendra - Prenez simplement les valeurs par défaut que la GUI nous impose.

Mais cela ne fonctionne pas (attendu à ce stade - c'est ce que nous essayons de résoudre)

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

Notez qu'à ce stade, joe_public n'est pas membre de ce groupe vboxsf - et ce sera un problème jusqu'à ce que nous le corrigions. Pour info: ce sont les groupes par défaut affectés au compte lors de sa création.

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

Donc, ce que nous avons à ce stade (nous n'avons encore rien fait pour y remédier)

•   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

Nous ne voulons pas changer le gid de l'utilisateur joe_public de chaque côté, car c'est une douleur dans le cul sur les systèmes déjà installés, et ne résout pas cela pour les autres utilisateurs. La solution la plus simple consiste à créer un identifiant de groupe correspondant - vboxsf - côté mac et à vous assurer que joe_public en est membre des deux côtés.

Alors, encore Vbox / ubuntu, faire joe_public membre du 999 vboxsf groupe

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

Je pense que je me suis déconnecté de mon compte et que je me suis reconnecté ici après avoir fait cela.

OSX: —————

Maintenant, nous devons créer un groupe vboxsf sur le mac. Je doute que le nom fasse réellement une différence ici - c'est l' identifiant du groupe 999 qui est important. N'oubliez pas que les espaces de nom du système d'annuaire (ainsi que les noms d'utilisateur) sont différents entre les systèmes d'exploitation hôte et VM. Mais juste pour rendre la vie saine, nous l'appelons tous vboxsf sur mac. Même raisonnement pour lequel joe_public utilise un nom d'utilisateur des deux côtés.

OSX n'a ​​pas une simple commande d'ajout de groupe comme Linux - utilisez donc la commande dscl pour le faire en plusieurs étapes. Veuillez consulter la documentation de mac os pour plus de détails à ce sujet. Notez que nous créons le groupe vboxsf et ajoutons joe_public à ce groupe ici.

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

Donc, à ce stade, nous devrions avoir

•   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 preuve ici est que cela fonctionne - c'est donc la prochaine étape

VBOX: ——————

cd dans notre répertoire et touchez un fichier

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

Vérifiez que nous avons créé un fichier avec succès.

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

Tout semble fonctionner ..

VBOX: —————— VÉRIFICATION FINALE

Ce que nous vérifions ici, c'est que tout cela dépend du fait que l'utilisateur joe_public soit membre du groupe vboxsf - et la manière la plus simple consiste simplement à supprimer joe_public du groupe

Suppression de l'utilisateur joe_public du groupe vboxsf

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

Voyant si nous pouvons y accéder notre répertoire - et nous ne pouvons pas, et cela prouve que c'est un problème d'autorisation de groupe

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

Ajouter un utilisateur dans vboxsf

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

Ça marche encore!

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 PROBLÈME DE PLUS - liens symboliques dans vbox -------

Si vous allez dans / media / sf_shared , vous constaterez que les liens symboliques dans les répertoires partagés ne fonctionnent tout simplement pas. C'est un très gros problème si vous essayez de configurer un environnement de développement Linux complet sur un lecteur partagé.

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

Par défaut, les liens symboliques ne sont pas pris en charge sur les partages de boîtes virtuelles. Voir ci-dessous pour des explications. Fondamentalement, si je comprends bien, les liens symboliques sont un trou de sécurité qui ont été "corrigés" dans Virtual Box en désactivant leur prise en charge dans la période 4.1.8 (2011). Je lance 4.3.16 ici ...

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

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

Heureusement, il existe une porte dérobée pour la réactiver, via la commande VBoxManage de l'hôte . Comme toujours, veuillez comprendre les failles de sécurité que vous pourriez ouvrir. Je suis sur une machine de développement autonome, donc cela ne semble pas être un problème.

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

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

Remarque: Ubuntu est le nom de mon vm et shared est le nom du répertoire partagé.

Vous pouvez obtenir le nom vm comme ceci:

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

Et le nom des dossiers partagés, soit via l'interface virtuelle de la boîte virtuelle, soit

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

J'ai redémarré l'ensemble du système de boîte virtuelle ici, je n'ai pas compris la configuration minimale requise.

Quoi qu'il en soit, pour tester cela, revenez à votre fenêtre vbox

VBOX: ---------

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

Aucune erreur - et à vérifier

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

Et de retour du côté mac - juste pour prouver que tout fonctionne

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

Veuillez noter que je n'ai testé cela que sur un hôte OSX et un client de boîte virtuelle Ubuntu. Les références que j'ai énumérées ci-dessus semblent indiquer qu'il pourrait y avoir un problème lors de l'exécution d'un hôte Windows.

EXERCICE À GAUCHE POUR L'ÉLÈVE ————————

L'avantage de la méthode répertoriée ci-dessus est qu'elle peut fonctionner sur une machine autonome, sans accès au réseau. Mais si vous y réfléchissez, ce problème de nom-vers-id doit être un problème commun à tous les environnements informatiques hétérogènes.

Quelles autres solutions sont disponibles là où des solutions à ce problème sont disponibles? - Des choses comme Active Directory (un produit Microsoft) et similaires pourraient résoudre ce problème. Il serait intéressant d'obtenir une collection de ces solutions et d'y comparer diverses fonctionnalités et compromis.

pbradstr
la source
3

Pour moi, tout ce que j'avais à faire était de:

sudo adduser [username] vboxsf

Cela m'a suffi pour accéder aux dossiers partagés. Le dossier contient un groupe de vboxsf, l'utilisateur doit uniquement être affecté à ce groupe pour y accéder. Si vous devez définir un accès plus strict ou un accès plus contrôlable, vous devrez peut-être suivre les étapes de montage manuel avec les bons ID utilisateur.

Pour moi, la solution fstab n'a pas fonctionné et a empêché la machine de démarrer correctement.

Kris Avi
la source
3

Après avoir créé un dossier partagé dans les paramètres de Virtualbox, Ubuntu le montera automatiquement pour vous la prochaine fois que vous démarrerez le système (vous verrez une icône sur votre bureau).

entrez la description de l'image ici

Mais si vous n'utilisez pas de compte root, vous n'aurez pas la permission d'y accéder. Ce que vous devez faire est d'ajouter votre compte utilisateur à un groupe d'utilisateurs appelé 'vboxsf':

sudo usermod -G vboxsf -a $USER

Déconnectez-vous ensuite et reconnectez-vous. Vous pouvez accéder au dossier partagé maintenant.

realhu
la source
3

Depuis VirtualBox v4.0, il est facile de résoudre ces problèmes d'autorisations! Vous n'avez pas besoin de vous soucier mkdir, mount, chmod, umask, etc. Pour accéder à vos dossiers partagés auto-montés (qui apparaissent dans /mediades sf_préfixes par défaut), il n'y a qu'une seule chose que vous devez faire: Ajoutez votre nom d' utilisateur au vboxsfgroupe via sudo usermod -a -G vboxsf [username].

Pour plus de commodité, vous pouvez également créer des liens symboliques vers ces dossiers partagés dans votre homedossier (par exemple, ln -s /media/sf_Stuff ~/Stuff).

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

theDrake
la source
Joli point sur le lien symbolique.
Shaun Dychko
0

J'ai trouvé cela, j'ai testé et cela a fonctionné dans Ubuntu et Xubuntu, juste la fonction de montage automatique n'a pas fonctionné pour moi

I. Installer des compléments d'invité

Tout d'abord, il est nécessaire d'installer les suppléments invité de VirtualBox sur le système hôte:

Choisissez dans le menu de VitualBox: Périphériques -> Installer les compléments invité…

Il monte un nouveau ISO pour le système hôte. Un nouveau CD apparaît dans Ubuntu (ou le monter). Exécutez en tant que root le script d'installation de VBoxLinuxAdditions-x86.run (car il s'agit d'un Mac à processeur Intel) dans une fenêtre de terminal:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Il vous sera probablement demandé de redémarrer Ubuntu.

L'installation des ajouts d'invités présente de nombreux avantages tels que l'adoption de la résolution d'écran (la taille de votre fenêtre est la résolution du système, c'est-à-dire pas de barres de défilement), le mode souris facile (pas besoin d'appuyer sur le bouton de commande gauche pour libérer le curseur de la souris) et, ce que nous recherchons pour, dossiers partagés.

II. Créer un dossier partagé

Le but est d'accéder à un dossier partagé, ce qui est plus simple que d'utiliser sshd ou Samba.

Choisissez dans le menu de VitualBox: Appareils -> Dossiers partagés ...

  • Cliquez sur le bouton Ajouter un nouveau dossier partagé.
  • Choisissez un chemin de dossier - un dossier sur votre disque dur Mac, par exemple / Users / ondrej / Pictures.
  • Choisissez un nom de dossier - un nom qui identifie ce dossier partagé dans Ubuntu (en tant que système hôte), par exemple des images.
  • Sélectionnez Rendre permanent - si vous souhaitez conserver cette définition de dossier partagé.
  • Cliquez sur OK.
  • Cliquez sur OK pour fermer la liste des dossiers partagés.

III. Monter un dossier partagé

Montez le dossier partagé créé dans un dossier avec des autorisations pour votre utilisateur. Ouvrons une fenêtre Terminal sur Ubuntu et:

Créez un dossier où sera monté le dossier partagé. (Ignorez cette étape si vous avez déjà un dossier pour cela.)

mkdir DIR

par exemple (in / tmp)

mkdir share

Obtenez votre UID utilisateur:

id

Le résultat sera quelque chose comme:

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

donc uid de mon utilisateur est 1000. Montez le dossier partagé SHARED_FOLDER_NAME dans le dossier MOUNTED_FOLDER avec la propriété de l'utilisateur avec uid USER_ID en tant que root:

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

par exemple

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

La spécification du paramètre uid permet d'écrire dans le dossier partagé de votre utilisateur. Le dossier monté MOUNTED_FOLDER (par exemple / tmp / share) contient les fichiers du dossier partagé sur votre disque dur Mac. Il est également possible d'écrire dans le dossier partagé. Facultativement, un dossier partagé peut être monté automatiquement au démarrage de la machine virtuelle. Ajoutez la ligne suivante au fichier / etc / fstab (en tant que root, par exemple sudo vim / etc / fstab):

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

par exemple

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

où les valeurs uid et gid peuvent être trouvées dans la sortie de la commande id (voir l'étape 2 pour un exemple détaillé). Le dossier partagé sera également disponible après un redémarrage de la machine virtuelle.

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

Jésus
la source
0

OS hôte : macOS
VM (invité) OS : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Les OS hôte et OS invité doivent avoir le même utilisateur (plus loin dans le texte: nom d'utilisateur ).

Étape 1: installer les compléments d'invité VirtualBox :

1.1. Localisez les ajouts d'invité VirtualBox,

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

1.2. Démarrez la VM

1.3. Cliquez sur l'icône du CD dans la barre des tâches en bas à droite

1.4. Sélectionnez "Choisir l'image disque ..." "et recherchez le VBoxGuestAdditions.iso

1.5. Dans le type de terminal invité (vous pouvez également le faire à partir du terminal hôte si vous y connectez SSH):

$ 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

Étape 2: Configuration des dossiers partagés:

2.1. Créez des règles dans VM:

  • Arrêtez la machine virtuelle
  • Aller à Settings > Shared Folders
  • Cliquez sur le Add new port forwarding rulebouton vert en haut à droite de la fenêtre.
  • Recherchez et sélectionnez le dossier que vous souhaitez partager (par exemple: / chemin / vers / partagé / dossier_hôte )
  • Sélectionnez les options Auto-mountetMake Permanent
  • Démarrez la VM

2.2. Pour monter un dossier partagé sur, /optvous devez créer un shared_folder_dirsous-dossier et lui attribuer les autorisations appropriées:

$ 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. Ajoutez un nom d' utilisateur au groupe vboxsf :

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

2.4. Redémarrez la machine virtuelle pour appliquer les modifications:

$ sudo reboot

Étape 3: montage automatique host_folderdans /opt/shared_folder_dir:

3.1. Modifiez /etc/rc.local de VM:

$ sudo nano /etc/rc.local

et placez juste à droite ci exit 0- dessus :

# '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 >>>

Remarque: J'ai ajoutésleep 5pour exécuter l'opération de montage après le démarrage de VirtualBox Guest Additions. Vous pouvez le vérifier parjournalctl -bcommande.

3.2. Redémarrez la machine virtuelle pour appliquer les modifications:

$ sudo reboot

Voir également

Ukr
la source
-1

Depuis /ubuntu//a/171357/476506

# usermod -aG vboxsf user

La commande ci-dessus donnera accès au dossier partagé pour "utilisateur".

Utkarsh Naiknaware
la source