Сначала немного информации о моей конфигурации:
pool/mydataset
принадлежавший user1
Теперь мне нужен один из контейнеров для доступа к файлам/папкам в pool/mydataset
. Я попробовал следующее:
user1
в контейнереОтредактированный pool/lxc/mycontainer/config
и добавил:
lxc.mount.entry = /pool/mydataset mnt/mydataset none rw,bind 0 0
Когда я запускаю контейнер, набор данных смонтирован, но ls -la /mnt/mydataset
на контейнерных шоу nobody:nogroup
вместо user1:user1
, что означает, что все файлы только для чтения.
Какая-либо идея, как получить корректные полномочия в смонтированном каталоге?
Если действительно mycontainer
непривилегированно, затем у его владельца не могло бы быть доступа к пути /pool/mydataset
. У пользователей в непривилегированных контейнерах есть свое смещение uid на хосте контейнерным владельцем uid, таким образом, user1
в контейнере не то же как user1
на хосте.
Можно проверить то, с чем пользователь на хосте владеет контейнером sudo ls -l /pool/lxc | grep mycontainer
(sudo
не мог бы требоваться, в зависимости от /pool/lxc
полномочия, но ls
должно быть достаточно безопасно работать как корень так или иначе. Продвижение, опустить sudo
где желательный, если полномочия делают это возможным). Например, я добираюсь
drwxr-xr-x 4 100000 100000 5 Apr 22 11:37 mycontainer
показ, что uid и ценуроз владельца контейнера 100000 (мы видим uid вместо имени, так как пользователь не существует на хосте).
Тест /pool/mydataset
полномочия с sudo ls -l /pool | grep mydataset
(или sudo ls -l /pool/mydataset
для его содержания).
Если Вы хотите, чтобы файлы были перезаписываемы из контейнера, просто необходимо удостовериться какой бы ни пользователь внутри mycontainer
Вы хотите смочь записать в /pool/mydataset
имеет полномочия сделать так на хосте. Например, root
на mycontainer
имеет uid 100000 на хосте, и если user1
в mycontainer
имеет uid 1001 (тест с id user1
из контейнера), затем на хосте его uid был бы 101001.
Вы могли бы сделать это, позволив всем на хосте записать в /pool/mydataset
с
sudo chmod -R o+w /pool/mydataset
(примечание: это добавит полномочия рекурсивно внутри /pool/mydataset
), или возможно лучше удостоверяться пользователи в группе user1
имейте полномочия записи (установите его рекурсивно с sudo chmod -R g+w /pool/mydataset
если не), то добавьте владельца контейнера для группировки user1
с
sudo usermod -a -G user1 <username>
(В моем случае выше, мы видели, что никакой пользователь на хосте не владеет контейнером, таким образом, мы должны сначала создать пользователя с uid и ценурозом 100000 с
adduser --no-create-home --uid 100000 --disabled-password --disabled-login <username>
Конечно, Вы могли бы хотеть дать полномочия только user1
в контейнере поэтому создайте пользователя с его хостом uid и добавьте это для группировки user1
на хосте, например, 101001.)
Можно также пойти ядерные и дать владение /pool/mydataset
кому: mycontainer
корень с
sudo chown -R 100000:100000 /pool/mydataset
но это могло смешать с другими пользователями на хосте, получающем доступ к данным.
После того как Вы сделали это, монтирование, которое Вы устанавливаете, должно позволить полномочия записи внутри mycontaier
, как желаемый.