Problèmes d'autorisation de fichiers avec des dossiers partagés sous Virtual Box (invité Ubuntu, hôte Windows)

103

J'utilise Ubuntu sur Virtual Box et j'ai un dossier partagé entre l'hôte (Windows) et la machine virtuelle (Ubuntu). Lorsque j'ouvre un fichier du dossier partagé d'Ubuntu, je ne peux pas le changer car son propriétaire est défini sur root.

Comment puis-je changer la propriété pour moi?

Voici le résultat de ls -l:

-rwxrwxrwx 1 root root 0 2012-10-05 19:17 BuildNotes.txt

La sortie de dfest:

m@m-Linux:~/Desktop/vbox_shared$ df
Filesystem   1K-blocks      Used Available Use% Mounted on
/dev/sda1     29640780  10209652  17925440  37% /
none            509032       260    508772   1% /dev
none            513252       168    513084   1% /dev/shm
none            513252        88    513164   1% /var/run
none            513252         0    513252   0% /var/lock
none            513252         0    513252   0% /lib/init/rw
Ubuntu       214153212  31893804 182259408  15% /media/sf_Ubuntu
/dev/sr0         53914     53914         0 100% /media/VBOXADDITIONS_4.2.0_80737
Ubuntu       214153212  31893804 182259408  15% /home/m/Desktop/vbox_shared

Les options dans VM sont automount et le readoly n'est pas vérifié.

J'ai essayé d'utiliser /media/sf_Ubuntu, mais j'ai eu une erreur de permission:

m@m-Linux:/media$ ls -l 
total 10
drwxrwx--- 1 root vboxsf 4096 2012-10-23 15:35 sf_Ubuntu
drwxrwx--- 2 root vboxsf 4096 2012-10-21 23:41 sf_vbox_shared
dr-xr-xr-x 6 m    m      2048 2012-09-13 07:19 VBOXADDITIONS_4.2.0_80737
m@m-Linux:/media$ cd sf_Ubuntu/
bash: cd: sf_Ubuntu/: Permission denied
m@m-Linux:/media$ cd sf_vbox_shared/
bash: cd: sf_vbox_shared/: Permission denied

Veuillez noter que je suis dans le groupe vboxsf:

m@m-Linux:~$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)
utilisateur654019
la source
Comment avez-vous monté le dossier partagé? Laissez-vous le montage automatique par les utilitaires invités de VirtualBox (par exemple, / media / sf_something) ou l'avez-vous monté manuellement à l'aide de la commande mount?
EightBitTony
Aussi, pouvez-vous décrire comment vous avez configuré le partage sous VirtualBox sous Windows? Il y a trois options pour le partage, lecture seule, montage automatique et permanent, quelles options avez-vous cochées?
EightBitTony
S'il vous plaît poster des mises à jour à votre question - pas comme des commentaires. Veuillez inclure la sortie de dfet la commande que vous avez utilisée pour monter manuellement le système de fichiers.
EightBitTony
Merci - vous verrez qu'il existe un système de fichiers / media / sf_Ubuntu. C'est votre dossier partagé, vous n'avez pas besoin de le monter manuellement. Je vous suggère de démonter le dossier / home / m / Desktop, et d’utiliser simplement / media / sf_Ubuntu, qui fonctionne selon ma réponse ci-dessous.
EightBitTony
@ Tony: Je ne peux pas accéder à ce dossier. S'il vous plaît voir ma question initiale à laquelle j'ajoute plus d'informations
user654019

Réponses:

159

La méthode habituelle pour accéder aux fichiers consiste maintenant à autoriser VirtualBox à monter automatiquement le dossier partagé (ce qui le fera apparaître sous /media/sf_directory_name), puis à ajouter votre utilisateur Ubuntu normal au vboxsfgroupe (en tant que root #).

# usermod -aG vboxsf <youruser>

Par défaut, sans action manuelle, les montages ressemblent à ceci,

drwxrwx--- 1 root vboxsf 40960 Oct 23 10:42 sf_<name>

donc le vboxsfgroupe a un accès complet. En ajoutant votre utilisateur à ce groupe, vous obtenez un accès complet. Ainsi, vous ne vous soucierez pas de modifier leurs autorisations (ce qui n’a aucun sens sur l’hôte Windows), vous vous en donnez simplement l’accès.

Dans ce cas spécifique, il s’agit du dossier partagé monté automatiquement,

Ubuntu               214153212  31893804 182259408  15% /media/sf_Ubuntu

et c’est ce répertoire qui doit être utilisé pour accéder au dossier partagé en plaçant l’utilisateur local dans le vboxsfgroupe. Si vous voulez un meilleur lien dans le répertoire de base de votre utilisateur, vous pouvez toujours créer un lien symbolique.

ln -s /media/sf_Ubuntu /home/m/Desktop/vbox_shared

Vous devrez redémarrer votre machine virtuelle pour que ces modifications prennent effet.

Si vous montez manuellement le dossier partagé, vous devez utiliser les options appropriées de la mountcommande pour définir le dossier avec le droit de propriété (c'est-à-dire les options gid, uid et umask mount). En effet, le système d'exploitation hôte ne prend pas en charge le même système d'autorisation que Linux. VirtualBox n'a donc aucun moyen de savoir à qui appartiennent les fichiers.

Cependant, il est vivement recommandé de configurer le dossier partagé pour qu'il soit monté automatiquement (il s'agit d'un paramètre de la configuration du dossier partagé dans VirtualBox même).


Pour éviter tout doute, je ne pense pas que vous puissiez quand même modifier les autorisations normalement, sur ce système de fichiers s'il est monté de manière normale,

tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ sudo chown tony tst.txt
[sudo] password for tony: 
tony@jabba:/media/sf_name$ ls -l tst.txt
-rwxrwx--- 1 root vboxsf 2283 Apr  4  2012 tst.txt
tony@jabba:/media/sf_name$ 
EightBitTony
la source
2
Quand j'ai essayé ceci, j'ai reçu le message que l'utilisateur est déjà en groupe, mais quand j'essaye de changer un fichier sur le dossier partagé, j'obtiens une erreur quand je veux le sauvegarder. L'erreur est la suivante: Impossible d'enregistrer le fichier /home/m/Desktop/vbox_shared/test.tst Erreur inattendue: erreur lors du renommage du fichier temporaire: fichier texte occupé.
user654019
C'est un problème différent, potentiellement non dû aux autorisations. Pouvez-vous créer un nouveau fichier ou modifier un autre fichier? Accrocher sur - / home / m / Bureau / vbox_shared? Avez-vous monté manuellement le dossier partagé? Ce n'est pas le chemin par défaut.
EightBitTony
En vérifiant le système, j'ai constaté que je ne disposais que de l'autorisation de créer ou de supprimer des fichiers et non d'une autorisation de lecture / écriture. Comment puis-je me le donner?
user654019
9
Il semble qu'un redémarrage soit nécessaire pour que cela prenne effet.
Eric Wang
3
VOUS BENEZ UNE BIERE POUR CETTE REPONSE !!! Je ne pouvais pas le faire fonctionner jusqu'à ce que je tombe sur cela. Je ne peux pas croire que ce n'est pas plus là-bas. J'aimerais pouvoir le reviffrer plus d'une fois!
Tensigh
3

Je viens d'avoir le même problème avec mon dossier partagé Win-Ubuntu, et la façon dont je l'ai résolu consistait à ajouter mon utilisateur au groupe vboxsf, à modifier le fichier / etc / group. J'espère que cela fonctionne pour toi. Ici vous pouvez trouver un bref schéma de la façon dont j'ai édité le fichier

(edit /etc/group)
...
...
...
pulse:x:119:
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
openquake:x:1000:
sambashare:x:124:openquake,luisa
vboxsf:x:999:openquake,luisa   ##This is the line I add my user
postgres:x:125:
rabbitmq:x:126:
celery:x:500:
luisa:x:1001:

Luisa.

LuisaFernanda
la source
2
Vous ne devriez jamais éditer directement / etc / group, utilisez les outils appropriés pour ce travail (dans ce cas usermod -aG <group> <user>).
Raimue
Ceci est recommandé, sinon uniquement, parce que si vous commettez accidentellement une erreur en mettant à jour manuellement un fichier tel que / etc / group, cela peut invalider la base de données et vous bloquer.
Spencer Williams
2

J'ai eu le même problème et j'ai résolu l'installation de la dernière version de VirtualBox Guest Additions . dans mon cas, la mise à niveau de 4.3.8 à 4.3.10.

Une fois l’installation terminée, le dossier / media / sf_name n’avait plus de «racine» en tant que propriétaire du groupe, mais «vboxsf» en tant que correct.

Pisu
la source
1

Avez-vous essayé sudo?

$sudo chown username filename
Poste 3389
la source
Je ne crois pas que cela fonctionne sur les dossiers partagés de VirtualBox.
EightBitTony
sudo fonctionne partout! : Lien
Poste 3389
12
Je ne sais pas si tu es sérieux, mais je vais t'amuser. Le dossier partagé monté est un vboxfstype de système de fichiers, il ne fait pas honneur à chown.
EightBitTony
Je suis désolé je pensais juste que cela pourrait fonctionner.
Poste 3389
1
Oui, mais cela n'a pas changé le propriétaire. Après avoir exécuté cette commande dans un terminal pour un fichier, puis examiné le propriétaire du fichier, celui-ci appartient toujours à root.
user654019
1

Si vous avez le luxe de contrôler les options de la commande mount (par exemple, si vous effectuez un montage manuellement ou en utilisant /etc/fstab), vous pouvez utiliser l' -o uid=771option pour la commande mount.

Une entrée dans /etc/fstabressemblerait

scanresults    /data/scanresults    vboxsf    uid=771    0 0
Mutant bob
la source
1

Activer l'accès complet en lecture et en écriture à un dossier partagé sur un hôte Windows à partir d'un invité Ubuntu pour un utilisateur Linux non root

Cette étape vous permettra d'accéder à un certain répertoire sur votre ordinateur hôte Windows à partir du terminal invité Linux. Dans cet exemple, le nom du partage de la perspective OVB sera vshare (valeur par défaut), le chemin de répertoire complet vers le système d'exploitation Windows (le système d'exploitation hôte) sera "C: \ var \" et le chemin d'accès complet au fichier. y avoir accès à partir de l'invité vm sera "/ vagrant", et enfin le nom de l'utilisateur pour permettre l'accès complet à rea / write sera "you".

 # how-to add a shared folder on the host
 VBoxManage sharedfolder add "host-name" -name "vshare" -hostpath "C:\var" -automount

1. Installez les prérequis de Guest Additions

Installez les prérequis pour les compléments invité en lançant la commande suivante:

 sudo apt-get install -y build-essential make gcc  linux-headers-$(uname -r) 
 linux-headers-generic make linux-source  linux-generic linux-signed-generic

2. Installer les ajouts d'invité

N'utilisez pas le fichier .iso pour télécharger et l'installateur à partir de là - cela ne fonctionnera tout simplement pas !!!

sudo apt-get install virtualbox-guest-dkms 

3. Modifiez votre pour que le répertoire de partage soit monté automatiquement sur le démarrage vm.

Changez votre pour que le répertoire de partage soit monté automatiquement sur vm boot en ajoutant les lignes suivantes à la fin de votre fichier fstab (notez la conf "vshare", et le uid = 10001):

/media/sf_vshare /vagrant vboxsf bind,uid=10001,rw,umask=0000 0 0
# eof file: /etc/fstab 

4. ajoutez-vous au groupe vboxsf

Vous devez vous ajouter au groupe vboxsf pour pouvoir éditer en tant que non-root à partir de votre machine virtuelle les fichiers sur votre ordinateur hôte. # mount sudo mount -a

sudo usermod -G vboxsf -a you 

5. redémarrez et vérifiez

Redémarrez la machine virtuelle et connectez-vous via ssh pour vérifier le partage de fichiers. # ssh à la vm ssh vous @ nom-hôte

# check as yourself that you have 
find /vagrant
Yordan Georgiev
la source
0

Les ajouts à la boîte virtuelle doivent être réinstallés après la mise à niveau de votre système invité. Le problème, je pense, est que lorsque vous mettez à niveau certains composants dans Ubuntu, certains composants ont été modifiés, après l’installation de vb-additions, sf_forlder_name sera accessible. Mon problème résolu de cette façon. La solution de Pisu fonctionne.

nicky
la source
D'après mon expérience, les ajouts d'invités Virtual Box ne doivent être mis à niveau que lorsque le système hôte VirtualBox est mis à niveau. Pas lorsqu'un logiciel sur le client change. Quel logiciel sur le client avez-vous mis à niveau pour rendre cela nécessaire?
Anthon
1
Non, Nicky a raison. Si vous mettez à jour le noyau de votre système d'exploitation invité, vous devez réinstaller les compléments invités.
Spencer Williams
-2
  • Démonter les actions en tant que root
  • Effectuer les modifications requises avec chownetchmod
  • redémarrez et vérifiez les actions sont avec les droits appropriés
andrey
la source