From 6fc9e90f280765d81c75ada6974d3c22f56ea12f Mon Sep 17 00:00:00 2001 From: Min RK Date: Sun, 15 Jan 2017 20:10:06 +0100 Subject: [PATCH] Don't set cwd to user's home for services allow `cwd` setting to take effect --- jupyterhub/services/service.py | 4 ++-- jupyterhub/spawner.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/jupyterhub/services/service.py b/jupyterhub/services/service.py index 6f6ad79c..107bc319 100644 --- a/jupyterhub/services/service.py +++ b/jupyterhub/services/service.py @@ -56,7 +56,7 @@ from traitlets.config import LoggingConfigurable from .. import orm from ..traitlets import Command -from ..spawner import LocalProcessSpawner +from ..spawner import LocalProcessSpawner, set_user_setuid from ..utils import url_path_join class _MockUser(HasTraits): @@ -80,7 +80,7 @@ class _ServiceSpawner(LocalProcessSpawner): if not name or name == getuser(): # no setuid if no name return - return super().make_preexec_fn(name) + return set_user_setuid(name, chdir=False) def start(self): """Start the process""" diff --git a/jupyterhub/spawner.py b/jupyterhub/spawner.py index d6f07dc6..bf31ded8 100644 --- a/jupyterhub/spawner.py +++ b/jupyterhub/spawner.py @@ -639,7 +639,7 @@ def _try_setcwd(path): os.chdir(td) -def set_user_setuid(username): +def set_user_setuid(username, chdir=True): """Return a preexec_fn for spawning a single-user server as a particular user. Returned preexec_fn will set uid/gid, and attempt to chdir to the target user's @@ -666,7 +666,8 @@ def set_user_setuid(username): os.setuid(uid) # start in the user's home dir - _try_setcwd(home) + if chdir: + _try_setcwd(home) return preexec