Как установить umask по умолчанию в JupyterHub - PullRequest
0 голосов
/ 08 марта 2019

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


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

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

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

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

1 Ответ

0 голосов
/ 08 марта 2019

Однопользовательские записные книжки берут свою конфигурацию из /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>).

...