【问题标题】:After deployment the permissions are not the one i wanted部署后权限不是我想要的
【发布时间】:2011-03-11 11:22:09
【问题描述】:

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

为什么 capistrano 会更改权限以及在我的 apache 上部署时如何获得正确的权限?

【问题讨论】:

    标签: git permissions capistrano


    【解决方案1】:

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

    【讨论】:

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

    请参阅此博客文章以及解决方案:http://konradpodgorski.com/blog/2012/07/26/capifony-fix-for-deployment-on-servers-with-strict-permission-settings/

    这样的权限更改通常是由默认的umask 设置引起的,这通常可以正常使用。然而,有些主机需要特定的权限(目录通常为 755,文件为 644)。这主要是出于安全原因。您可以做的最好的事情是使这部分部署并设置正确的权限。

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 2023-03-27
      • 2020-12-21
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多