如何在一个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/*