Se, de fato, mycontainer
não for privilegiado, seu proprietário poderá não ter acesso ao caminho /pool/mydataset
. Os usuários em contêineres não privilegiados têm seu deslocamento uid no host pelo uid do contêiner-proprietário, portanto user1
dentro do contêiner não é o mesmo que user1
no host.
-
Você pode verificar qual usuário no host possui o contêiner com
sudo ls -l /pool/lxc | grep mycontainer
(sudo
pode não ser necessário, dependendo das permissões de/pool/lxc
, masls
deve ser seguro o suficiente para ser executado como raiz de qualquer forma No futuro, omitirsudo
, quando desejável, se as permissões tornarem isso possível). Por exemplo, eu recebodrwxr-xr-x 4 100000 100000 5 Apr 22 11:37 mycontainer
mostrando que o uid e gid do proprietário do contêiner é 100000 (vemos um uid em vez de um nome, pois o usuário não existe no host).
-
Teste as permissões de
/pool/mydataset
comsudo ls -l /pool | grep mydataset
(ousudo ls -l /pool/mydataset
para seu conteúdo).Se você deseja que os arquivos sejam graváveis a partir do contêiner, basta garantir que o usuário dentro de
mycontainer
que você queira gravar em/pool/mydataset
tenha permissões para fazê-lo no host. Por exemplo,root
onmycontainer
tem uid 100000 no host, e seuser1
inmycontainer
tiver uid 1001 (teste comid user1
de dentro do contêiner ), então no host será uid seria 101001.
Você pode fazer isso permitindo que todos no host gravem em /pool/mydataset
com
sudo chmod -R o+w /pool/mydataset
(note: isso adicionará permissões recursivamente dentro de /pool/mydataset
), ou talvez melhor para garantir que os usuários do grupo user1
tenham permissões de gravação (defina recursivamente com sudo chmod -R g+w /pool/mydataset
se não) e adicione o proprietário do container para agrupar user1
com
sudo usermod -a -G user1 <username>
(No meu caso acima, vimos que nenhum usuário no host possui o container, então devemos primeiro criar um usuário com uid e gid 100000 com
adduser --no-create-home --uid 100000 --disabled-password --disabled-login <username>
Claro, você pode querer dar permissões somente a user1
dentro do container, então crie um usuário com seu host uid e adicione-o ao grupo user1
no host, por exemplo, 101001 .)
Você também pode se tornar nuclear e dar a propriedade de /pool/mydataset
à raiz de mycontainer
com
sudo chown -R 100000:100000 /pool/mydataset
mas isso poderia mexer com outros usuários no host acessando os dados.
Depois de fazer isso, a montagem que você definir deverá permitir permissões de gravação dentro de mycontaier
, conforme desejado.