Лучшая практика запуска образов контейнеров от имени другого пользователя

Лучшая практика запуска образов контейнеров от имени другого пользователя

Я использую Kubernetes и хотел бы запустить контейнер как пользователь без прав root.

Если я пишу свой собственный Dockerfile, я могу useradd, chmod 777, и запустить с помощью docker --user <username>.

Однако в некоторых случаях список файлов, которые необходимо отредактировать, chmodможет быть длинным и неизвестным, что делает процесс утомительным, а также может со временем меняться и приводить к ошибкам, которые обнаруживаются только во время выполнения.

Есть ли лучшая практика? Как бы вы обрабатывали папки типа /var/logи /var/run? Один из вариантов — touch/mkdir и использовать setfacl.

Самый простой — просто chmod 777 -R /var/log.

Но даст ли это контейнеру 777доступ и на хосте? Как это сопоставляется, когда у контейнера один набор разрешений, а у хоста другой?

решение1

Использование chmod 777в принципе никогда не является правильным решением. Выясните, как правильно установить разрешения. Разрешения должны быть почти всегда минимально возможными, чтобы достичь вашей цели.

То, как вы это сделаете, во многом зависит от контекста конкретного изображения и того, какое программное обеспечение вы используете.

Но предоставит ли это контейнеру 777 доступ к хосту?

Зависит от того, является ли путь, разрешения которого вы меняете, монтированием bind-bind.

решение2

Я нашел это актуальным для моего собственного вопроса:

Overlay file system монтирует нижний каталог, а затем присоединяет верхний каталог к ​​объединенной точке монтирования. Когда процесс записывает новый файл в объединенный каталог, новый файл записывается в верхний каталог. Когда процесс изменяет существующий файл в нижнем каталоге, ядро ​​копирует файл из нижнего каталога в верхний каталог и позволяет процессу изменять файл в верхнем каталоге.

Таким образом chown, наложение (верхний) каталога не должно оказывать никакого влияния на хостовый (нижний) каталог.

Но я думаю, что chmod 777можно разрешить другим пользователям получать доступ к файловой системе оверлея на хосте.

Связанный контент