Примечание:Этот вопрос имеет прямое отношение кВот этоти в частностиэтот ответ, но это не дубликат.
Я хотел бы предоставить гостевому компьютеру общий доступ к папке на хосте, но при этом необходимо убедиться, что 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
Технически все, что доступно только для чтения на уровне хоста, должно оставаться доступным только для чтения и в контейнере.