Недавно у моей команды было шоу-шоу, и я представил свои выводы на Докере . Я объяснил, как вы можете установить Docker с помощью:
curl -sSL https://get.docker.com/ | sh
Затем я объяснил, что при этой установке вам нужно ставить перед всеми командами Docker префикс sudo
(например, sudo docker info
), если вы не запускаете:
sudo usermod -aG docker myUser
Как только вы это сделаете, вы можете просто запустить, скажем, docker info
.
Другой младший инженер спросил меня, как работает эта команда usermod
, и я объяснил это, как я понимаю пользователей / группы Linux:
docker
myUser
по умолчанию не является членом docker
, у него нет прав rwx, чтобы что-либо делать с двоичными файлами Docker sudo
, который дает вам разрешение root для данной команды или дает myUser
членство в группе docker
Когда я объяснил это так, старший инженер очень резко сказал мне, что я неправильно, и что « это немного сложнее, чем это. »
Поэтому я спрашиваю: не понимаю ли я здесь модель безопасности Linux, и правильный ли старший инженер? Если так, что я пропускаю (и что, черт возьми, "так сложно")? Или я прав, и в этом случае кто-то может указать мне какую-то убедительную документацию, чтобы доказать это?
Все двоичные файлы Докера установлены в системе, принадлежащей группе, названной докером
Неправильный. 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 не является по умолчанию членом докера, он не имеет никаких rwx полномочий сделать что-либо с двоичными файлами Докера
Двоичные файлы читаемы и исполняемы всеми.
Таким образом, решение состоит в том, чтобы или использовать sudo, который дает Вам корневое разрешение для данной команды, или дать myUser членство в группе докера
Услуги Докера используют сокет для прислушиваний к командам. Сокет обычно:
/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
по умолчанию.
Если Вы говорите о том, как безопасный Linux и Уязвимость, это может иметь да. Если я понимаю то, что Вы просите достаточно ясно, чтобы ответ для Вас был да, и мое объяснение состоит в том, что Linux независимо от распределения к моему знанию может заразиться вирусами как любая другая операционная система, зависящая, что Вы устанавливаете или нет. Возьмите Flash player для примеров даже на окнах, которые он дает многим дефектам безопасности в операционной системе, делающей это более уязвимый, чем прежде, когда это было только вне поля
при выполнении Linux без рабочего стола и всего, что другое необычное полномочие он будет, если я не ошибусь быть более безопасным, чем со всеми нашими любимыми приложениями, и такой я не знаю, помог ли мой ответ, но я надеюсь, что это сделало