在许多帐户中不使用Sudo而使用Git
如果没有Sudo,如何在一个Ubuntu的多个帐户中使用Git? 我的Ubuntu有很多帐户。在许多帐户中不使用Sudo而使用Git,git,ubuntu,sudo,Git,Ubuntu,Sudo,如果没有Sudo,如何在一个Ubuntu的多个帐户中使用Git? 我的Ubuntu有很多帐户。 如果没有sudo,我就无法访问Git 我将所有者更改为我、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':
如果没有sudo,我就无法访问Git 我将所有者更改为我、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.*
,它不返回匹配项,因此在锁定系统时似乎没有index.lock。我也对sudo运行了相同的命令,但没有成功。我猜.git
目录的所有权是问题所在
您不应该使用来自不同用户的一个源代码树-这可能会导致问题
git
可执行文件不是问题所在。它应该归root所有,并具有755个权限。(-rwxr-xr-x
)
换句话说,你可以从多个帐户使用git,但你不应该共享一个工作目录。git应该是分布式的。因此,每个用户都应该拥有自己的独立存储库。上述方法与此方法相矛盾。除此之外,我怀疑
.git
目录的权限。如果我正确理解了您的问题,您需要授予多个*nix用户帐户对同一git存储库的写访问权限。使用--share
命令行参数git init
应该可以启用此功能。GitWiki具有。这应该可以实现以下功能:
git --bare init --shared=all
如果您已经创建了存储库,则可以通过抛出以下命令将其转换为“共享存储库”:
git repo-config core.sharedRepository true
在您的存储库中,如中所述
2014年更新:
这仍然是可能的,但命令已从repo config更改为config
git config core.sharedRepository true
拥有任何可执行文件集的权限,以便普通用户可以覆盖可执行文件是一个相当大的安全风险。(尝试使用调用
rm-rf$HOME
的shell脚本覆盖/usr/bin/git
)
将权限更改回755,并使git再次归root:root所有。(Ubuntu的包管理器将在下次升级时重置权限,除非您使用dpkg statoverride(8)
)
我同意那些说多个用户共享一个Git存储库可能不是一个好主意。如果你仍然认为有必要的话,考虑建立一个新的组,<代码> CHGRP保存库的目录和其中的所有文件,并在目录上设置StGID位。(git init的
--shared
参数也可以为您执行部分操作。)然后,将所有具有提交权限的用户添加到组中。您可以使用
members groupname
然后您可以为username:groupname对设置权限级别
change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*
有没有一种方法可以追溯主动地创建一个git存储库——如果您创建了一个初始的非共享git init,那么它就是共享的?@Steve Folly:我相信我的答案中的第二个代码示例应该可以解决这个问题。不过我自己还没有真正尝试过。@Jørn Schou Rode:doh!对不起,我应该多加注意!”如果没有sudo,我就无法访问Git。"您应该将此视为您的帐户、系统配置或安装有问题的迹象。这是极不正常的行为——git是一个正常的用户空间应用程序,在正常的Ubuntu安装中可供所有普通用户访问。作为参考,/usr/bin/git*的正确权限/所有权为755/ro如hillu的回答所示,您可能意外地设置了权限,以便只有组成员或所有者才能执行“git”(即权限是744 aka-rwxr-r,而不是755)。未能更正这些权限会对您的系统造成严重的安全风险。我相信web上的一些页面建议使用以下命令执行配置:sudo git config--global user.name“your name”,这会在.git所有权中产生问题。在多用户操作系统中,使用git config而不使用sudo会更好。