11

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

我的 Ubuntu 有很多帐户。新帐户的创建使我无法在没有 sudo 的情况下访问 Git。

我将所有者更改为我,masi,并将组更改为adminmasi所属的组。我对 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.*它不返回任何匹配项,因此似乎没有 index.lock 锁定系统。我也使用 sudo 不成功地运行相同的命令。

4

5 回答 5

18

如果我正确理解您的问题,您需要授予多个 *nix 用户帐户对同一个 git 存储库的写入权限。使用--share命令行参数 forgit init应该启用此功能。GitWiki 对此有几句话要说。这应该可以解决问题:

git --bare init --shared=all

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

git repo-config core.sharedRepository true

在您的存储库中,如moserei.de 的博客文章中所述

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

git config core.sharedRepository true
于 2009-09-02T12:36:10.410 回答
8

Git 是分布式的。因此,每个用户都应该拥有自己的单独存储库。上述方法与此方法相矛盾。除此之外,我怀疑.git目录的权限。

于 2009-09-02T12:05:14.860 回答
5

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

您不应该使用来自不同用户的一个源代码树——这可能会导致问题。

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

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

于 2009-09-02T12:02:58.190 回答
3

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

将权限更改回 755 并使 git 再次归 root:root 所有。(Ubuntu的包管理器无论如何都会在下次升级时重置权限,除非你使用过dpkg-statoverride(8)

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

于 2009-09-04T08:23:47.897 回答
0

您可以使用验证成员

members groupname

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

change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*
于 2015-11-10T15:46:23.917 回答