mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-14 13:33:00 +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 .. import orm
|
||||||
from ..traitlets import Command
|
from ..traitlets import Command
|
||||||
from ..spawner import LocalProcessSpawner
|
from ..spawner import LocalProcessSpawner, set_user_setuid
|
||||||
from ..utils import url_path_join
|
from ..utils import url_path_join
|
||||||
|
|
||||||
class _MockUser(HasTraits):
|
class _MockUser(HasTraits):
|
||||||
@@ -80,7 +80,7 @@ class _ServiceSpawner(LocalProcessSpawner):
|
|||||||
if not name or name == getuser():
|
if not name or name == getuser():
|
||||||
# no setuid if no name
|
# no setuid if no name
|
||||||
return
|
return
|
||||||
return super().make_preexec_fn(name)
|
return set_user_setuid(name, chdir=False)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Start the process"""
|
"""Start the process"""
|
||||||
|
@@ -639,7 +639,7 @@ def _try_setcwd(path):
|
|||||||
os.chdir(td)
|
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.
|
"""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
|
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)
|
os.setuid(uid)
|
||||||
|
|
||||||
# start in the user's home dir
|
# start in the user's home dir
|
||||||
_try_setcwd(home)
|
if chdir:
|
||||||
|
_try_setcwd(home)
|
||||||
|
|
||||||
return preexec
|
return preexec
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user