Git 部署后,权限不是我想要的

Git 部署后,权限不是我想要的,git,permissions,capistrano,Git,Permissions,Capistrano,我正在使用capistrano和git部署RoR项目。部署后,当前文件夹中的权限是770而不是755,这会导致apache显示一个禁止页面。我工作的原始文件夹使用755作为权限。在my deploy.rb中,与文件权限无关 为什么capistrano会更改权限?在apache上部署时,我如何才能拥有正确的权限?我不知道capistrano的情况,但git本身除了“可执行”位之外,不存储任何权限。您应该通过在shell中设置一个适当的umask来获得预期的权限。请参阅此博客文章和解决方案: 像这样

我正在使用capistrano和git部署RoR项目。部署后,当前文件夹中的权限是770而不是755,这会导致apache显示一个禁止页面。我工作的原始文件夹使用755作为权限。在my deploy.rb中,与文件权限无关


为什么capistrano会更改权限?在apache上部署时,我如何才能拥有正确的权限?

我不知道capistrano的情况,但git本身除了“可执行”位之外,不存储任何权限。您应该通过在shell中设置一个适当的
umask
来获得预期的权限。

请参阅此博客文章和解决方案:


像这样的权限更改通常是由默认的
umask
设置引起的,这对于正常使用来说是正常的。但是,有些主机需要特定的权限(目录通常为755,文件通常为644)。这主要是因为安全原因。您所能做的最好的事情就是将此部分作为部署的一部分,并设置正确的权限。

我创建的唯一一个umask不使用770。我认为git不保留文件所有权,但权限是存储的,如果我更改了文件权限,更改将出现在下一次提交中。无论如何,我的所有用户都将0007作为umask,但如果我触摸一下,它将创建一个330文件(见图)。由于git only store 644/755,capistrano必须在某个时候将权限更改为770。@Sylario:我认为你不了解umask是如何工作的-它是一个掩码。当您尝试使用给定权限创建新文件时,结果是尝试的权限不在掩码中。您需要的umask是
0022
,它将为目录和可执行文件提供
755
,为非可执行文件提供
644
。我在/etc/profile和~/.bashrc中设置了umask 0022,但它仍然会创建770个文件夹……我更改了umask,现在工作正常。Umask可能在profile中,也可能在bashrc中,具体取决于用户。