Если вы вообще можете запустить какую-либо команду Docker, вы можете легко получить root-права на хост:
docker run --rm -v /:/host busybox \
cat /host/etc/shadow
Кроме того, контейнеры Docker часто запускаются с правами root в пределах своего собственного пространства контейнеров, что означает, что любые части файловой системы хоста, которые вы выбираете для показа в них, могут вносить произвольные изменения в качестве произвольных идентификаторов пользователя. Вы можете использовать опцию docker run -u
, чтобы выбрать другой идентификатор пользователя, но вы можете выбрать любой идентификатор пользователя, даже тот, который принадлежит другому пользователю в общей системе.
Очень разумно использовать sudo
как способ получения привилегий root для вещей, которые в этом нуждаются, и это типичная стандартная конфигурация Docker.
В конце дня единственными реальными воротами на этом пути являются разрешения Unix для файла /var/run/docker.sock
. Это часто режим 0660, принадлежащий выделенной группе docker
. Если вы не возражаете против того, чтобы ваш обычный пользователь мог читать и записывать произвольные файлы хоста вообще без какого-либо контроля, вы можете добавить себя в эту группу. Это часто подходит для чего-то вроде ноутбука разработчика; но что-то вроде производственной системы заслуживает некоторого реального рассмотрения ее последствий для безопасности.