#author("2023-08-29T02:48:09+00:00","default:iseki","iseki")
** dockerspawner.SystemUserSpawner [#nc54a560]
- 2021 7/12 版
- https://github.com/jupyterhub/dockerspawner/blob/master/dockerspawner/systemuserspawner.py
- dockerspawner.DockerSpawner からの派生クラス
- DockerSpawner と同じパッケージ? 特にインストールしていないが,既に入っていた.(''注:これは最新版ではなかった'')
- jovyan ではなく,ログインユーザで使用可.ログインユーザのホームディレクトリをマウントする.
-- グループに応じてマウントディレクトリを指定可能.
-- グループ設定のUIが必要.
- ただしログインユーザの情報が,ローカルに取れない場合(LDAPのユーザバインドでログインした場合),ホームディレクトリ等の情報が無いので途中でエラーを起こす.
-- 作りこめば大丈夫!
-- %%jovyan は潰せ!%% %%jovyan はテンプレートユーザだから潰しちゃダメ%% Dockerfile にしたからやっぱり潰す
- see also [[DockerSpawner>JupyterHub/DockerSpawner]]
*** この下以降の問題を全て解決した jupyterhub_config.py [#t00dcfcc]
- altfiles
-- see [[NSS]]
- 実験用 最新版
-- 2021 07/12
-- [[jupyterhub_config_systemuser.py>./jupyterhub_config.py]] (空白入れるのが途中で面倒になった)
*** 上記 GitHub の最新版(2021 07/11)を入れると,コンテナ内で NB_* の環境変数でグループIDを取れる! [#pb6155b1]
- /usr/local/anaconda/envs/jupyterhub/lib/python3.8/site-packages/dockerspawner/systemuserspawner.py を差し替える.
- HOME も取れる
iseki@299e2fa47bf9:~$ env |grep NB_
NB_UID=10015
NB_GID=10001
NB_USER=iseki
**** グループ名も取れるように改造 [#y38d9264]
129 def get_env(self):
130 env = super(SystemUserSpawner, self).get_env()
131 # relies on NB_USER and NB_UID handling in jupyter/docker-stacks
132 env.update(
133 dict(
134 USER=self.user.name, # deprecated
135 NB_USER=self.user.name,
136 USER_ID=self.user_id, # deprecated
137 NB_UID=self.user_id,
138 HOME=self.homedir,
139 )
140 )
141 if self.group_id >= 0:
142 env.update(NB_GID=self.group_id)
143 # Fumi.Iseki
144 import grp
145 gname = grp.getgrgid(self.group_id).gr_name
146 env.update(NB_GNM=gname)
147 return env
*** Memo [#r4868d62]
- notebook_dir = /home/teacher/{username}/work が効かない.teacher が無視される.