Como permitir que contêineres Proxmox LXC específicos montem compartilhamentos NFS na rede?

0

Esta questão é muito semelhante a Como consertar ”mount.nfs: acesso negado…“ ao tentar montar um compartilhamento NFS exportado por uma máquina Proxmox 5? .

Em um contêiner Proxmox LXC, estou tentando montar um compartilhamento NFS localizado em uma máquina física diferente na rede. Em /etc/fstab eu tenho esta linha:

192.168.0.4:/mnt/Pool1/homes     /home     nfs     auto,rw,hard     0 0

A execução de mount /home falha com a seguinte saída:

mount.nfs: access denied by server while mounting 192.168.0.4:/mnt/Pool1/homes

Saída de mount -v /home :

mount.nfs: timeout set for Sun Jun 17 15:29:02 2018
mount.nfs: trying text-based options 'hard,vers=4.2,addr=192.168.0.4,clientaddr=192.168.0.166'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.0.4:/mnt/Pool1/homes

Sempre que executo o comando mount , uma linha é adicionada a /var/log/messages , como esta:

Jun 17 15:26:47 userserver-01 kernel: [  256.620770] audit: type=1400 audit(1529249207.168:19): apparmor="DENIED" operation="mount" info="failed type match" error=-13 profile="lxc-container-default-cgns" name="/home/" pid=2938 comm="mount.nfs" fstype="nfs" srcname="192.168.0.4:/mnt/Pool1/homes"

Obviamente, o Proxmox usa o AppArmor e o AppArmor nega a operação de montagem do NFS ( apparmor="DENIED" ). Parece que o AppArmor está usando o perfil lxc-container-default-cgns (o arquivo de log mostra profile="lxc-container-default-cgns" ). Eu encontrei esse perfil em /etc/apparmor.d/lxc/lxc-default-cgns .

Suponho que eu possa editar /etc/apparmor.d/lxc/lxc-default-cgns e executar as alterações necessárias para permitir o NFS. No entanto, isso permitiria o NFS para todos contêineres. É possível permitir o NFS somente para contêineres específicos ?

    
por myrdd 17.06.2018 / 17:38

1 resposta

1

Sim, é possível. Basta criar um novo perfil (baseado em lxc-container-default-cgns ) e usá-lo para os contêineres específicos. Então, primeiro corra

cp /etc/apparmor.d/lxc/lxc-default-cgns /etc/apparmor.d/lxc/lxc-default-with-nfs

Em seguida, edite o novo arquivo /etc/apparmor.d/lxc/lxc-default-with-nfs :

  • substitua profile lxc-container-default-cgns por profile lxc-container-default-with-nfs
  • coloque a configuração do NFS (veja abaixo) logo antes do colchete de fechamento ( } )

Configuração do NFS

Escreva

  mount fstype=nfs*,
  mount fstype=rpc_pipefs,

ou (sendo mais explícito)

  mount fstype=nfs,
  mount fstype=nfs4,
  mount fstype=nfsd,
  mount fstype=rpc_pipefs,

e finalmente execute service apparmor reload .

Use o novo perfil

Edite /etc/pve/lxc/${container_id}.conf e anexe esta linha:

lxc.apparmor.profile: lxc-container-default-with-nfs

Em seguida, pare o contêiner e inicie-o novamente. assim:

pct stop ${container_id} && pct start ${container_id}

Agora a montagem de compartilhamentos NFS deve funcionar.

    
por 17.06.2018 / 17:38