mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-14 05:23:01 +00:00
Merge pull request #937 from minrk/service-chdir
Don't set cwd to user's home for services
This commit is contained in:
@@ -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"""
|
||||
|
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user