天天看點

在Fedora中如何授予權限給使用者使用Docker

本文翻譯自Daniel J Walsh的一篇開源文章:http://opensource.com/business/14/10/docker-user-rights-fedora

在Docker-dev郵件清單,有人問有關描述了如何将使用者添加到Docker組的Fedora文檔。使用者希望讓他的使用者做一個Docker搜尋,試圖找到他們可以使用的鏡像。

從有關Fedora的docker安裝文檔:

授予使用者權限的使用Docker

Fedora的19和20随Docker0.11。如果你還在使用0.11版本的包已經更新到1.0的Fedora20,您将需要授予權Docker的使用者。

docker指令行工具,通過接觸被一群Docker擁有的套接字檔案/var/run/docker.sockdocker守護程序。其中一個必須是該組的成員,以便聯系docker-d程序。

幸運的是,這個檔案是有點錯了,你還需要将使用者添加到Docker組,以便他們使用Docker從非root帳戶。我希望所有的發行有這樣的政策。

在Fedora和RHEL我們對docker.sock以下權限:

# ls -l /run/docker.sock

 srw-rw----. 1 root docker 0 Sep 19 12:54

 /run/docker.sock

這意味着,隻有Docker組中的root使用者或使用者可以向此套接字。此外,由于Docker運作asdocker_t,SELinux的防止全密閉域連接配接到此docker.sock。

從Docker無授權控制

Docker目前沒有任何授權控制。如果你可以跟docker插座或Docker監聽網絡端口上,你可以談論它,你可以執行所有Docker指令。

例如,如果我添加“dwalsh”的Docker組我的機器上,我可以執行。

> docker run -ti --rm --privileged --net=host -v /:/host fedora /bin/sh

 # chroot /host

在這一點上你,或具有這些權限的任何使用者,都有你的系統上完全控制。

将使用者添加到該Docker組應被視為一樣加入:

USERNAME= ALL(ALL)NOPASSWD:ALL

到/ etc/ sudoers檔案。使用者運作任何應用程式在他的機器上能夠成為root,即使沒有他知道。我相信,一個更好更安全的解決方案是編寫腳本,允許使用者要允許通路。

cat /usr/bin/dockersearch

 #!/bin/sh

 docker search $@

然後設定sudo:

USERNAME ALL=(ALL) NOPASSWD: /usr/bin/dockersearch

我希望最終加入某種授權資料庫來Docker,讓管理者可以配置哪些指令,你會允許使用者執行,以及容器中,你可能會允許他們開始/停止。

首先消除執行Docker運作--privileged或Docker運作--cap,删除是在正确的方向邁出了一步的能力。但是,如果你看過我的其他職位,你知道,需要更多的工作要做,以使容器中包含。

作者最初釋出的www.projectatomic.io為“授予使用者權限在Fedora中使用Docker。”。

本文翻譯自Daniel J Walsh的一篇開源文章:http://opensource.com/business/14/10/docker-user-rights-fedora