В очередной раз в очередной статье попалось упоминание о том, «как запустить 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 не только удобно, но и помогает обойти все эти пароли и права доступа.
Понятно, что если это ваша единоличная машина, и доступ к шеллу никто посторонний никогда не получит — всё это не проблема, но наверное не стоит так делать?
Вероятно, это можно как-то закрыть дополнительно, но «из коробки» оно как-то вот так работает…
ссылка на оригинал статьи https://habr.com/ru/articles/944664/
Добавить комментарий