用于--restrict-modify
param的Devpi的文档指定除了为用户指定访问权限外,还可以为组修改访问权限:
指定哪些用户/组可以创建其他用户及其索引。多个用户和组由逗号分隔。群组需要以冒号为前缀,如下所示:':group'。 [...]
但是,没有关于如何实际创建组的文档;这是直接与主机上可用的Unix组集成的吗?
答案 0 :(得分:1)
devpi
服务器本身不进行任何组管理。相反,它将它委托给auth插件。看看devpiserver_auth_user
hookspec:
返回包含身份验证验证结果的dict。 必须使用以下值之一的键“status”返回dict:
- “ok” - 身份验证成功
- “unknown” - 没有匹配的用户,尝试过其他插件
- “拒绝” - 密码无效,身份验证停止
可选的插件可以使用结果字典的“groups”键返回用户所属的组名列表。
AFAIK目前只有使用群组的插件:devpi-ldap
,check 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']
},
...
)