2017-02-17 76 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