В очередной раз в очередной статье попалось упоминание о том, "как запустить 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 не только удобно, но и помогает обойти все эти пароли и права доступа.
Понятно, что если это ваша единоличная машина, и доступ к шеллу никто посторонний никогда не получит - всё это не проблема, но наверное не стоит так делать?
Вероятно, это можно как-то закрыть дополнительно, но "из коробки" оно как-то вот так работает...