mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 15:33:02 +00:00
make home_dir a traitlet
so the property is only evaluated once and overrideable via hooks
This commit is contained in:
@@ -1396,31 +1396,34 @@ class SimpleLocalProcessSpawner(LocalProcessSpawner):
|
|||||||
provides absolutely no isolation between different users!
|
provides absolutely no isolation between different users!
|
||||||
"""
|
"""
|
||||||
|
|
||||||
home_path_template = Unicode(
|
home_dir_template = Unicode(
|
||||||
'/tmp/{username}',
|
'/tmp/{username}',
|
||||||
config=True,
|
config=True,
|
||||||
help='Template to expand to set the user home. {username} is expanded'
|
help="""
|
||||||
|
Template to expand to set the user home.
|
||||||
|
{username} is expanded to the jupyterhub username.
|
||||||
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
home_dir = Unicode(help="The home directory for the user")
|
||||||
def home_path(self):
|
@default('home_dir')
|
||||||
return self.home_path_template.format(
|
def _default_home_dir(self):
|
||||||
|
return self.home_dir_template.format(
|
||||||
username=self.user.name,
|
username=self.user.name,
|
||||||
)
|
)
|
||||||
|
|
||||||
def make_preexec_fn(self, name):
|
def make_preexec_fn(self, name):
|
||||||
home = self.home_path
|
home = self.home_dir
|
||||||
def preexec():
|
def preexec():
|
||||||
try:
|
try:
|
||||||
os.makedirs(home, 0o755, exist_ok=True)
|
os.makedirs(home, 0o755, exist_ok=True)
|
||||||
os.chdir(home)
|
os.chdir(home)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
self.log.exception("Error in preexec for %s", name)
|
||||||
print(e)
|
|
||||||
return preexec
|
return preexec
|
||||||
|
|
||||||
def user_env(self, env):
|
def user_env(self, env):
|
||||||
env['USER'] = self.user.name
|
env['USER'] = self.user.name
|
||||||
env['HOME'] = self.home_path
|
env['HOME'] = self.home_dir
|
||||||
env['SHELL'] = '/bin/bash'
|
env['SHELL'] = '/bin/bash'
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user