Machine Virtuelle partagée entre différents utilisateurs

Bonjour,

J’ai installé Virtualbox sous Debian Stretch. J’ai voulu partager une machine virtuelle de Windows Vista: j’ai donc crée un dossier /usr/local/share/VMs Virtualbox. Je l’ai associé au groupe famille et associé les différentes autorisations comme suit:
sudo chgrp -R famille /usr/local/share/VMs\ Virtualbox/
sudo chmod -R 2775 /usr/local/share/VMs\ Virtualbox/

Puis j’ai ajouté la machine virtuelle dans les différentes sessions: elle est présente. Quand je teste sur une session, j’y ai accès, mais quand je veux tester sur une autre, un message d’erreur s’afficher me signalant qu’elle est inaccessible. Or il suffit que je relance la commande “chmod” et que je redémarre virtualbox pour pouvoir la démarrer. Mais c’est maintenant dans la session où elle fonctionnait qu’elle est inaccessible.
Je précise que j’ai ajouté les utilisateurs au groupe famille.

Voici la capture d’écran de la machine inaccessible:

Merci beaucoup d’avance pour votre aide,
Nicolas

Quelles sont les permissions du fichier avant et après l’utilisation de la VM ?

Avant démarrage de la VM et lorsqu’elle est accessible:
ls -l /usr/local/share/VMs\ Virtualbox/
total 4
drwxrwsr-x 3 1002 famille 4096 nov. 4 17:33 Windows Vista

Puis après démarrage de la VM:
ls -l /usr/local/share/VMs\ Virtualbox/
total 4
drwxrwsr-x 3 1002 famille 4096 nov. 4 17:37 Windows Vista

Par contre, dans les fichiers de la VM en elle même avant:
ls -l /usr/local/share/VMs\ Virtualbox/Windows\ Vista/
total 26216628
drwxrwsr-x 2 nicolas famille 4096 nov. 4 17:47 Logs
-rwxrwsr-x 1 michel famille 2814 nov. 4 17:48 Windows Vista.vbox
-rwxrwsr-x 1 michel famille 2813 nov. 4 17:48 Windows Vista.vbox-prev
-rwxrwsr-x 1 1002 famille 26845642752 nov. 4 17:48 Windows Vista.vdi

Et après
ls -l /usr/local/share/VMs\ Virtualbox/Windows\ Vista/
total 26216628
drwxrwsr-x 2 nicolas famille 4096 nov. 4 17:35 Logs
-rw------- 1 nicolas famille 2813 nov. 4 17:37 Windows Vista.vbox
-rw------- 1 nicolas famille 2813 nov. 4 17:37 Windows Vista.vbox-prev
-rwxrwxr-x 1 1002 famille 26845642752 nov. 4 17:37 Windows Vista.vdi

Comment se fait-il que la date des fichiers “avant” soit postérieure à la date des fichiers “après” ?

Ah oui excusez moi: pour le dossier Windows Vista, j’ai pensé que je pouvais les rajouter après avoir copié la commande “après” du dossier des VM. Puis j’ai reconstitué la situation avant. Je vous redonne le résultat des commandes en le refaisant d’un coup:

Avant:
ls -l /usr/local/share/VMs\ Virtualbox/Windows\ Vista/
total 26216628
drwxrwsr-x 2 nicolas famille 4096 nov. 5 10:20 Logs
-rwxrwsr-x 1 michel famille 2813 nov. 5 10:21 Windows Vista.vbox
-rwxrwsr-x 1 michel famille 2814 nov. 5 10:21 Windows Vista.vbox-prev
-rwxrwsr-x 1 1002 famille 26845642752 nov. 5 10:21 Windows Vista.vdi

(Windows Vista.vbox; Windows Vista.vbox-prev ainsi que Windows Vista.vdi sont surlignés en orange)

Puis je démarre la VM et relance la même commande:
ls -l /usr/local/share/VMs\ Virtualbox/Windows\ Vista/
total 26216628
drwxrwsr-x 2 nicolas famille 4096 nov. 5 10:28 Logs
-rw------- 1 nicolas famille 2813 nov. 5 10:29 Windows Vista.vbox
-rw------- 1 nicolas famille 2813 nov. 5 10:29 Windows Vista.vbox-prev
-rwxrwxr-x 1 1002 famille 26845642752 nov. 5 10:29 Windows Vista.vdi

Et cette fois ci, c’est Windows Vista.vdi qui est écrit en vert.

Merci pour votre aide

Les couleurs ne font que refléter la présence de certains bits de permission :

  • vert pour le bit d’exécution “x”
  • orange pour le bit SGID “s”

Au passage, ces bits x et s n’apportent rien à ces trois fichiers qui ne sont pas des exécutables ni des répertoires mais de simples fichiers de données.

Si je comprends bien, c’est michel qui avait utilisé la VM auparavant, et c’est nicolas qui l’a utilisée après. Donc l’exécution de VirtualBox change le propriétaire (ce qui n’est pas gênant) et les permissions des fichiers *.vbox*, en supprimant les permissions pour le groupe (ce qui est plus gênant) et pour les autres. Comme s’il appliquait un umask à 177 (rw-------), alors que l’umask par défaut est 022 (rwxr-xr-x). Aucune idée de la cause ni si cela peut être changé.

Une solution, pas très pratique certes, serait de remettre les droits rw pour le groupe après l’exécution de VirtualBox.

Oui c’est ça, michel avait utilisé la VM avant puis nicolas
Si je comprends bien, il fauudrait que je crée un script qui se lance au démarrage de chaque session où à la fermeture de Virtualbox?

Sinon, pensez vous qu’il soit faisable de créer une session qui lance Virtualbox au démarrage, et qui se ferme si on quitte Virtualbox? Si oui, avez vous une idée d’un site où je pourrais trouver un tutoriel pour la réaliser?

Merci beaucoup,
Nicolas

Oui, à défaut de trouver un moyen d’empêcher VirtualBox de modifier les permissions Unix ou de s’en affranchir (peut-être avec des ACL POSIX ?), ce serait une solution possible.
Pas au démarrage de la session puisque l’utilisateur suivant n’a plus les droits pour modifier les permissions, mais plutôt à la fermeture de VirtualBox ou de la session quand l’utilisateur courant est encore propriétaire des fichiers.

En quoi cela aiderait-il à résoudre le problème ?

Celà ne le résoudrait pas, il s’agirait juste d’une machine virtuelle qui n’appartient qu’à un seul utilisateur. C’est une autre possibilité pour “contourner” ce problème.

Je me renseigne sur le sujet et vais voir ce que je peux faire.
Mais étant donné que le dossier partagé est /usr/local/share/VMs Virtualbox, n’importe quel utilisateur a-t-il les droits de modifier ces droits? Ou est ce une commande à lancer en sudo ou root?

J’ai suivi le lien ci-dessus qui explique les ACL:
http://lea-linux.org/documentations/ACL

J’ai donc attribué les droits au groupe, puis aux utilisateurs
sudo setfacl -Rm g:famille:rwx /usr/local/share/VMs\ Virtualbox/
sudo setfacl -Rm u:nicolas:rwx /usr/local/share/VMs\ Virtualbox/
sudo setfacl -Rm u:michel:rwx /usr/local/share/VMs\ Virtualbox/

Puis vérifié le changement:
sudo getfacl /usr/local/share/VMs\ Virtualbox/Windows\ Vista/Windows\ Vista.vbox
getfacl : suppression du premier « / » des noms de chemins absolus
# file: usr/local/share/VMs Virtualbox/Windows Vista/Windows Vista.vbox
# owner: michel
# group: famille
user::rw-
user:nicolas:rwx
user:michel:rwx
group::—
group:famille:rwx
mask::rwx
other::—

Le changement a donc été effectué mais après démarrage de la VM:
sudo getfacl /usr/local/share/VMs\ Virtualbox/Windows\ Vista/Windows\ Vista.vbox
getfacl : suppression du premier « / » des noms de chemins absolus
# file: usr/local/share/VMs Virtualbox/Windows Vista/Windows Vista.vbox
# owner: nicolas
# group: famille
user::rw-
group::—
other::—

Je vais donc voir pour créer un script qui se lance à la fermeture de VirtualBox.

Il est impossible d’utiliser un disque vbox plusieurs fois. Pour l’utiliser dans une nouvelle VM il faut d’abord le “relacher”. Je n’ai pas tout lu dans le détail mais ton problème est peut-être lié.

Comment relâcher ce disque?
Y a t-il une autre manière d’avoir une VM qui soit partagée entre les utilisateurs? (peut-être plus simple en utilisant un autre format de disque?)