在 git 存储库中跟踪 /etc/ 并以 root 身份提交时更正用户名

cwe*_*ske 14 root vcs git etc

我们使用 git 来跟踪/etc/我们服务器上的变化。

管理员在更改 /etc/ 中的文件时以 root 身份工作,因此他们的提交具有作者

root <root@machinename>
Run Code Online (Sandbox Code Playgroud)

这不是很令人满意,因为您看不到哪个管理员实际进行了更改。

我们如何才能在 git 日志中获得真正的管理员名称?我不认为保留存储库的本地克隆是可行的,因为我们经常进行交互更改,直到某些事情起作用为止,并且更改-提交-推送-查看错误-重复循环在这里无济于事。

cwe*_*ske 13

git的作者和提交者的名字可以与环境变量的影响GIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL

现在的技巧是在通过 SSH 连接时将这些变量提交到远程服务器:

  1. 定义并导出~/.bashrc文件中的变量:

    export GIT_AUTHOR_NAME="Christian Weiske"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过调整自动使用 SSH 连接发送它们~/.ssh/config

    SendEnv LANG LC_* GIT_*
    
    Run Code Online (Sandbox Code Playgroud)

    LANG并且LC_*不是必需的,但是 Debian 在其默认的 ssh_config 中,所以我想我也应该提交它们

  3. 在远程服务器上,调整sshd配置/etc/ssh/sshd_config以接受GIT_*环境变量:

    AcceptEnv LANG LC_* GIT_*
    
    Run Code Online (Sandbox Code Playgroud)

瞧 -git commit作为根的 a/etc/导致:

commit 8a4654f13241f05361283a88ce041a0fc24b8ac6
Author: Christian Weiske <christian.weiske@netresearch.de>
Run Code Online (Sandbox Code Playgroud)

如果 serverfault 在未来某个时间出现故障:http : //cweiske.de/tagebuch/carry-git-settings.htm


cor*_*ump 5

首先,并没有涉及到你的问题,我会劝你尽快停止使用root登录和su和使用用户的登录和sudo代替。将您的root登录限制为仅控制台,或者甚至不是。

也就是说,git commit有一个--author选项可以帮助您:

# git commit --author='Author Name <author@email.address.com>' -a
Run Code Online (Sandbox Code Playgroud)

您还可以仔细使用每个用户的环境变量来设置GIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL变量。在日志中,它会出现不同的作者和相同的提交者(root@host),但它会给你更多的审计。当然,这意味着您相信您的管理员会保持变量不变。由于每个人都使用特定的 shell,他们可以sudo使用特定的git变量来根和源文件,在提交时以不同的方式识别每个文件。不太实用,但您甚至可以使用脚本将其自动化。

编辑:当然,@ScottPack 指定的更好的方法是使用配置管理系统,如 Puppet 或 Chef,并使用 git 跟踪中央服务器而不是真实服务器上的更改,因此每个管理员都可以拥有一个工作副本的配置。

  • @cweiske 为什么你认为 sudo 有害? (5认同)
  • @cweiske 我一点也不同意你的评估。您可以使用 ssh 代理缓存 ssh 密钥密码并无意识地登录到 root 计算机,或者在您的计算机上使用简单的密码或与 root 密码相同的密码,而使用 `sudo` 你**强制**用户输入密码(即使他使用 ssh 密钥以他的用户身份登录),您可以控制用户可以执行的操作,主要是您对谁做了什么进行了审计跟踪。但每个人都有权发表自己的意见。 (4认同)
  • 您还可以配置 `sudo` 以强制用户为每个命令输入密码(`timestamp_timeout = 0`)。也许不适合开发和暂存盒,但肯定适合生产。恕我直言,基于 SF 共识,你应该重新考虑你对 `sudo` 的看法。SF 的一大优点是拥有一个真正了解他们的 sh*t 的同龄人社区 :-)。 (2认同)