Git用户权限

Git用户权限,git,permissions,ssh,repository,Git,Permissions,Ssh,Repository,我有一个本地repo和远程裸存储库集 我的每个托管包都有自己的用户和组(没有ssh访问权限),因此我有很多权限问题 我通过将远程回购设置为ssh://root@... 并创建post接收挂钩以应用chown correctuser:correctgroup-R public\u html/ 正如你所看到的,这并不理想,因为我涉及“根”,不应该是这样 “git init--bare--shared”有什么帮助吗 我希望能够以root用户身份远程推送,而将“git”添加到我的所有组(包)中也没有任何

我有一个本地repo和远程裸存储库集

我的每个托管包都有自己的用户和组(没有ssh访问权限),因此我有很多权限问题

我通过将远程回购设置为ssh://root@... 并创建post接收挂钩以应用
chown correctuser:correctgroup-R public\u html/

正如你所看到的,这并不理想,因为我涉及“根”,不应该是这样

git init--bare--shared
”有什么帮助吗

我希望能够以root用户身份远程推送,而将“git”添加到我的所有组(包)中也没有任何帮助


请告知。

您可以保留
root
及其
chown
用于ssh访问,但将ssh会话限制为仅使用git命令,使用类似

--shared
选项()在您有多个组时并不完全合适:

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]
指定git存储库将在多个用户之间共享。
允许属于同一组的用户推送到该存储库中
指定后,将设置配置变量“
core.sharedepository
”,以便使用请求的权限创建
$GIT\u DIR
下的文件和目录。
未指定时,git将使用umask(2)报告的权限

这对我很有用:


基本上,您可以设置SUID和SGID位。

Hmm,这不太有效,因为我不想“限制”根权限。我是这个服务器上唯一的ssh用户,所以gitolite似乎有点做过头了;(@user1113177您可以为这些git命令生成专用的公钥/私钥,同时保留根交互式shell会话的默认密钥。您可以为ssh使用多个公钥/私钥,如中所示: