Как мне установить umask по умолчанию в JupyterHub

#jupyter #jupyterhub #umask

#jupyter #jupyterhub #umask

Вопрос:

Как мне установить umask по умолчанию (отличный от стандартного 0022) для отдельных ноутбуков / пользователей в JupyterHub?


Пример использования: Я использую SystemUserSpawner , который создает контейнер Docker для пользователя, но подключается к базовым пользователям системы (виртуальной машине): их домашний каталог ноутбука совпадает с каталогом базовой ОС. Я добавил небольшую опцию, чтобы совпадали не только пользователи, но и группы.

Я смонтировал базовый домашний каталог ( /home/ обычно) в отдельную _users папку в ноутбуке (доступную только для чтения), чтобы пользователи могли просматривать домашние каталоги друг друга для совместного использования скриптов. Однако по умолчанию я хотел бы иметь разрешения по группам, а не для чтения во всем мире (очевидно, пользователи могут изменить это, если захотят), чтобы разные группы могли читать и делиться внутри своей группы, но не автоматически для всех.

Использование umask параметра 0027 кажется практичным для этого, но, похоже, я не могу его установить (в масштабах всей системы): ни одна из стандартных ОС (ОС контейнера Docker, Ubuntu 18.04), похоже, не работает.

Как мне настроить umask по умолчанию для 0027 для каждого пользователя ноутбука?

Ответ №1:

Однопользовательские ноутбуки берут свою конфигурацию из /etc/jupyter/jupyter_notebook_config.py (примечание: этот файл находится в контейнере Docker, а не в операционной системе хоста).

Последними строками этого конфигурационного файла являются следующие:

 # 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 по умолчанию для пользователя ноутбука.

Мы можем установить это в файле конфигурации 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, и пользователи могут устанавливать дополнительное программное обеспечение внутри своего контейнера по мере необходимости ( sudo apt install <something> ).