%global _empty_manifest_terminate_build 0 Name: python-sudospawner Version: 0.5.2 Release: 1 Summary: SudoSpawner: Spawner for JupyterHub using sudo License: BSD URL: https://jupyter.org Source0: https://mirrors.aliyun.com/pypi/web/packages/ac/4d/776e494c968f3117336340262b3ec2cfad1725966eff68f437eeb636bf33/sudospawner-0.5.2.tar.gz BuildArch: noarch Requires: python3-jupyterhub Requires: python3-notebook %description # SudoSpawner [![PyPI](https://img.shields.io/pypi/v/sudospawner.svg)](https://pypi.python.org/pypi/sudospawner) The SudoSpawner enables [JupyterHub](https://github.com/jupyter/jupyterhub) to spawn single-user servers without being root, by spawning an intermediate process via `sudo`, which takes actions on behalf of the user. The ``sudospawner`` mediator, the intermediate process, can only do two things: 1. send a signal to another process using the os.kill() call 2. spawn single-user servers Launching the ``sudospawner`` script is the only action that requires a JupyterHub administrator to have ``sudo`` access to execute. ## Installation and setup 1. Install: pip install -e . 2. [Add sudo access to the script](https://github.com/jupyter/jupyterhub/wiki/Using-sudo-to-run-JupyterHub-without-root-privileges). 3. To configure JupyterHub to use SudoSpawner, add the following to your `jupyterhub_config.py`: c.JupyterHub.spawner_class='sudospawner.SudoSpawner' The [JupyterHub documentation](http://jupyterhub.readthedocs.org/en/latest/index.html) has additional information about [creating a configuration file](https://jupyterhub.readthedocs.io/en/latest/getting-started/config-basics.html#generate-a-default-config-file), if needed, and recommended file locations for configuration files. ## Custom singleuser launch command In order to limit what permissions the use of sudospawner grants the Hub, when a single-user server is launched the executable spawned is hardcoded as `dirname(sudospawner)/jupyterhub-singleuser`. This requires the `sudospawner` executable to be in the same directory as the `jupyterhub-singleuser` command. It is **very important** that users cannot modify the `bin/` directory containing `sudospawner`, otherwise they can modify what `sudospawner` actually enables JupyterHub to do. You may want to initialize user environment variables before launching the server, or do other initialization. If you install a script called `sudospawner-singleuser` next to `sudospawner`, this will be used instead of the direct `jupyterhub-singleuser` command. For example, you might want to spawn notebook servers from conda environments that are revised and deployed separately from your hub instance. ```bash #!/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" $@ ``` ## SudoSpawner with JupyterLab-Hub singleuser launch command In order to have SudoSpawner work with JupyterLab-Hub you will need to create a custom singleuser launch command. Create the script `sudospawner-singleuser` containing the below code in the same directory as `sudospawner` and grant it the same permissions. ```bash #!/bin/bash -l # Delegate the notebook server launch to the jupyter-labhub script. exec "jupyter-labhub" $@ ``` ## Example The [Dockerfile](https://github.com/jupyter/sudospawner/blob/master/Dockerfile) in this repo contains an example configuration for setting up a JupyterHub system, without any need to run anything as root. %package -n python3-sudospawner Summary: SudoSpawner: Spawner for JupyterHub using sudo Provides: python-sudospawner BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-sudospawner # SudoSpawner [![PyPI](https://img.shields.io/pypi/v/sudospawner.svg)](https://pypi.python.org/pypi/sudospawner) The SudoSpawner enables [JupyterHub](https://github.com/jupyter/jupyterhub) to spawn single-user servers without being root, by spawning an intermediate process via `sudo`, which takes actions on behalf of the user. The ``sudospawner`` mediator, the intermediate process, can only do two things: 1. send a signal to another process using the os.kill() call 2. spawn single-user servers Launching the ``sudospawner`` script is the only action that requires a JupyterHub administrator to have ``sudo`` access to execute. ## Installation and setup 1. Install: pip install -e . 2. [Add sudo access to the script](https://github.com/jupyter/jupyterhub/wiki/Using-sudo-to-run-JupyterHub-without-root-privileges). 3. To configure JupyterHub to use SudoSpawner, add the following to your `jupyterhub_config.py`: c.JupyterHub.spawner_class='sudospawner.SudoSpawner' The [JupyterHub documentation](http://jupyterhub.readthedocs.org/en/latest/index.html) has additional information about [creating a configuration file](https://jupyterhub.readthedocs.io/en/latest/getting-started/config-basics.html#generate-a-default-config-file), if needed, and recommended file locations for configuration files. ## Custom singleuser launch command In order to limit what permissions the use of sudospawner grants the Hub, when a single-user server is launched the executable spawned is hardcoded as `dirname(sudospawner)/jupyterhub-singleuser`. This requires the `sudospawner` executable to be in the same directory as the `jupyterhub-singleuser` command. It is **very important** that users cannot modify the `bin/` directory containing `sudospawner`, otherwise they can modify what `sudospawner` actually enables JupyterHub to do. You may want to initialize user environment variables before launching the server, or do other initialization. If you install a script called `sudospawner-singleuser` next to `sudospawner`, this will be used instead of the direct `jupyterhub-singleuser` command. For example, you might want to spawn notebook servers from conda environments that are revised and deployed separately from your hub instance. ```bash #!/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" $@ ``` ## SudoSpawner with JupyterLab-Hub singleuser launch command In order to have SudoSpawner work with JupyterLab-Hub you will need to create a custom singleuser launch command. Create the script `sudospawner-singleuser` containing the below code in the same directory as `sudospawner` and grant it the same permissions. ```bash #!/bin/bash -l # Delegate the notebook server launch to the jupyter-labhub script. exec "jupyter-labhub" $@ ``` ## Example The [Dockerfile](https://github.com/jupyter/sudospawner/blob/master/Dockerfile) in this repo contains an example configuration for setting up a JupyterHub system, without any need to run anything as root. %package help Summary: Development documents and examples for sudospawner Provides: python3-sudospawner-doc %description help # SudoSpawner [![PyPI](https://img.shields.io/pypi/v/sudospawner.svg)](https://pypi.python.org/pypi/sudospawner) The SudoSpawner enables [JupyterHub](https://github.com/jupyter/jupyterhub) to spawn single-user servers without being root, by spawning an intermediate process via `sudo`, which takes actions on behalf of the user. The ``sudospawner`` mediator, the intermediate process, can only do two things: 1. send a signal to another process using the os.kill() call 2. spawn single-user servers Launching the ``sudospawner`` script is the only action that requires a JupyterHub administrator to have ``sudo`` access to execute. ## Installation and setup 1. Install: pip install -e . 2. [Add sudo access to the script](https://github.com/jupyter/jupyterhub/wiki/Using-sudo-to-run-JupyterHub-without-root-privileges). 3. To configure JupyterHub to use SudoSpawner, add the following to your `jupyterhub_config.py`: c.JupyterHub.spawner_class='sudospawner.SudoSpawner' The [JupyterHub documentation](http://jupyterhub.readthedocs.org/en/latest/index.html) has additional information about [creating a configuration file](https://jupyterhub.readthedocs.io/en/latest/getting-started/config-basics.html#generate-a-default-config-file), if needed, and recommended file locations for configuration files. ## Custom singleuser launch command In order to limit what permissions the use of sudospawner grants the Hub, when a single-user server is launched the executable spawned is hardcoded as `dirname(sudospawner)/jupyterhub-singleuser`. This requires the `sudospawner` executable to be in the same directory as the `jupyterhub-singleuser` command. It is **very important** that users cannot modify the `bin/` directory containing `sudospawner`, otherwise they can modify what `sudospawner` actually enables JupyterHub to do. You may want to initialize user environment variables before launching the server, or do other initialization. If you install a script called `sudospawner-singleuser` next to `sudospawner`, this will be used instead of the direct `jupyterhub-singleuser` command. For example, you might want to spawn notebook servers from conda environments that are revised and deployed separately from your hub instance. ```bash #!/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" $@ ``` ## SudoSpawner with JupyterLab-Hub singleuser launch command In order to have SudoSpawner work with JupyterLab-Hub you will need to create a custom singleuser launch command. Create the script `sudospawner-singleuser` containing the below code in the same directory as `sudospawner` and grant it the same permissions. ```bash #!/bin/bash -l # Delegate the notebook server launch to the jupyter-labhub script. exec "jupyter-labhub" $@ ``` ## Example The [Dockerfile](https://github.com/jupyter/sudospawner/blob/master/Dockerfile) in this repo contains an example configuration for setting up a JupyterHub system, without any need to run anything as root. %prep %autosetup -n sudospawner-0.5.2 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-sudospawner -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.5.2-1 - Package Spec generated