假设Linux服务器上有一个远程Git存储库R. R由用户U拥有,对于该用户U,根本不允许通过SSH进行远程登录(例如root
).基于密码和基于密钥的身份验证均不适用于该用户.什么是允许的,但是,被登录为不同的用户,然后使用su
或sudo
发布为命令ü.
是否可以组合这两种方法,以便Git将使用su
或sudo
在远程服务器上访问存储库?
或者,是否有另一种方法来访问R而不更改其访问权限或启用U的 SSH登录?
PS:我不介意必须手动输入密码,例如在su
提示符下,只要Git处理其余部分.
编辑:
从评论中可以看出,我需要澄清我想要做这样的事情的理由.R跟踪的文件是有问题的服务器正在使用的系统文件 - R不是裸存储库.这意味着无法真正移动存储库,而不是没有大量的诡计.
让Git使用sudo
将允许使用保护这些文件的相同安全模型来访问R,而不是通过必须单独配置和同步的单独途径.
小智 7
哦,你可以做到
git config remote.origin.uploadpack "sudo -u U git-upload-pack"
Run Code Online (Sandbox Code Playgroud)
获得git fetch
使用sudo
名为远程origin
.
您需要确保设置sudo以允许此用户在没有密码的情况下执行此命令,因为我看不到提示输入密码的方法.
资源:
我发现自己想要做一些类似的事情,并发现这个金块彻底埋没了 man git-config
我应该指出,这只能完成我只git fetch
需要工作的一半工作.我想你可以做类似的事情,与remote.origin.receivepack
为了得到git push
工作,但我还没有试过.
更容易建立另一个监听器而不是sshd dameon:设置一个Apache,其中:
git-http-backend
脚本,这允许通过http的git命令(称为智能http,在此处记录)这样,你不必担心sudo
和su
.
如果需要,您可以将其与身份验证步骤结合使用.
<Location /git>
AuthType Basic
AuthName "Private Git Access"
AuthUserFile "/etc/git-auth-file"
Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2775 次 |
最近记录: |