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(sudopode não ser necessário, dependendo das permissões de/pool/lxc, maslsdeve 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 mycontainermostrando 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/mydatasetcomsudo ls -l /pool | grep mydataset(ousudo ls -l /pool/mydatasetpara 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
mycontainerque você queira gravar em/pool/mydatasettenha permissões para fazê-lo no host. Por exemplo,rootonmycontainertem uid 100000 no host, e seuser1inmycontainertiver uid 1001 (teste comid user1de 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.