Lorsque je communique avec ma machine virtuelle vagabonde, je peux modifier les autorisations des fichiers et des dossiers situés au-dessus et à l'extérieur du dossier d'utilisateur vagabond, ainsi que des fichiers situés dans le dossier d'utilisateur vagabond. Mais vous ne pouvez pas modifier les autorisations pour les dossiers situés sous le dossier d'utilisateur vagabond. J'ai le même problème si connecté en tant que l'utilisateur vagabond et racine.
Existe-t-il une restriction sur la modification des autorisations dans le dossier de l'utilisateur vagrant? Le dossier d'utilisateur vagant n'est pas partagé avec le système d'exploitation hôte, mais le dossier de déploiement capistrano et le dossier docRoot.
L'invité est CentOS 6, l'hôte est OS X 10.7. Le vagabond est 1.0.5. Virtualbox est 4.2.1.
Le format des dossiers partagés change d'une version à l'autre de Vagrant. Voir la réponse de Fabio https://serverfault.com/questions/398414/vagrant-set-default-share-permissions
config.vm.share_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:extra => 'dmode=775,fmode=775'
Dans Vagrant 1.3.1 et versions ultérieures, l'option extra
a été remplacée par mount_options
qui attend un tableau.
config.vm.share_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
Dans vagrant 1.3.3, config.vm.share_folder
a été remplacé par config.vm.synced_folder
.
config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
Mon problème pourrait être lié au vôtre.
J'ai un centos vm dans vagabond en tant qu'invité et win7 en tant qu'hôte.
Je ne peux pas réellement modifier les autorisations dans la VM des dossiers partagés avec l'hôte.
je ferai un rapport si je découvre quelque chose d’utile . Discutez sur le groupe Google ici:
https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI
UPDATE 1: J'ai aussi lu qu'il était impossible de créer des liens symboliques dans des dossiers partagés.
UPDATE 2: Il semble que je ne puisse pas modifier les autorisations de la boîte virtuelle après sa création. Cependant, dans VagrantFile, vous pouvez définir les autorisations sur les dossiers partagés comme suit: I.E.
config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'
ici, j'ai défini le propriétaire, le groupe et les autorisations qui fonctionnent pour nous.
J'espère que ça aide.
Dans Vagrant 1.2.7, version 2, on utilise Vagrantfiles, la syntaxe est donc légèrement différente de celle des réponses précédentes . C'est ce qui me convient le mieux avec CentOS 6.2. Je trouve que l'utilisation d'un chemin relatif comme source fonctionne mieux dans ma situation. Il pointe vers le dossier partagé.
config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'Apache', extra: 'dmode=775,fmode=775'
Comme indiqué par Jamie, il est toujours nécessaire de le configurer avant création, utilisez donc un vagrant reload
après avoir modifié votre Vagrantfile écrasant.
VirtualBox n'autorise pas la modification du propriétaire/des autorisations pour les dossiers synchronisés.
Vous pouvez le changer dans le fichier Vagrant (selon les réponses des autres).
Envisagez de changer le propriétaire au lieu du groupe.
Considérez également que - s’il est fait pour que votre serveur puisse écrire dans des fichiers - votre serveur s’appellera probablement www-data au lieu de httpd. Utilisez ps aux | grep nginx
[ou Apache/lighthttpd] pour vérifier.
Il y a d'autres options:
config.vm.synced_folder "/var/www/", type: "rsync"
config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]
Ces réponses sont mieux décrites par Ryan Sechreset et Jeremy Kendall .
Modifiez les autorisations de l'hôte et non de l'invité. VirtualBox interdit de modifier les autorisations sur les fichiers partagés à partir d'un OS invité.
TLDR; Le problème n’est pas que les utilisateurs de votre invité n’ont pas les autorisations nécessaires pour accéder à vos fichiers hôte. Le problème est que l'utilisateur qui exécute le processus virtaul box sur votre hôte n'a pas le droit d'écrire les fichiers dans l'hôte. Il existe deux ensembles d'autorisations. Les autorisations d'invité doivent être définies comme n'importe quel autre système d'exploitation. Vous devez également vous assurer que le processus de la boîte virtuelle sur lequel votre système d'exploitation invité est en cours dispose des autorisations pour ce dossier. Si ce processus ne dispose que d'un accès en lecture, tout utilisateur invité sera en mesure de lire au maximum.
Je ne peux pas commenter pour l'instant, mais pour prolonger la réponse de MDeSilva à Vagrant 1.7.2:
Cela peut sembler évident pour certains, mais le groupe et le propriétaire doivent être entre guillemets.
group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']
Pour Vagrant 1.7.2 Éditez le fichier Vagrant comme ceci,
group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']