#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>
).