如何在JupyterHub中设置默认umask

时间:2019-03-08 09:59:01

标签: jupyter jupyterhub umask

如何在JupyterHub中为单个笔记本/用户设置默认的umask(标准0022除外)?


用例:我正在使用atomsInstall('mingw'); atomsLoad('mingw'); ,它为用户生成了一个Docker容器,但是却与基础(虚拟机)系统用户挂钩:他们的笔记本主目录与基础OS的笔记本主目录匹配。我添加了一个小选项,以使不仅用户匹配,而且组匹配。

我已经将基本主目录(通常为SystemUserSpawner)安装到笔记本中单独的/home/文件夹(只读)中,以便用户可以浏览彼此的主目录以共享脚本。但是,默认情况下,我希望按组拥有权限,而不是全球范围内可读(显然,用户可以根据需要更改权限),以便不同的组可以在其组中读取和共享,但不能自动使用大家。

为此使用_users设置0027似乎是可行的,但是我似乎无法在系统范围内进行设置:没有标准的OS做法(Docker容器的OS,Ubuntu 18.04)出现工作。

如何为每个笔记本用户设置0027的默认umask?

1 个答案:

答案 0 :(得分:0)

单用户笔记本从/etc/jupyter/jupyter_notebook_config.py获取配置(注意:该文件位于Docker容器中,而不位于主机OS中)。

该配置文件的最后几行如下:

# Change default umask for all subprocesses of the notebook server if set in
# the environment
if 'NB_UMASK' in os.environ:
    os.umask(int(os.environ['NB_UMASK'], 8))

因此,我们可以设置环境变量NB_UMASK来为笔记本用户设置默认umask。

我们可以在主机OS上的Jupyter Hub配置文件中进行设置。在/etc/jupyterhub/jupyterhub_config.py中,添加或调整c.SystemUserSpawner.environment(或者可能只是c.Spawner.environment,但我使用的是SystemUserSpanwer的变体)设置包括:

c.SystemUserSpawner.environment = {'NB_UMASK': '0027'}

该行应该是在整个笔记本中设置umask的唯一内容。


记录下来,我的完整生成器环境如下:

c.SystemUserSpawner.environment = {'JUPYTER_ENABLE_LAB': '1', 'GRANT_SUDO': '1', 'NB_UMASK': '0027'}

这样我就拥有了Jupyter Lab环境,用户可以根据需要在容器中安装更多软件(sudo apt install <something>)。