【问题标题】:How to make git checkout files permission mode are 777?如何使 git checkout 文件权限模式为 777?
【发布时间】:2017-11-20 19:26:07
【问题描述】:

我使用root运行git,每次结帐时文件权限模式都更改为root 644,这意味着apache不能删除,修改。
然后我决定让 GIT 以777 的权限签出文件。我知道 set umask 000(默认为 022)可以做到这一点,但我不想更改我的 centos 设置。
怎么做?

【问题讨论】:

  • 将文件设置为模式 777 几乎不是一个好主意,因为它会破坏 any 安全性。有关设置权限的更好(即更好的集成和更安全)的方法,请参阅this question and its answers。此外,请查看documentation 了解详细信息和更多选项。
  • 进入777模式是为了避免任何权限问题。这是我的开发电脑,不是生产服务器。
  • 您正在尝试使用 Git 作为部署工具。 Git 是一个糟糕的部署工具。相反,适当的安装/部署工具将处理构建、安装和设置权限。您将作为普通用户完成所有这些操作,只需要您使用sudo 进行安装。做任何事都是坏习惯。

标签: git


【解决方案1】:

find . -type f -not -name '.git*' | xargs chmod 777
find . -type d -not -name '.git*' | xargs chmod 666

我在结帐后挂钩中使用它,到目前为止似乎没有任何问题。

【讨论】:

    【解决方案2】:

    git config core.sharedRepository 0664。见git help config

    附言。我使用 664 模式,因为它比全开 666 更安全。Git 会自动为目录添加可执行位(从而使模式 775 或 777)。

    【讨论】:

    • 664 表示 apache 无法删除此文件夹中的文件。根据 VonC 的回答,666 在 git 中是不允许的。
    • 然后chown -R apache.apache(或www-data.www.data)并始终使用su - apache 处理该回购协议。这样您就可以保证 Apache 将始终具有 r/w 访问权限。
    【解决方案3】:

    Git 2.9 or more, you can do

    git add --chmod=+x -- afile
    git commit -m "Executable!"
    

    然后,在下一次克隆或检出时,该文件将是可执行的。

    旁注:正确的umask would be 022 (for 755) or 002 for 775。一般不推荐777。

    注释 777(即使使用 git update-index)没有意义,如 Git itself does not record write: only 644 or 755, spelled 100644 and 100755, with the 100 part meaning "regular file"

    【讨论】:

    • 777 供我的 IDE 修改文件内容。
    猜你喜欢
    • 2014-02-10
    • 2020-04-09
    • 2016-07-13
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2021-12-16
    相关资源
    最近更新 更多