1

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

指定哪些用户/组可以创建其他用户及其索引。多个用户和组用逗号分隔。组需要以这样的冒号作为前缀:':group'。[...]

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

4

1 回答 1

1

devpi服务器本身不进行任何组管理。相反,它将其委托给身份验证插件。看一下devpiserver_auth_user钩子规范:

返回包含身份验证验证结果的字典。必须返回带有以下值之一的键“状态”的 dict:

  • "ok" - 认证成功
  • “未知” - 没有匹配的用户,正在尝试其他插件
  • "reject" - 密码无效,认证停止

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

AFAIK 目前只有使用 groups: 的插件devpi-ldap请查看其代码以获取使用示例

至于将访问权限绑定到 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在插件的设置脚本中添加 's 入口点,你就可以开始了:

from setuptools import setup

setup(
    name='devpi-unix-group-auth',
    py_modules=['myplugin'],
    entry_points={
    'console_scripts': {
        'devpi_server': ['devpi-unix-group-auth = myplugin']
    },
    ...
)
于 2018-04-25T09:44:38.467 回答