
私のチームは最近ショーアンドテルを開催し、私は調査結果を発表しました。ドッカーDocker をインストールする方法について説明しました。
curl -sSL https://get.docker.com/ | sh
次に、このインストールでは、以下を実行しない限り、すべての Docker コマンドの前にsudo
(例)を付ける必要があることを説明しました。sudo docker info
sudo usermod -aG docker myUser
これを実行すると、次のように実行できるようになりますdocker info
。
別のジュニア エンジニアがこのコマンドの動作について尋ねたのでusermod
、Linux ユーザー/グループについて理解している限りで説明しました。
- すべてのDockerバイナリは、次のグループに属するシステムにインストールされます。
docker
myUser
はデフォルトでは のメンバーではないためdocker
、Dockerバイナリに対して何かを行うためのrwx権限はありません。- したがって、解決策は、
sudo
指定されたコマンドのルート権限を与えるか、グループmyUser
にメンバーシップを与えることです。docker
私がこのように説明すると、上級エンジニアが突然、私が間違っていると言い、「それはそれよりも少し複雑です。「
そこで質問します。私は Linux のセキュリティ モデルを誤解しているのでしょうか。また、上級エンジニアの言うことは正しいのでしょうか。もしそうなら、私が見逃しているものは何でしょうか (そして、いったい何が「複雑」なのでしょうか)。あるいは、私が正しいのであれば、それを証明する確かなドキュメントを誰か教えてくれませんか。
答え1
すべてのDockerバイナリはdockerというグループに属するシステムにインストールされます。
不正解です。docker
バイナリの所有者は次の通りですroot:root
:
$ stat `which docker`
File: ‘/usr/bin/docker’
Size: 16296881 Blocks: 31832 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 143202 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
myUserはデフォルトではdockerのメンバーではないため、Dockerバイナリを操作するためのrwx権限はありません。
バイナリは誰でも読み取り、実行可能です。
したがって、解決策は、指定されたコマンドのルート権限を与えるsudoを使用するか、myUserにdockerグループのメンバーシップを与えることです。
Docker サービスはソケットを使用してコマンドをリッスンします。ソケットは通常、次のようになります。
- 所在地
/var/run/docker.sock
- が所有している
root:docker
- グループ書き込み可能だが、他のユーザーによる読み取りや書き込みは不可:
例えば:
$ stat /var/run/docker.sock
File: ‘/var/run/docker.sock’
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 10h/16d Inode: 13619 Links: 1
Access: (0660/srw-rw----) Uid: ( 0/ root) Gid: ( 997/ docker)
それグループのメンバーになるとコマンドdocker
を実行できるようになるのはそのためですdocker
。
サービスのパラメータとして使用するグループを指定できることに注意してくださいdocker
。man docker
-G, --group=""
Group to assign the unix socket specified by -H when running in dae‐
mon mode.
use '' (the empty string) to disable setting of a group. Default is
docker.
だから、持っているになるはずですが、デフォルトではdocker
です。docker
答え2
Linux の安全性と脆弱性についておっしゃっているのであれば、答えは「はい」です。ご質問の趣旨を十分に理解しているのであれば、答えは「はい」です。私の説明では、ディストリビューションに関係なく、Linux は他のオペレーティング システムと同様に、インストールの有無に応じてウイルスに感染する可能性があります。たとえば、Windows 上の Flash Player はオペレーティング システムに多くのセキュリティ上の欠陥をもたらし、箱から出したばかりの頃よりも脆弱になっています。
デスクトップやその他の特別な権限なしでLinuxを実行した場合、私の間違いでなければ、お気に入りのアプリなどをすべて使用した場合よりも安全になります。私の回答が役に立ったかどうかはわかりませんが、役に立ったことを願っています。