Контейнер Podman без root: доступ к внешним томам затруднен

Я хочу получить доступ к каталогам в хост-системе из контейнера podman без root. При использовании внешних томов с контейнерами без рута podman у пользователя, который обращается к внешним томам, есть subuid и subgid пользователя, который вызвал podman. Какой идентификатор пользователя зависит от диапазона вспомогательных идентификаторов вызывающего пользователя и внутреннего пользователя в контейнере OCI. Я нашел единственный способ предоставить этому субпользователю доступ к внешним томам (помимо того, что сделать папку доступной для записи всем в хост-системе) - это открыть каталог непосредственно для этого идентификатора субпользователя. Есть ли лучший способ сделать это, чтобы не проверять вручную / etc / subgid , а также пользователя в контейнере?

1
задан 1 March 2021 в 10:48
1 ответ

Podman 3.1.0 (выпущен в марте 2021 г.) представил новый суффикс : U для параметра командной строки - volume .

Цитата из справочной страницы :

Суффикс: U указывает Podman использовать правильный UID и GID хоста на основе UID и GID в контейнере, чтобы рекурсивно изменить владельца и группу исходный объем.

Альтернативное решение

Вместо смены владельца вы можете сопоставить UID контейнера с UID хоста, который в настоящее время владеет файлами в томе. Параметры командной строки для этого: - uidmap и - gidmap :

Параметр - uidmap позволяет пользователю отображать UID контейнеров для UID хоста. UID контейнера не отображаются напрямую на UID хоста. Вместо этого отображение происходит в два этапа:

UID контейнера -> промежуточный UID -> UID хоста

Первый этап отображения можно настроить с помощью - uidmap . amount указывает количество последовательных UID, которые будут отображены.

Если, например, amount равно 4, первый шаг сопоставления будет выглядеть так:

UID контейнера промежуточный UID
container_uid intermediate_uid
container_uid + 1 intermediate_uid + 1
container_uid + 2 intermediate_uid + 2
container_uid + 3 intermediate_uid + 3

Второй шаг отображения выводится podman из содержимого файла / etc / subuid и UID пользователя, запускающего podman.

Второй этап отображения:

промежуточный UID UID хоста
0 UID для пользователя, запускающего podman
1 1-й SUBUID из / etc / subuid
2 2-й СУБЮИД из / etc / subuid
3 3-й СУБЮИД из / etc / subuid
n-ый n-ый СУБЮИД из / etc / subuid

(SUBUID, используемые из / etc / subuid , взяты из диапазонов, принадлежащих пользователю, запустившему podman)

1
ответ дан 24 April 2021 в 00:49

Теги

Похожие вопросы