В очередной раз в очередной статье попалось упоминание о том, "как запустить docker контейнер без sudo".

В самом деле, можно же сделать так, чтобы вместо ввода пароля просто написать "docker start ..." прямо под пользователем, и всё будет работать.
Для этого достаточно внести пользователя в группу docker любым удобным способом, хоть прямым редактированием файла /etc/group, и сделать это один раз.

А теперь - почему так не стоит делать:

Для начала - внесем таки пользователя в группу docker:
$ sudo vi /etc/group
/docker
shift-A username
:wq

Ну или "правильный" способ - sudo usermod -aG docker $USER

Перелогиниваемся - docker ps -a - прекрасно, вот наши контейнеры, можно запускать, создавать новые.
Не нужно больше противное sudo со своим "введите пароль". Удобно.

Лишний раз проверим, что мы по-прежнему простой юзер, которому не положены рутовые права:

$ ls -l /root
ls: cannot open directory '/root': Permission denied

Теперь создаем новый контейнер, ну например такой:

$ docker run -ti --name hack -v /root:/x debian
root@9ec4ae4e9277:/#

Теперь мы, зайдя как простой юзер, сидим внутри контейнера.
И проверяем:

# ls -l /x

Оп-па! Видим домашний каталог "настоящего" рута, можем там что-нибудь писать и менять, скажем, сделать себе удаленный доступ через .ssh/authorized_keys, или подмонтировать при создании контейнера любой другой интересный каталог, которого как юзер видеть не могли...

То есть простое добавление юзера в группу docker не только удобно, но и помогает обойти все эти пароли и права доступа.

Понятно, что если это ваша единоличная машина, и доступ к шеллу никто посторонний никогда не получит - всё это не проблема, но наверное не стоит так делать?

Вероятно, это можно как-то закрыть дополнительно, но "из коробки" оно как-то вот так работает...

Комментарии (6)