【问题标题】:How should I use Git to manage files owned by root?我应该如何使用 Git 来管理 root 拥有的文件?
【发布时间】:2018-11-02 13:51:07
【问题描述】:

不幸的是,当尝试对 root 权限配置文件进行版本控制时,更改或读取它们的 git 操作需要使用 sudo 运行。

同时,其他 git 操作(例如将更改推送到 Github 上的主存储库)需要在没有 sudo 的情况下运行,否则它们在没有从我的用户帐户正确访问 SSH 密钥的情况下运行。

此外,当以 sudo 运行时,repo 中 .git 中的索引文件最终归 root 所有,这会破坏以后需要在没有 sudo 的情况下运行但尝试更新 .git 中预先存在的文件的操作。

什么是合适的配置可以消除需要 RUN 和 NOT RUN 与 sudo 的矛盾需求之间的这些冲突?我怎样才能实现这个配置?

例如……

a) 我是否应该始终如一地运行 git WITH sudo,同时将其专门配置为以某种方式独立于正在运行的用户访问我的用户帐户 SSH 密钥。 b) 我是否应该在没有 sudo 的情况下始终运行 git,同时将其配置为在需要以某种方式写入或访问 root 拥有的文件时使用 sudo。

背景

我想对用于配置我的 Ubuntu 桌面的文件进行版本化。这意味着当我尝试在未来的桌面(或重建后的同一桌面)上重复相同的配置时,很容易看到哪些行被更改,甚至可以通过“功能描述”搜索配置文件更改。

该方法涉及使用其外部的工作树配置存储库(由 git 支持),然后在更改配置文件之前添加并提交未修改的(库存)版本,然后使用合适的提交消息提交更改。

【问题讨论】:

    标签: git ubuntu sudo configuration-files


    【解决方案1】:

    我总是通过 git config core.fileMode false 禁用 git 跟踪文件权限。

    我认为可以通过工作环境(开发/生产)而不是 git 自己来管理文件权限。

    【讨论】:

    • 这很有趣,但与问题没有直接关系。在我所描述的情况下,文件被编辑并保持与配置文件一样正常的权限。也就是说我希望每个配置文件都由root拥有,并具有由包确定的标准权限。但是,我的目标是 a) 针对本地 git repo 对它们进行版本化,b) 将该 git repo 同步到 github。 a) 依赖于作为 sudo 运行,b) 依赖于不作为 sudo 运行。因此,难题。感谢分享。
    • 我对你的回答感到困惑。设置core.fileMode false 有什么作用?我不知道您所说的“按工作环境管理文件权限”是什么意思。你能解释一下吗?
    • 在阅读了fileMode之后,我发现它并没有解决问题。问题是git commit等命令在没有sudo的情况下无法运行,如果你尝试执行sudo git push,你的更改可能会因为你是root而被拒绝,因此你的凭据是错误的。跨度>
    猜你喜欢
    • 2016-09-09
    • 2011-01-21
    • 1970-01-01
    • 2010-09-13
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多