[英]Using Git without Sudo in many accounts
如何在一个Ubuntu中的多个帐户中使用没有Sudo的Git?
我的Ubuntu有很多账号。 新帐户的创建使我无法访问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.*
返回没有匹配,因此在锁定系统时似乎没有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更改为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。 (除非你使用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/*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.