systemd-nspawn: разрешения файловой системы для связанной папки

Как я уже сказал в комментарии env не соответствует требованиям, поскольку показывает только экспортированные переменные.

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

Самым простым решением является временное переключение в режим POSIX, в котором функции не считаются (своего рода) переменными:

set -o posix
set
set +o posix

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

В таком случае есть обходной путь:

(set -o posix;set)

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

2
21.09.2017, 11:40
1 ответ

AFAIK, -Uв основном несовместим с rw --bind. Из документов :

Note that when this option is used in combination with --private-users, the resulting mount points will be owned by the nobody user. That's because the mount and its files and directories continue to be owned by the relevant host users and groups, which do not exist in the container, and thus show up under the wildcard UID 65534 (nobody). If such bind mounts are created, it is recommended to make them read-only, using --bind-ro=.

Я использовал nspawn для создания контейнеров на основе Ubuntu -для сборки Yocto на моем хосте Arch Linux. Когда ядро ​​​​Arch включило CONFIG_USER_NS=y, мне нужно было установить PrivateUsers=offв моих файлах /etc/systemd/nspawn/foo.nspawn. (Кроме того, я добавляю пользователя с одним и тем же UID и в хост, и в контейнер, поэтому я могу Bind=получить к нему одинаковый доступ как в контейнере, так и в хосте.)

2
27.01.2020, 22:18

Теги

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