跳转到主要内容

SudoSpawner:使用sudo的JupyterHub孵化器

项目描述

SudoSpawner

PyPI

SudoSpawner 允许 JupyterHub 在不作为 root 用户的情况下启动单用户服务器,通过通过 sudo 启动一个中间进程,代表用户执行操作。

sudospawner 中介,即中间进程,只能做两件事

  1. 使用 os.kill() 调用向另一个进程发送信号
  2. 启动单用户服务器

启动 sudospawner 脚本是需要 JupyterHub 管理员具有 sudo 访问权限执行的唯一操作。

安装和设置

  1. 安装

     pip install -e .
    
  2. 向脚本添加 sudo 访问权限.

  3. 要将 JupyterHub 配置为使用 SudoSpawner,请在您的 jupyterhub_config.py 中添加以下内容

     c.JupyterHub.spawner_class='sudospawner.SudoSpawner'
    

    JupyterHub 文档 提供有关 创建配置文件 的更多信息,如果需要,以及配置文件的推荐位置。

自定义单用户启动命令

为了限制 sudospawner 授予 Hub 的权限,当启动单用户服务器时,启动的可执行文件被硬编码为 dirname(sudospawner)/jupyterhub-singleuser。这要求 sudospawner 可执行文件与 jupyterhub-singleuser 命令位于同一目录。非常重要的是,用户不能修改包含 sudospawnerbin/ 目录,否则他们可以修改 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 运行任何内容。

项目详细信息


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

sudospawner-0.5.2.tar.gz (9.1 kB 查看哈希值)

上传时间

构建分发

sudospawner-0.5.2-py3-none-any.whl (7.5 kB 查看哈希值)

上传时间 Python 3

由以下机构支持