如何在JupyterHub中为单个笔记本/用户设置默认的umask(标准0022除外)?
用例:我正在使用atomsInstall('mingw'); atomsLoad('mingw');
,它为用户生成了一个Docker容器,但是却与基础(虚拟机)系统用户挂钩:他们的笔记本主目录与基础OS的笔记本主目录匹配。我添加了一个小选项,以使不仅用户匹配,而且组匹配。
我已经将基本主目录(通常为SystemUserSpawner
)安装到笔记本中单独的/home/
文件夹(只读)中,以便用户可以浏览彼此的主目录以共享脚本。但是,默认情况下,我希望按组拥有权限,而不是全球范围内可读(显然,用户可以根据需要更改权限),以便不同的组可以在其组中读取和共享,但不能自动使用大家。
为此使用_users
设置0027似乎是可行的,但是我似乎无法在系统范围内进行设置:没有标准的OS做法(Docker容器的OS,Ubuntu 18.04)出现工作。
如何为每个笔记本用户设置0027的默认umask?
答案 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>
)。