Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shared, writable folders in jupyterhub

Tags:

We are currently building a jupyterhub environment in a docker container and struggling with shared folders. Our goal is to set up a shared folder which is writable for all users.

In each user's home folder there is a symbolic link ~/shared to /opt/shared. The target folder has the permissions 777 and is owned by the group jupyter. Each user is member of the group jupyter. However, if one user creates a file in the shared folder logged in with his account into the web app, the permissions are set to 644. Therefore, no other user can edit the file.

I've tried to set the umask to 000 in the /etc/profiles and the ~/.bashrc files for each user. However, jupyter seems to ignore it. Is there a possibility to configure jupyter to create new files with g+w rights as default? I would like to avoid setting up access control lists with setfacl at the file system level because it requires custom flags in the /etc/fstab.

like image 348
Rudi Avatar asked Feb 15 '16 18:02

Rudi


People also ask

How do you collaborate using a Jupyter notebook?

Editors are not collaborative by default; to activate it, start JupyterLab with the --collaborative flag. To share a document with other users, you can copy the URL and send it, or you can install a helpful extension called jupyterlab-link-share that might help to share the link including the token.

What is JupyterHub Singleuser?

Built from the jupyter/base-notebook base image. This image contains a single user notebook server for use with JupyterHub. In particular, it is meant to be used with the DockerSpawner class to launch user notebook servers within docker containers.

Can JupyterHub run JupyterLab?

JupyterLab works out of the box with JupyterHub 1.0+, and can even run side by side with the classic Notebook. When JupyterLab is deployed with JupyterHub it will show additional menu items in the File menu that allow the user to log out or go to the JupyterHub control panel.


1 Answers

  1. Set a group (i.e., jupyter in your case) to shared folder chgrp jupyter /opt/shared
  2. Allow the group to write to that directory + make group sticky (new files are created with this group instead of user's primary group) chmod g+ws /opt/shared
  3. For each user create ~/.jupyter/jupyter_notebook_config.py

With following content:

  import os   os.umask(0o002) 

Newly created files will be writable by the group.

like image 192
Marian Schubert Avatar answered Oct 16 '22 21:10

Marian Schubert