首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AclExtension和mercurial-server/hg-ssh?

如何使用AclExtension和mercurial-server/hg-ssh?
EN

Stack Overflow用户
提问于 2009-11-17 12:55:05
回答 2查看 364关注 0票数 1

mercurial-server管理密钥文件夹下的用户数据库。用户和组由文件和文件夹表示。

AclExtension通过ssh依赖linux用户组。

它们看起来不相配。还是我错过了什么?

我已经设法让mercurial服务器工作起来了。但我不知道如何将AclExtension与它集成在一起,所以我可能会有更细粒度的访问控制。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-17 13:54:31

不幸的是,AclExtension确实在用户名之外键入了它的访问权限。如果您要为每个使用hg-ssh的用户创建单独的UNIX用户帐户,则可以获得所需的一切,但是如果您的所有ssh用户都使用相同的Unix用户帐户,则AclExtension将不适用于您。

除非。

我刚刚查看了acl.py文件,它看起来使用了getpass.py模块的getuser,它使用以下代码检查环境中的用户名:

代码语言:javascript
复制
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
    user = os.environ.get(name)
    if user:
        return user

因此,可以通过在hg-ssh用户的authorized_keys文件中设置一个环境变量来实现这一点:

代码语言:javascript
复制
command="hg-ssh path/to/repo" environment="LOGNAME=fakeusername" ssh-dss ...

然后,您可以将fakeusername放在ACL规则中,并且可以为每个密钥使用不同的fakeusername,所有这些都运行在相同的UNIX帐户下。

顺便说一句,似乎每个人都只是单独使用hg-ssh,我再也没有看到(非官方的)mercurial服务器应用程序被使用了。

票数 3
EN

Stack Overflow用户

发布于 2009-12-07 01:58:53

环境技巧在我的Solaris机器上似乎不起作用;我的解决方案是将fakeusername作为参数传递给hg-ssh,并将其设置为os.environ‘’LOGNAME‘,这样getpass就可以看到它。

代码语言:javascript
复制
command="hg-ssh fakeusername" ssh-dss ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1746680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档