SudoSpawner:使用sudo的JupyterHub孵化器
项目描述
SudoSpawner
SudoSpawner 允许 JupyterHub 在不作为 root 用户的情况下启动单用户服务器,通过通过 sudo
启动一个中间进程,代表用户执行操作。
sudospawner
中介,即中间进程,只能做两件事
- 使用 os.kill() 调用向另一个进程发送信号
- 启动单用户服务器
启动 sudospawner
脚本是需要 JupyterHub 管理员具有 sudo
访问权限执行的唯一操作。
安装和设置
-
安装
pip install -e .
-
要将 JupyterHub 配置为使用 SudoSpawner,请在您的
jupyterhub_config.py
中添加以下内容c.JupyterHub.spawner_class='sudospawner.SudoSpawner'
JupyterHub 文档 提供有关 创建配置文件 的更多信息,如果需要,以及配置文件的推荐位置。
自定义单用户启动命令
为了限制 sudospawner 授予 Hub 的权限,当启动单用户服务器时,启动的可执行文件被硬编码为 dirname(sudospawner)/jupyterhub-singleuser
。这要求 sudospawner
可执行文件与 jupyterhub-singleuser
命令位于同一目录。非常重要的是,用户不能修改包含 sudospawner
的 bin/
目录,否则他们可以修改 sudospawner
实际上使 JupyterHub 能够做什么。
您可能希望在启动服务器之前初始化用户环境变量,或进行其他初始化。如果您在 sudospawner
旁边安装名为 sudospawner-singleuser
的脚本,则将使用此脚本而不是直接使用 jupyterhub-singleuser
命令。
例如,您可能希望从与 hub 实例分开修订和部署的 conda 环境启动笔记本服务器。
#!/bin/bash -l
set -e
# Activate the notebook environment
source /opt/miniconda/bin/activate /opt/envs/notebook-latest
# Show environment info in the log to aid debugging
conda info
# Delegate the notebook server launch to the jupyterhub-singleuser script.
# this is how most sudospawner-singleuser scripts should end.
exec "$(dirname "$0")/jupyterhub-singleuser" $@
与 JupyterLab-Hub 单用户启动命令一起使用 SudoSpawner
为了使 SudoSpawner 与 JupyterLab-Hub 一起工作,您需要创建一个自定义单用户启动命令。在 sudospawner
所在的目录中创建名为 sudospawner-singleuser
的脚本,并赋予它相同的权限。
#!/bin/bash -l
# Delegate the notebook server launch to the jupyter-labhub script.
exec "jupyter-labhub" $@
示例
此存储库中的 Dockerfile 包含设置 JupyterHub 系统的示例配置,无需作为 root 运行任何内容。
项目详细信息
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。