2017-02-17 88 views
0

我有2台电脑,一个使用的是Fedora。当我在Fedora上使用这个命令时:拒绝码头容器来写主机的文件系统

docker run -ti -v /tmp/test:/host/tmp/test ubuntu /bin/bash 

我无法从我的主机写入/读取文件。 这是我想要的行为

问题是:用ubuntu的时候我用的是同样的命令。容器可以读/写主机上的每个文件。我不想要这个。

我认为Fedora SELINUX正在保护我的系统。我如何使用AppArmor来做到这一点?

我做了很多的研究在互联网上,但我只找到有关如何允许主机的文件系统写主题... /:

在此先感谢。

最好的问候,

编辑

电脑是免费使用,所以我无法控制用户如何执行搬运工人运行。我需要来自主机和apparmor守护进程的保护。

+1

你有一个AppArmor配置文件,将拒绝写入文件系统?如果是这样,你可以使用[this:](https://docs.docker.com/engine/security/apparmor/)docker run --rm -it --security-opt apparmor = your_profile hello-world' – jrbeverly

+0

作为此外,这个[项目](https://github.com/jessfraz/bane)可能对您有用。特别是[this](https://github.com/jessfraz/bane/blob/master/docker-nginx-sample)apparmor配置文件拒绝文件访问和特定的命令工具 – jrbeverly

+0

我忘了写它。但这些计算机是开放的接口,所以我无法控制用户将如何执行码头运行 –

回答

1

一种选择是,以纪念绑定安装为只读:

docker run -ti -v /tmp/test:/host/tmp/test:ro ubuntu /bin/bash 
+1

这也具有可移植到其他Docker环境(其中selinux/apparmor可能无法在给定设置上使用)的优势。 –

+0

或...不要以root身份运行容器进程,并通过传统方法控制主机上的访问。依靠容器根访问行为是很麻烦的。 – user2105103

+1

只读绑定挂载不是容器的一项功能,它是内核的一项功能。这就是说,对于一个真正安全的系统,你可以这样做:1.将它mount为只读,2.以非root用户身份运行容器,并通过文件权限*和*拒绝访问。3.使用SELinux/AppArmor防止擅自行动 – mwp