Как предотвратить процесс внутри контейнера, чтобы он стал корневым?

#docker #containers

Вопрос:

Когда я запущу docker run -it -u someuser ubuntu контейнер, он запустится с некоторыми привилегиями пользователя. Однако тот же самый процесс может просто запуститься su , чтобы стать корневым. Если бы у меня было несколько томов из моей хост-системы, подключенных к этому контейнеру, контейнер, вероятно, смог бы выполнять некоторые операции корневого уровня на хосте. Как это предотвратить? Должен ли я удалить su файл из образа контейнера?

Комментарии:

1. Если вы боитесь записи, вы можете установить тома только для чтения.

2. Вы не можете «просто запустить su «; он запросит пароль пользователя, а он не задан в стандартных образах Docker. Я вижу, что файлы Dockerfile часто проходят мимо, поэтому они изо всех сил стараются установить (очень простой, записанный docker history ) пароль пользователя и предоставить пользователю неограниченные sudo разрешения, что на самом деле имеет проблемы с безопасностью, которые вы описываете; но вам нужно специально сделать это в своем файле Dockerfile, чтобы иметь эту уязвимость.

3. Спасибо @DavidMaze. Похоже, у меня был опыт работы с одним из этих плохо подготовленных изображений, и я сделал неправильные выводы.