mercurial-server管理密钥文件夹下的用户数据库。用户和组由文件和文件夹表示。
AclExtension通过ssh依赖linux用户组。
它们看起来不相配。还是我错过了什么?
我已经设法让mercurial服务器工作起来了。但我不知道如何将AclExtension与它集成在一起,所以我可能会有更细粒度的访问控制。
发布于 2009-11-17 13:54:31
不幸的是,AclExtension确实在用户名之外键入了它的访问权限。如果您要为每个使用hg-ssh的用户创建单独的UNIX用户帐户,则可以获得所需的一切,但是如果您的所有ssh用户都使用相同的Unix用户帐户,则AclExtension将不适用于您。
除非。
我刚刚查看了acl.py文件,它看起来使用了getpass.py模块的getuser,它使用以下代码检查环境中的用户名:
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
user = os.environ.get(name)
if user:
return user因此,可以通过在hg-ssh用户的authorized_keys文件中设置一个环境变量来实现这一点:
command="hg-ssh path/to/repo" environment="LOGNAME=fakeusername" ssh-dss ...然后,您可以将fakeusername放在ACL规则中,并且可以为每个密钥使用不同的fakeusername,所有这些都运行在相同的UNIX帐户下。
顺便说一句,似乎每个人都只是单独使用hg-ssh,我再也没有看到(非官方的)mercurial服务器应用程序被使用了。
发布于 2009-12-07 01:58:53
环境技巧在我的Solaris机器上似乎不起作用;我的解决方案是将fakeusername作为参数传递给hg-ssh,并将其设置为os.environ‘’LOGNAME‘,这样getpass就可以看到它。
command="hg-ssh fakeusername" ssh-dss ...https://stackoverflow.com/questions/1746680
复制相似问题