Монтировать папку хоста в гостевую систему с помощью LXC 2.x, но сделать ее доступной только для чтения?

Монтировать папку хоста в гостевую систему с помощью LXC 2.x, но сделать ее доступной только для чтения?

Примечание:Этот вопрос имеет прямое отношение кВот этоти в частностиэтот ответ, но это не дубликат.

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

В моем случае папка — /toolchains, как на хосте, так и на госте. И она содержит ряд цепочек инструментов на основе GCC, используемых для нацеливания на различные платформы.

Теперь сам процесс обмена тривиален:

lxc config device add CONTAINER toolchains disk source=/toolchains path=toolchains

Технически это похоже на bind-mount. Однако внутри контейнера перемонтирование для того, чтобы сделать его read-only, не удается:

# mount -o remount,ro /toolchains
mount: cannot mount /dev/sda1 read-only

К сожалению, это не обеспечивает достаточного уровня детализации.

Для пущей убедительности я также попробовал эту альтернативу:

# mount -o remount,ro,bind /toolchains
mount: cannot mount /dev/sda1 read-only

который был упомянут в mount(8)разделе mount --bind,ro foo foo...

Какие у меня есть варианты, чтобы добиться того, что я хочу? То есть, предоставить гостевой папке общий доступ только для чтения. Стоит ли мне использовать здесь какой-то union FS или мой единственный реальный шанс получить монтирование только для чтения — 1.) использовать общий ресурс CIFS или 2.) использовать какой-то хук для привязки-монтирования папки хоста через команду mountс хоста в гостевой root?

Я использую LXC 2.20.

решение1

Что произойдет, если вы смонтируете свой каталог только для чтения на хосте, а затем предоставите к нему общий доступ с контейнером LXC?

mount --bind /toolchains /toolchains-ro
mount -o remount,ro,bind /toolchains-ro
lxc config device add CONTAINER toolchains disk source=/toolchains-ro path=toolchains

Технически все, что доступно только для чтения на уровне хоста, должно оставаться доступным только для чтения и в контейнере.

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