Acho que as ACLs são esporadicamente suportadas de várias maneiras no NFS. Veja este artigo no site do projeto NFS.
Se esse não for o problema, eu ficaria extremamente desconfiado de cp
. Eu me lembro de um Q & A sobre o comando cp
não copiando totalmente as ACLs, independentemente do tipo de montagem de destino.
Acredito que foi este U & Q & A intitulado: Usando setfacl para permitir que membros do grupo escrevam em qualquer arquivo em um diretório , o que me levou a este SF Q & A intitulado: Por que o cp não respeita as ACLs? .
Ironicamente, o nosso @Gilles escreveu uma resposta sobre o SF Q & A, o que explica porque o cp
não suporta a propagação de ACLs. Eu acredito que esta ainda é a situação atual!
trecho de resposta @Gilles
If cp creates the destination file, it replicates the permissions of the source file, except for the bits that are set in the umask. This is standard behavior (see e.g. step 3.b in the Single Unix v3 (POSIX 2001) specification.
Why was cp designed this way? Because there are many cases where this behavior is desirable, for example preserving a file's privacy when the original permissions are restrictive, and preserving executability is almost always the right thing to do. It is however unfortunate that not even GNU cp has an option to turn this behavior off.
Most copy tools (e.g. pax, rsync) behave in the same way. You can ensure the file will be created with the default permission by decoupling the source from the destination, for example with cat foo/baz.
Exemplo
Eu configurei o seguinte arquivo, afile
e adicionei uma ACL a ele.
$ touch afile
$ setfacl -m user:sam:rwx,group:users:rwx afile
Agora temos:
$ getfacl afile
# file: afile
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--
Quando copio esses arquivos para um compartilhamento NFSv3:
$ cp afile ~sam/
$ getfacl ~sam/afile
getfacl: Removing leading '/' from absolute path names
# file: home/sam/afile
# owner: root
# group: root
user::rw-
group::rwx
other::r--
ACLs foram perdidas. Tentando usar as opções --preserve
para cp
:
$ cp --preserve afile ~sam/
cp: preserving permissions for '/home/sam/afile': Operation not supported
cp: preserving ACL for '/home/sam/afile': Operation not supported
Ativando o ACL no NFS
Ativar a ACL na montagem NFS parece não ter efeito:
mulder:/export/r1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,acl,rsize=16384,wsize=16384,addr=192.168.1.1)
$ cp --preserve afile ~sam/
cp: preserving permissions for '/home/sam/afile': Operation not supported
cp: preserving ACL for '/home/sam/afile': Operation not supported
O mesmo HDD trabalhado
Curiosamente, a opção --preserve
funcionou ao copiar o arquivo localmente na mesma unidade montada em EXT4.
$ cp --preserve afile afile2
$ getfacl afile2
# file: afile2
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--
Caminho a seguir?
Na minha pesquisa e experimentação, parece que qualquer coisa abaixo do NFSv4 não suporta ACLs. O comando cp
parece capaz de preservar as ACLs, desde que o sistema de arquivos subjacente suporte ACLs.
Eu encontrei este artigo: Projetos: Implementação de Referência de Código Aberto NFS Versão 4 , que discute o uso de ACLs dentro do NFSv4. Então, eu esperaria que copiar ACLs para um compartilhamento NFSv4 pudesse ser possível, mas não acredito que seja possível usar NFSv2 ou NFSv3.