首页 文章

无法更改vagrant主文件夹中文件夹的权限

提问于
浏览
52

当我进入我的vagrant vm时,我可以更改vagrant用户文件夹上方和外部的文件和文件夹的权限,以及vagrant用户文件夹中的文件的权限 . 但无法更改vagrant用户文件夹下的文件夹权限 . 无论是以vagrant用户还是root用户登录,我都有同样的问题 .

在vagrant用户的文件夹中更改权限是否有某种限制? vagrant用户文件夹不与主机操作系统共享,但capistrano部署文件夹和docRoot是共享的 .

访客是CentOS 6,主机是OS X 10.7 . Vagrant是1.0.5 . Virtualbox是4.2.1 .

7 回答

  • 0

    共享文件夹的格式在不同版本的Vagrant中发生变化 . 见法比奥的回答https://serverfault.com/questions/398414/vagrant-set-default-share-permissions

    Vagrant 1.3.1版及更早版本

    config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :extra => 'dmode=775,fmode=775'

    Vagrant版本1.3.1,1.3.2

    在Vagrant 1.3.1及更高版本中, extra 选项已替换为需要数组的 mount_options .

    config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']

    Vagrant version> = 1.3.3

    在vagrant 1.3.3中, config.vm.share_folder 已被替换为 config.vm.synced_folder .

    config.vm.synced_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']

  • 9

    我的问题可能与您的问题有关 .

    我有一个centos vm在vagrant作为嘉宾,win7作为主持人 .

    我实际上无法更改与主机共享的任何文件夹的VM中的权限 .

    如果我发现任何有用的东西,我会报告在这里讨论谷歌小组:

    https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI

    UPDATE 1: 我还读到你无法在共享文件夹中创建符号链接 .

    UPDATE 2: 似乎我已经创建了't change the permissions in the virtual box after it' . 但是在VagrantFile中,您可以将共享文件夹的权限设置为套件:I.E .

    config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'
    

    在这里,我设置了适合我们的所有者,组和权限 .

    我希望这有帮助 .

  • 2

    在Vagrant 1.2.7中,使用了版本2 Vagrantfiles,因此语法与以前的答案略有不同 . 下面是使用CentOS 6.2的诀窍 . 我发现使用相对路径作为源在我的情况下效果最好 . 它指向共享文件夹 .

    config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', extra: 'dmode=775,fmode=775'

    正如Jamie所说,在创建之前仍然需要对其进行配置,因此在编辑覆盖的Vagrantfile之后使用 vagrant reload .

  • 17

    VirtualBox不允许更改已同步文件夹的所有者/权限 .

    您可以在Vagrant文件中更改它(由其他人回答) .
    考虑更改所有者而不是组 .
    还要考虑 - 如果这样做,以便您的服务器可以写入文件 - 您的服务器可能被称为www-data而不是httpd . 使用 ps aux | grep nginx [或apache / lighthttpd]进行检查 .

    还有一些其他选择:

    • 更改正在访问共享文件的程序的所有者,而不是同步文件夹 .
      例如,如果PHP需要写入文件,请更改服务器和PHP以作为vagrant运行 . [在Apache中,'s done in httpd.conf. NGINX'用户在nginx.conf中设置,php-fpm的用户位于php-fpm.conf或其中包含的文件之一 .
      您需要更改Apache lockfile(/ var / lock / apache2)或PHP websocket文件(/var/run/php5-fpm.sock)]和webserver的权限 .

    • 使用其他VM(HyperV,VMware)而不是VirtualBox . 其他VM似乎没有这个限制 .

    • 使用RSyn同步文件而不是使用默认同步 .
      config.vm.synced_folder "/var/www/", type: "rsync"

    • 将所有权限设置为777.通常这将是灾难性的,甚至不是建议 . 这仍然是一个坏主意,但在VM上可能是可行的 . 在提供共享访问权限之前请三思 .
      config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]

    Ryan SechresetJeremy Kendall更好地描述了这些答案 .

  • 4

    从主机而不是来宾更改权限 . VirtualBox不允许从guest虚拟机操作系统更改共享文件的权限 .

    TLDR;问题不在于访客上的用户没有访问主机文件的权限 . 问题是主机上的virtaul box进程的执行用户没有权限在主机中写入文件 . 有两组权限 . 必须像任何其他操作系统一样设置访客权限 . 您还必须确保运行的guest虚拟机操作系统的虚拟框进程具有该文件夹的权限 . 如果该进程只具有读访问权限,则读取任何访客用户将能够执行的操作 .

  • 6

    暂时还不能发表评论,但要扩展MDeSilva对Vagrant 1.7.2的回答:

    对某些人来说可能是显而易见的,但团体和所有者应该在引号中 .

    group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']
    
  • 86

    对于Vagrant 1.7.2编辑这样的Vagrant文件,

    group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']
    

相关问题