可以使用devpi-server创建组吗?

时间:2018-04-18 14:02:36

标签: usergroups devpi

用于--restrict-modify param的Devpi的文档指定除了为用户指定访问权限外,还可以为组修改访问权限:

  

指定哪些用户/组可以创建其他用户及其索引。多个用户和组由逗号分隔。群组需要以冒号为前缀,如下所示:':group'。 [...]

但是,没有关于如何实际创建组的文档;这是直接与主机上可用的Unix组集成的吗?

1 个答案:

答案 0 :(得分:1)

devpi服务器本身不进行任何组管理。相反,它将它委托给auth插件。看看devpiserver_auth_user hookspec:

  

返回包含身份验证验证结果的dict。   必须使用以下值之一的键“status”返回dict:

     
      
  • “ok” - 身份验证成功
  •   
  • “unknown” - 没有匹配的用户,尝试过其他插件
  •   
  • “拒绝” - 密码无效,身份验证停止
  •   
     

可选的插件可以使用结果字典的“groups”键返回用户所属的组名列表。

AFAIK目前只有使用群组的插件:devpi-ldapcheck out its code for usage example

至于将访问权限绑定到unix组,您可以自己轻松编写这样的auth插件。这是一个不做任何真正身份验证的插件的愚蠢示例,只返回请求访问权限的用户所属的unix组:

# myplugin.py

import grp
from pluggy import HookimplMarker


@hookimpl(tryfirst=True)
def devpiserver_auth_user(userdict, username, password):
    # get all groups for the user
    groups = [group.gr_name for group in grp.getgrall() if username in group.gr_mem]
    return {'status': 'ok', 'groups': groups}

现在在插件的设置脚本中添加devpi的入口点,你就可以了:

from setuptools import setup

setup(
    name='devpi-unix-group-auth',
    py_modules=['myplugin'],
    entry_points={
    'console_scripts': {
        'devpi_server': ['devpi-unix-group-auth = myplugin']
    },
    ...
)