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
virtualbox
permissions
mac
jmdeldin
la source
la source
sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src
, où le umask est la valeur deumask
l'utilisateur, uid et gid sontid <user>
,src
est le nom du partage VBox et/meida/sf_src
est le point de montage souhaité.Réponses:
Je l'ai compris!
Reproduire:
À partir d'un terminal, exécutez en
umask && id
tant qu'utilisateur normal pour obtenir quelque chose comme ceci:sudo mkdir -p /media/sf_src # src is the shared directory
Pour monter le
src
répertoire comme test:Pour le monter automatiquement lors de la connexion, modifiez
/etc/fstab
et ajoutez les éléments suivants:la source
/sbin/mount.vboxsf
c'était un lien symbolique pendant! L'effacer et ensuiteln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
ré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!Le problème - problèmes d'autorisation dans vbox / ubuntu accédant à un lecteur partagé OSX
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 .
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.
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.
Création de trois points de montage à l'aide de la configuration de Virtual Box -> Gui Dossiers partagés.
REMARQUE: j'ai dû redémarrer ma session pour que tous ces points de montage apparaissent.
Notez que le gid pour ceux-ci est 999 - c'est le groupe vboxsf .
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)
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.
Donc, ce que nous avons à ce stade (nous n'avons encore rien fait pour y remédier)
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
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.
Donc, à ce stade, nous devrions avoir
La preuve ici est que cela fonctionne - c'est donc la prochaine étape
VBOX: ——————
cd dans notre répertoire et touchez un fichier
Vérifiez que nous avons créé un fichier avec succès.
OSX: —————
VBOX: ——————
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
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
Ajouter un utilisateur dans vboxsf
Ça marche encore!
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é.
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: ------------
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:
Et le nom des dossiers partagés, soit via l'interface virtuelle de la boîte virtuelle, soit
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: ---------
Aucune erreur - et à vérifier
OSX: ----------
Et de retour du côté mac - juste pour prouver que tout fonctionne
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.
la source
Pour moi, tout ce que j'avais à faire était de:
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.
la source
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).
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':
Déconnectez-vous ensuite et reconnectez-vous. Vous pouvez accéder au dossier partagé maintenant.
la source
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/media
dessf_
préfixes par défaut), il n'y a qu'une seule chose que vous devez faire: Ajoutez votre nom d' utilisateur auvboxsf
groupe viasudo usermod -a -G vboxsf [username]
.Pour plus de commodité, vous pouvez également créer des liens symboliques vers ces dossiers partagés dans votre
home
dossier (par exemple,ln -s /media/sf_Stuff ~/Stuff
).Source: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto
la source
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:
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 ...
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.)
par exemple (in / tmp)
Obtenez votre UID utilisateur:
Le résultat sera quelque chose comme:
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:
par exemple
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):
par exemple
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/
la source
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,
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):
Étape 2: Configuration des dossiers partagés:
2.1. Créez des règles dans VM:
Settings > Shared Folders
Add new port forwarding rule
bouton vert en haut à droite de la fenêtre.Auto-mount
etMake Permanent
2.2. Pour monter un dossier partagé sur,
/opt
vous devez créer unshared_folder_dir
sous-dossier et lui attribuer les autorisations appropriées:2.3. Ajoutez un nom d' utilisateur au groupe vboxsf :
2.4. Redémarrez la machine virtuelle pour appliquer les modifications:
Étape 3: montage automatique
host_folder
dans/opt/shared_folder_dir
:3.1. Modifiez /etc/rc.local de VM:
et placez juste à droite ci
exit 0
- dessus :3.2. Redémarrez la machine virtuelle pour appliquer les modifications:
Voir également
la source
Depuis /ubuntu//a/171357/476506
La commande ci-dessus donnera accès au dossier partagé pour "utilisateur".
la source