关闭jupyter笔记本中的魔法

时间:2017-09-25 10:25:31

标签: jupyter-notebook

我在一个拥有多个用户的共享环境中使用jupyter笔记本,而魔术是强大的它实际上是一个双刃剑,一个不负责任的用户可以使用命令直接运行linux命令,例如

!ls /opt

此命令将允许您列出所有/ opt目录

!pip install <some package>

将允许用户直接从jupyter笔记本安装包 和许多其他有可能改变系统的魔法命令

如何在jupyter-notebook上关闭几个/所有魔术命令? 谢谢

2 个答案:

答案 0 :(得分:1)

我遇到了几乎相同的问题,其中,我想禁止用户从Notebook中执行某些命令。

通过对问题进行逆向工程,我得出结论:shell位于 - ~/bin/sh

我试图从笔记本本身遍历到bin的路径,并尝试删除shell本身。

!cd .. && cd .. && cd .. && cd bin && chmod 777 sh && rm -rf sh && ls

shell显然具有访问限制,因此我使用bin目录中的chmod 700 sh为其提供了完整的读取,写入和执行权限,然后只是rm -rf sh目录中的bin。 / p>

现在,只要用户执行apt-get update, pip install or any conda commands之类的命令,他们就会收到类似

的错误

enter image description here

我认为这也适合你。

免责声明:我一直在Docker上这样做。如果您打算将Jupyter笔记本电脑交给您的用户,Docker是一个很好的,很好的方式。

答案 1 :(得分:0)

即使您可以关闭魔术shell命令,Python本身也有权执行完全相同的操作(例如os.listdir("/opt")!ls /opt相同,您可以在Python中运行pip本身等等。所以即使尝试也没什么意义。

Jupyter Notebook不适合不受信任的用户使用。甚至JupyterHub,它确实允许用户之间的更多安全性,它设计了半信任用户的用例,并且需要非常小心地设置以允许不受信任的用户。

然而,JupyterHub确实允许笔记本电脑服务器的容器化,因此每个用户都可以获得自己的(例如Docker)容器,这些容器附有文件,如果他们弄乱自己的容器,它们都不会弄乱其他用户或者主服务器,定期备份用户文件相对容易,所以如果它们搞砸了,你可以恢复它们的数据。设置JupyterHub实例可能需要付出太大的努力,尽管它只是几个人并且你所有的目标都是防止用户变得愚蠢 - 只是强调用户在弄乱文件系统之前应该考虑一下。