centos-无法更改流浪汉文件夹中文件夹的权限
当我进入vagrant虚拟机时,我可以更改vagrant用户文件夹上方和外部的文件和文件夹的权限,以及vagrant用户文件夹内文件的权限。 但是不能更改无业游民的用户文件夹下的文件夹的权限。 我是否以无业游民的用户名和root用户身份登录存在相同的问题。
在无业游民的用户的文件夹中更改权限是否有某种限制? vagrant用户文件夹未与主机操作系统共享,但capistrano部署文件夹和docRoot共享。
来宾是CentOS 6,主机是OS X 10.7。 无业游民是1.0.5。 Virtualbox是4.2.1。
共享文件夹的格式在Vagrant的不同版本中会发生变化。 参见法比奥的答案[https://serverfault.com/questions/398414/vagrant-set-default-share-permissions]
流浪者1.3.1版及更早版本
config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
流浪者版本1.3.1、1.3.2
在Vagrant 1.3.1和更高版本中,config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
384选项已替换为config.vm.synced_folder
385,它需要一个数组。
config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
流浪者版本> = 1.3.3
在流浪汉1.3.3中,似乎config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
已替换为config.vm.synced_folder
。
config.vm.synced_folder "v-data", "/export", "/export",
:owner => 'vagrant',
:group => 'httpd',
:mount_options => ['dmode=775', 'fmode=775']
我的问题可能与您有关。
我有一个vegarant的centos vm作为来宾,而win7作为主机。
我实际上无法更改与主机共享的任何文件夹在VM中的权限。
如果我发现任何有用的信息,将会报告。在这里讨论Google Group:
[https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI]
更新1:我还读到您不能在共享文件夹中创建符号链接。
更新2:创建虚拟框后,似乎无法更改其权限。但是,在VagrantFile中,您可以将共享文件夹的权限设置为适合的权限:即
config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'
在这里,我设置了对我们有用的所有者,组和权限。
我希望这有帮助。
在Vagrant 1.2.7中,使用版本2 Vagrantfiles,因此语法与以前的答案略有不同。底下是CentOS 6.2对我有用的窍门。 我发现使用相对路径作为源在我的情况下效果最好。 它指向共享文件夹。
vagrant reload
如Jamie所说,仍然需要在创建之前对其进行配置,因此,在编辑覆盖的Vagrantfile之后,请使用vagrant reload
。
VirtualBox不允许更改已同步文件夹的所有者/权限。
您可以在Vagrant文件中更改它(由其他人答复)。
考虑更改所有者而不是组。
还请考虑-如果这样做使您的服务器可以写入文件,则该服务器很可能称为www-data而不是httpd。 使用config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]
[或apache / lighthttpd]进行检查。
还有其他一些选择:
- 更改访问共享文件而不是同步文件夹的程序的所有者。
例如,如果PHP需要写入文件,则更改服务器和PHP以使其无所事事。 [在Apache中,这是在httpd.conf中完成的。 NGINX的用户设置在nginx.conf中,php-fpm的用户设置在php-fpm.conf或它包含的文件之一中。
您需要更改对Apache锁定文件(/ var / lock / apache2)或PHP websocket文件(/var/run/php5-fpm.sock)和Web服务器的权限。 - 使用其他VM(Hyper V,VMware)代替VirtualBox。 其他VM似乎没有此限制。
- 使用RSync同步文件,而不使用默认同步。
config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]
- 将所有权限设置为777。通常这将是灾难性的,甚至没有建议。 这仍然不是一个好主意,但是在VM上可能是可行的。 在授予共享访问权限之前,请三思而后行。
config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]
Ryan Sechreset和Jeremy Kendall更好地描述了这些答案。
从主机而不是来宾更改权限。 VirtualBox不允许更改来宾操作系统对共享文件的权限。
TLDR; 问题不在于来宾上的用户没有访问主机文件的权限。 问题是主机上的病毒盒进程的执行用户无权在主机中写入文件。 有两组权限。 访客权限必须像其他操作系统一样进行设置。 您还必须确保来宾操作系统正在运行的虚拟盒进程对该文件夹具有权限。 如果该进程仅具有读取访问权限,则任何来宾用户将能够执行的操作最多。
尚无法评论,但要扩展MDeSilva对Vagrant 1.7.2的回答:
对于某些人可能是显而易见的,但是组和所有者应该用引号引起来。
group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']
对于流浪汉1.7.2像这样编辑Vagrant文件,
group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']