在许多帐户中使用没有Sudo的Git

如何在一个Ubuntu的多个帐户中使用没有Sudo的Git?

我的Ubuntu有很多帐户。 新帐户的创build使Git无法通过sudo访问。

我改变了主人是我,masi,并且小组是Masi所属的admin 。 我有以下权限的Git

 800 -rwxrwxrwx 1 masi admin 813744 2009-02-20 23:01 /usr/bin/git 

我尝试使用Git时收到以下消息

 git status fatal: unable to create '.git/index.lock': Permission denied 

我运行find . -iregex ".*index.l.* find . -iregex ".*index.l.*它不返回任何匹配,所以在locking系统的时候似乎没有index.lock,我用sudo运行同样的命令也失败了。

如果我正确理解你的问题,你需要授予几个* nix用户帐户写入访问相同的git存储库。 使用git init--share命令行参数应该启用这个。 GitWiki对此有几句话要说 。 这应该做的伎俩:

 git --bare init --shared=all 

如果您已经创建了存储库,可以通过执行以下命令将其转换为“共享存储库”:

 git repo-config core.sharedRepository true 

在您的存储库中,正如在moserei.de的博客文章中提到的 。

2014更新:这仍然是可能的,但命令已经从repo-config更改为配置。

 git config core.sharedRepository true 

Git是为了分发。 所以,每个用户应该有一个他/她自己的单独的存储库。 上述方法与这种方法相矛盾。 除此之外,我怀疑.git目录的权限。

我猜想.git目录的所有权是问题。

您不应该使用来自不同用户的源树 – 这可能会导致问题。

git可执行文件不是问题。 它应该由root拥有,并拥有755个权限。 ( -rwxr-xr-x

换句话说,你可以使用多个帐户的git,但是你不应该共享一个工作目录。

拥有任何可执行文件集的权限,以便普通用户可以覆盖可执行文件是一个相当大的安全风险。 (尝试使用调用rm -rf $HOME的shell脚本覆盖/usr/bin/git 。)

将权限更改回755,并再次由root创建git:root。 (除非你使用dpkg-statoverride(8) ),否则Ubuntu的软件包管理器会重置下一次升级的权限

我同意那些认为让多个用户共享一个git仓库不是个好主意的人。 如果您仍然认为有必要,请考虑设置一个新组,将存放存储库的目录及其中的所有文件chgrp该组,并设置目录上的setgid位。 ( git init--shared参数也可以为你做一些)。然后,把所有的用户添加到应该有提交权限的组中。

您可以使用验证成员

 members groupname 

然后,您可以设置用户名:groupname对的权限级别,

 change the ownership sudo chown -v -R username:groupname sprout chmod -R g+w .git/*