自定义 systemd
服务#
默认情况下,TLJH 配置了两个 systemd
服务来运行 JupyterHub 和 Traefik。
这些服务附带一组默认设置,这些设置在 jupyterhub.service 和 traefik.service 中指定。它们看起来像这样
[Unit]
Requires=traefik.service
After=traefik.service
[Service]
User=root
Restart=always
WorkingDirectory=/opt/tljh/state
PrivateTmp=yes
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
Environment=TLJH_INSTALL_PREFIX=/opt/tljh
ExecStart=/opt/tljh/hub/bin/python3 -m jupyterhub.app -f jupyterhub_config.py --upgrade-db
[Install]
WantedBy=multi-user.target
但是,在某些情况下,管理员可能希望更好地控制这些设置。
例如,当使用 Samba 通过网络挂载共享卷时,这些命名空间设置可能过于严格,从而阻止用户访问共享卷。
使用 override.conf
覆盖设置#
要覆盖 jupyterhub
设置,可以提供一个自定义的 /etc/systemd/system/jupyterhub.service.d/override.conf
文件。
以下是文件内容的示例
[Service]
PrivateTmp=no
PrivateDevices=no
ProtectKernelTunables=no
ProtectKernelModules=no
此示例在使用 Samba 挂载卷并与 JupyterHub 用户共享卷的情况下很有用。您可能还想提供自己的选项,这些选项在 systemd 文档 中列出。
然后确保重新加载守护程序和 jupyterhub
服务
sudo systemctl daemon-reload
sudo systemctl restart jupyterhub
然后使用以下命令检查状态
sudo systemctl status jupyterhub
输出应如下所示
要覆盖 traefik
设置,请在 /etc/systemd/system/traefik.service.d/override.conf
下创建一个新文件,并按照相同的步骤操作。
参考#
如果您想详细了解 systemd
安全功能,请查看以下参考资料