Estamos executando uma loja Rocky Linux 8.9 (essencialmente RHEL 8.9) e recebi a tarefa de investigar ACLs em sistemas de arquivos montados via NFS. Também estamos usando FreeIPA/IdM.
Configurei uma máquina de teste, inscrevi-a no IdM, exportei um compartilhamento NFS e montei-a localmente, mas a parte ACL parece estar faltando:
[root@example ~]# cat /etc/exports
/export/ *(rw,acl,no_root_squash)
[root@example ~]# mount | grep /export
localhost:/export on /mnt type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,clientaddr=::1,local_lock=none,addr=::1)
[root@example ~]# cd /mnt/
[root@example mnt]# touch testfile
[root@example mnt]# getfacl testfile
# file: testfile
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@example mnt]# setfacl -m u:user:r testfile
setfacl: testfile: Operation not supported
Algumas perguntas:
- Foi entendido corretamente que eu deveria usar
getfacl
esetfacl
em vez de seus equivalentes nfs4_, já que tanto o cliente quanto o servidor são Linux/POSIX? - Eu preciso do idmapd? Eu tenho um serviço chamado nfs-idmapd em execução com sucesso.
- Li em algum lugar que
sec=sys
deveria ser substituídoseckrb5
durante a montagem.
ATUALIZAR:
Investiguei um pouco mais e tive um pequeno avanço: nfsv4_set*acl
funciona bem no compartilhamento NFS, desde que se use UIDs ou GIDs numéricos. É o acoplamento à IdM/Kerberos que está causando problemas.
O suporte para ACLs POSIX sobre NFS v4.2 foi adicionado no RHEL 8.4. Isso está documentado em https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/8.4_release_notes/index#enhancement_file-systems-and-storage no final desta seção (bug https: //bugzilla.redhat.com/show_bug.cgi?id=1888214 ):
Suporte para atributos estendidos do usuário por meio do protocolo NFSv4.2
Esta atualização adiciona suporte NFSv4.2 do lado do cliente e do lado do servidor para atributos estendidos do usuário (RFC 8276).
Isso inclui as seguintes extensões de protocolo:
Novas operações:
Novos códigos de erro:
Novo atributo:
O regular
set/getfacl
usa atributos estendidos, que de fato fazem parte do NFSv4.2, conforme descrito na resposta de @abbra https://serverfault.com/a/1158690/127530 . No entanto, o suporte ao xattr não é ACLs.Para usar ACLs sobre NFSv4 você deve usar os
nfs4_set/getfacl
comandos, que fazem parte donfs4-acl-tools
pacote.Rocky Linux (e Alma Linux) são continuações do CentOS, que é um fork do Red Hat Enterprise Linux, onde ACLs não estão disponíveis para NFSv4. O mesmo se aplica ao seu sistema Rocky Linux 8 e ainda é verdade no RHEL, Rocky, Alma 9.
https://access.redhat.com/solutions/23230
Existem utilitários que podem ser instalados através do
nfs4-acl-tools
pacote que funcionam de maneira semelhante. Os comandos são chamadosnfs4_setfacl
de `nfs4_getfacl' e permitem definir ACLs para grupos. Eu usei o GID abaixo.Mais informações estão aqui: https://access.redhat.com/solutions/3426621