{ "info": { "author": "Jupyter Development Team", "author_email": "jupyter@googlegroups.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "# SudoSpawner\n\n[![PyPI](https://img.shields.io/pypi/v/sudospawner.svg)](https://pypi.python.org/pypi/sudospawner)\n\nThe SudoSpawner enables [JupyterHub](https://github.com/jupyter/jupyterhub)\nto spawn single-user servers without being root, by spawning an intermediate\nprocess via `sudo`, which takes actions on behalf of the user.\n\nThe ``sudospawner`` mediator, the intermediate process, can only do two things:\n\n1. send a signal to another process using the os.kill() call\n2. spawn single-user servers\n\nLaunching the ``sudospawner`` script is the only action that requires a\nJupyterHub administrator to have ``sudo`` access to execute.\n\n## Installation and setup\n\n1. Install:\n\n pip install -e .\n\n2. [Add sudo access to the script](https://github.com/jupyter/jupyterhub/wiki/Using-sudo-to-run-JupyterHub-without-root-privileges).\n\n3. To configure JupyterHub to use SudoSpawner, add the following to your \n`jupyterhub_config.py`:\n\n c.JupyterHub.spawner_class='sudospawner.SudoSpawner'\n\n The [JupyterHub documentation](http://jupyterhub.readthedocs.org/en/latest/index.html)\n has additional information about [creating a configuration file](https://jupyterhub.readthedocs.io/en/latest/getting-started/config-basics.html#generate-a-default-config-file),\n if needed, and recommended file locations for configuration files.\n\n## Custom singleuser launch command\n\n\nIn order to limit what permissions the use of sudospawner grants the Hub,\nwhen a single-user server is launched\nthe executable spawned is hardcoded as `dirname(sudospawner)/jupyterhub-singleuser`.\nThis requires the `sudospawner` executable to be in the same directory as the `jupyterhub-singleuser` command.\nIt is **very important** that users cannot modify the `bin/` directory containing `sudospawner`,\notherwise they can modify what `sudospawner` actually enables JupyterHub to do.\n\nYou may want to initialize user environment variables before launching the server, or do other initialization.\nIf you install a script called `sudospawner-singleuser` next to `sudospawner`,\nthis will be used instead of the direct `jupyterhub-singleuser` command.\n\nFor example, you might want to spawn notebook servers from conda environments that are revised and deployed separately from your hub instance. \n\n```bash\n#!/bin/bash -l\nset -e\n\n# Activate the notebook environment\nsource /opt/miniconda/bin/activate /opt/envs/notebook-latest\n\n# Show environment info in the log to aid debugging\nconda info\n\n# Delegate the notebook server launch to the jupyterhub-singleuser script.\n# this is how most sudospawner-singleuser scripts should end.\nexec \"$(dirname \"$0\")/jupyterhub-singleuser\" $@\n```\n\n## SudoSpawner with JupyterLab-Hub singleuser launch command\n\n\nIn order to have SudoSpawner work with JupyterLab-Hub you will need to create a custom singleuser launch command.\nCreate the script `sudospawner-singleuser` containing the below code in the same directory as `sudospawner` and grant it the same permissions. \n\n\n```bash\n#!/bin/bash -l\n\n# Delegate the notebook server launch to the jupyter-labhub script.\nexec \"jupyter-labhub\" $@\n```\n\n## Example\n\nThe [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.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://jupyter.org", "keywords": "Interactive,Interpreter,Shell,Web", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "sudospawner", "package_url": "https://pypi.org/project/sudospawner/", "platform": "Linux", "project_url": "https://pypi.org/project/sudospawner/", "project_urls": { "Homepage": "https://jupyter.org" }, "release_url": "https://pypi.org/project/sudospawner/0.5.2/", "requires_dist": [ "jupyterhub (>=0.7)", "notebook" ], "requires_python": "", "summary": "SudoSpawner: Spawner for JupyterHub using sudo", "version": "0.5.2" }, "last_serial": 3977554, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8792404c0cc707b33383b4ee490e2012", "sha256": "0fa920d6176a40a3b6bd2e5c1225d766650d0225e524ef7cd8c65efe141ee49d" }, "downloads": -1, "filename": "sudospawner-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8792404c0cc707b33383b4ee490e2012", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5573, "upload_time": "2016-02-03T15:21:02", "url": "https://files.pythonhosted.org/packages/d9/cc/37818bf88b438ad661a867e682337df0bf25fe7f7305b3a74d0cfb1e33ef/sudospawner-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dacac44c8c23aaf3b6a5b522d17e6549", "sha256": "e176dcf8b459c747442e136b8a6696bdf92d942c6fc8ef69bc30c7ddf0ef404a" }, "downloads": -1, "filename": "sudospawner-0.1.0.tar.gz", "has_sig": false, "md5_digest": "dacac44c8c23aaf3b6a5b522d17e6549", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5610, "upload_time": "2016-02-03T15:21:08", "url": "https://files.pythonhosted.org/packages/bf/8f/0e5b3e492c6c71b23875382d7c9c8178e5b0dd659ad4c1abbebde9c13493/sudospawner-0.1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "bee55e24a38a4c3988cb0417ac8f806f", "sha256": "8a56ed5ed3514b1006d3f11cd817c78cb002c263b9a20cdcaa519116aa296f07" }, "downloads": -1, "filename": "sudospawner-0.1.0.zip", "has_sig": false, "md5_digest": "bee55e24a38a4c3988cb0417ac8f806f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7730, "upload_time": "2016-02-03T15:21:18", "url": "https://files.pythonhosted.org/packages/2b/31/44cd5a874c01ca3dc89c0a37f8aff475af6da4fe742113e95a26116a9e86/sudospawner-0.1.0.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "bbba7c3919c64c90172b197932b4f667", "sha256": "559c437e6b39a648098229639cecf18797b06c712423a50c1bb204be02525283" }, "downloads": -1, "filename": "sudospawner-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bbba7c3919c64c90172b197932b4f667", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6246, "upload_time": "2016-02-12T09:52:13", "url": "https://files.pythonhosted.org/packages/32/e0/e09fccb2c7b748f5019db098d089265cb904afb01ec9a4f20d51a23e4a34/sudospawner-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "006437af34bc6cdb11b6224fdfe3960b", "sha256": "60b0e3a302235df9b7d92792ca0783f9bfc267f574a99877700e08a6501a5e4d" }, "downloads": -1, "filename": "sudospawner-0.2.0.tar.gz", "has_sig": false, "md5_digest": "006437af34bc6cdb11b6224fdfe3960b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6202, "upload_time": "2016-02-12T09:52:20", "url": "https://files.pythonhosted.org/packages/b6/ab/eb2def533defaa49f0747915cb1938d2d77c09264aad97fc1d3c6015f0c6/sudospawner-0.2.0.tar.gz" } ], "0.2.0.dev": [], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3e60d3309df6833dd71bc46e6ad60f81", "sha256": "a489ace94ed455088e5d4caafd6c148bbc865276469ebd75c5caba506a86b90d" }, "downloads": -1, "filename": "sudospawner-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3e60d3309df6833dd71bc46e6ad60f81", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6575, "upload_time": "2016-10-10T14:21:00", "url": "https://files.pythonhosted.org/packages/d5/29/906d8e0865901996f405f3c8583517798b3368ac7545ecd79cabd7fd4b12/sudospawner-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0eb29e5e19ea8d91a129cd3568b955d4", "sha256": "aeb9d228de0ccac1cb56bb7ed79a06e746886836b46797370394c81874c4fa9c" }, "downloads": -1, "filename": "sudospawner-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0eb29e5e19ea8d91a129cd3568b955d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7165, "upload_time": "2016-10-10T14:21:04", "url": "https://files.pythonhosted.org/packages/54/aa/b0ff5583ce2459eb080f1e68b3878171d24c5130689818eff3a943430337/sudospawner-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "31c1ef495932cb04cc45c0c8ea13d637", "sha256": "cadcf36915cdf979c13885714e135381ac0b0dd1b34ecb6ef5f73ede92f359db" }, "downloads": -1, "filename": "sudospawner-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "31c1ef495932cb04cc45c0c8ea13d637", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6879, "upload_time": "2017-04-21T08:05:11", "url": "https://files.pythonhosted.org/packages/f1/ab/8a58b95cfcc3552d50a8cb5ef7a01dbaeb8db8bb2c685d2624545aa1e852/sudospawner-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b4f1e2b48c9baf0634a35ee7bf0e6d8", "sha256": "132a58a46ac665c360445b500e3494668a7031192b7f1279d36b52da28fb7fc4" }, "downloads": -1, "filename": "sudospawner-0.4.0.tar.gz", "has_sig": false, "md5_digest": "5b4f1e2b48c9baf0634a35ee7bf0e6d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7433, "upload_time": "2017-04-21T08:05:13", "url": "https://files.pythonhosted.org/packages/48/18/b60b0094982c6ad12f8f3abd010fc6ae05f8a474a06bfb295304e01410df/sudospawner-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3c73231f2828efb6649c9aa6e9666471", "sha256": "fd565ba6e635a0409cb9b1514a6df9dc3e024657473192138533987d514fd7d7" }, "downloads": -1, "filename": "sudospawner-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3c73231f2828efb6649c9aa6e9666471", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7059, "upload_time": "2017-08-06T11:08:30", "url": "https://files.pythonhosted.org/packages/17/33/59925dfac53936743902250afb2eaa174bc1c8c36ee7ed6ee374a07b200a/sudospawner-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "344668adaa76d0d0b785897573d49dc9", "sha256": "7a5a29481d127b601307d013803183a2829a9f9c7260e7be661a7ff14fca548f" }, "downloads": -1, "filename": "sudospawner-0.4.1.tar.gz", "has_sig": false, "md5_digest": "344668adaa76d0d0b785897573d49dc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8015, "upload_time": "2017-08-06T11:08:31", "url": "https://files.pythonhosted.org/packages/70/d3/468a4a142a16195b3a27ebe8cd69e0beefc2a4b994dbdc83f67414747b44/sudospawner-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "4bfcded3447a968bb2b874a125d418bf", "sha256": "1c5132632620ca3df1019206612b40c119686a7c0ebb09f369662affeb241455" }, "downloads": -1, "filename": "sudospawner-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4bfcded3447a968bb2b874a125d418bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7011, "upload_time": "2017-09-26T13:10:45", "url": "https://files.pythonhosted.org/packages/85/7f/20310cf0acbae26ee28dcd383ead53668a92ab74df1cc06fb4eb5e1ea642/sudospawner-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c28fac0cf6d28b307e63d7b63fc0981", "sha256": "b26a93f68c9d1027db4fc2e8f691d214c3d49480d659ba99c7164b32674375d4" }, "downloads": -1, "filename": "sudospawner-0.5.0.tar.gz", "has_sig": false, "md5_digest": "1c28fac0cf6d28b307e63d7b63fc0981", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8135, "upload_time": "2017-09-26T13:10:46", "url": "https://files.pythonhosted.org/packages/40/4f/41c37a462d09fed9fb27168eb35ddbf2e8c3927b79288715d5ac94b4d4b4/sudospawner-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "650cbbfa76a6f5ee0441f2d133a0490d", "sha256": "3e2fea65d9b2710946ba66ff3ef8f3e6d8fab8725994f83f7e1963fd68109a10" }, "downloads": -1, "filename": "sudospawner-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "650cbbfa76a6f5ee0441f2d133a0490d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7110, "upload_time": "2017-10-11T09:17:13", "url": "https://files.pythonhosted.org/packages/bf/db/6e3be254b22a3c6f93eb05188f81c27da1373e27939f63b2738c72e884ab/sudospawner-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fcbd5b506eb408bab5a77b40af4ccb56", "sha256": "a0e483ad1bbf1fa7829ba567cb72d4171c207c577f8e9aef7b36484066a3b430" }, "downloads": -1, "filename": "sudospawner-0.5.1.tar.gz", "has_sig": false, "md5_digest": "fcbd5b506eb408bab5a77b40af4ccb56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8343, "upload_time": "2017-10-11T09:17:14", "url": "https://files.pythonhosted.org/packages/2a/a8/cf89db5d72290257402ce2fcaec014c3b22db0c209dd9ea274642fc6dee3/sudospawner-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "4de2a1488543b087ccdc1f724ae70196", "sha256": "662e5513a8c78cc654f7e997449ad36532a7f04051d459b39a423e4171cc8495" }, "downloads": -1, "filename": "sudospawner-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4de2a1488543b087ccdc1f724ae70196", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7489, "upload_time": "2018-06-19T13:50:35", "url": "https://files.pythonhosted.org/packages/55/a8/ff1a55a19f3d9b6927282e78e147e6c093a529d2c99a4a5d4d1d9a46a437/sudospawner-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ece7871687b07d37cfb5acf69ea4a9f", "sha256": "5dbddd8164e05e4bb3a31eeb1a5baf5a5c6268f1cd14b3f063cde609b8bfbbe1" }, "downloads": -1, "filename": "sudospawner-0.5.2.tar.gz", "has_sig": false, "md5_digest": "9ece7871687b07d37cfb5acf69ea4a9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9137, "upload_time": "2018-06-19T13:50:36", "url": "https://files.pythonhosted.org/packages/ac/4d/776e494c968f3117336340262b3ec2cfad1725966eff68f437eeb636bf33/sudospawner-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4de2a1488543b087ccdc1f724ae70196", "sha256": "662e5513a8c78cc654f7e997449ad36532a7f04051d459b39a423e4171cc8495" }, "downloads": -1, "filename": "sudospawner-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4de2a1488543b087ccdc1f724ae70196", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7489, "upload_time": "2018-06-19T13:50:35", "url": "https://files.pythonhosted.org/packages/55/a8/ff1a55a19f3d9b6927282e78e147e6c093a529d2c99a4a5d4d1d9a46a437/sudospawner-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ece7871687b07d37cfb5acf69ea4a9f", "sha256": "5dbddd8164e05e4bb3a31eeb1a5baf5a5c6268f1cd14b3f063cde609b8bfbbe1" }, "downloads": -1, "filename": "sudospawner-0.5.2.tar.gz", "has_sig": false, "md5_digest": "9ece7871687b07d37cfb5acf69ea4a9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9137, "upload_time": "2018-06-19T13:50:36", "url": "https://files.pythonhosted.org/packages/ac/4d/776e494c968f3117336340262b3ec2cfad1725966eff68f437eeb636bf33/sudospawner-0.5.2.tar.gz" } ] }