O padrão da ACL não está sendo obedecido na cópia sobre o NFS

3

Eu tenho uma caixa Arch Linux que tem uma pasta de um servidor Ubuntu montada via NFS. Eu configurei uma Lista de Controle de Acesso na pasta no servidor, de forma que os novos arquivos tenham suas permissões definidas -rwx-r-x--- .

user1@ubuntu:~$ getfacl home/user2/shared/
# file: home/user2/shared/
# owner: user2
# group: remoteusers
user::rwx
group::r-x
other::---
default:user::rwx
default:user:user2:rwx
default:group::r-x
default:group:remoteusers:r-x
default:mask::rwx
default:other::---

Se eu criar um arquivo, as permissões serão definidas corretamente:

userA@arch:~$ touch ubuntuNFS/test.txt

userA@arch:~$ ls -la ubuntuNFS
-rw-r----- 1 ########## ##########    0 Nov 13  2013 test.txt

Mas se eu copiar um arquivo, o grupo não receberá nenhuma permissão:

userA@arch:~$ cp Videos/video.mp4 ubuntuNFS/

userA@arch:~$ ls -la ubuntuNFS
-rw------- 1 ########## ##########    0 Nov 13  2013 video.mp4
-rw-r----- 1 ########## ##########    0 Nov 13  2013 test.txt

Por que o cp não obedece aos padrões da ACL?

    
por embedded.kyle 13.11.2013 / 23:24

2 respostas

2

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.

Referências

por 13.11.2013 / 23:31
1

Uma possível solução é forçar o umask a preservar a ACL .

Dar aos usuários que precisam compartilhar os mesmos direitos de proprietário e grupo e definir o bit SGID na pasta compartilhada, aplicando os direitos corretos à pasta para permitir o compartilhamento pelo grupo.

Em outras palavras, fazer a mesma configuração para compartilhar uma pasta por um grupo como se nenhuma ACL estivesse em vigor.

    
por 13.11.2013 / 23:53

Tags