本文翻譯自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