ACLs quebradas quando o “zfs envia” um instantâneo de uma máquina Linux para o Solaris

3

Estou executando o ZFS em uma máquina Ubuntu que hospeda nossos diretórios pessoais. O conjunto tem a seguinte configuração de ACL:

# zfs get all homes | grep acl
homes  aclinherit            restricted             default
homes  acltype               off                    default

Aqui eu tenho dois arquivos regulares com as mesmas permissões:

# getfacl 1.txt 2.txt 
# file: 1.txt
# owner: usr
# group: grp
user::rw-
group::r--
other::r--

# file: 2.txt
# owner: usr
# group: grp
user::rw-
group::r--
other::r--

Todas as noites, envio um instantâneo incremental para uma máquina executando o ZFS no Solaris 8

zfs send -i homes@$PREV_BACKUP homes@$CURRENT_BACKUP | \
   ssh solarishost zfs receive -vFd homes_backup

O sistema de arquivos no host Solaris possui as seguintes configurações de ACL:

# zfs get all homes_backup | grep acl
homes_backup  aclmode               passthrough            local
homes_backup  aclinherit            restricted             default

Quando inspeciono os arquivos no snapshot no host Solaris, vejo que o mais recente (1.txt) não possui nenhum conjunto de ACLs:

# /usr/bin/ls -v 1.txt 2.txt 
-rw-r--r--   1 2428     2000        2170 Oct 12 13:42 1.txt
-rw-r--r--   1 2428     2000        2146 May 31  2013 2.txt
     0:owner@:execute:deny
     1:owner@:read_data/write_data/append_data/write_xattr/write_attributes
         /write_acl/write_owner:allow
     2:group@:write_data/append_data/execute:deny
     3:group@:read_data:allow
     4:everyone@:write_data/append_data/write_xattr/execute/write_attributes
         /write_acl/write_owner:deny
     5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Agora, quando eu monto o instantâneo solarishost em um cliente Ubuntu, posso ver os arquivos e eles parecem ter permissões idênticas, mas não consigo ler 1.txt :

# cat 2.txt >/dev/null; echo $?
0
# cat 1.txt >/dev/null; echo $?
cat: 1.txt: Permission denied
1

Mais uma vez, a aparência é a mesma para o cliente Ubuntu:

# getfacl 1.txt 2.txt
# file: 1.txt
# owner: usr
# group: grp
user::rw-
group::r--
mask::rwx
other::r--

# file: 2.txt
# owner: usr
# group: grp
user::rw-
group::r--
mask::rwx
other::r--

# ls -l 1.txt 2.txt 
-rw-r--r--+ 1 usr grp 2.2K Oct 12 13:42 1.txt
-rw-r--r--+ 1 usr grp 2.1K May 31  2013 2.txt

Minha pergunta agora é : como configurar a criação de instantâneos do Ubuntu para o Solaris, de modo que as ACLs no host Solaris permitam que os usuários montem os instantâneos e leiam seus próprios arquivos? Parece que todos os arquivos recentemente salvos foram afetados.

    
por Pavel 23.01.2016 / 18:25

1 resposta

3

O Solaris 11 ZFS usa ACLs NFSv4 em vez de ACLs POSIX. O Linux não tem ACLs do NFSv4 no ZFS, e parece que nunca será. Embora as ACLs NFSv4 sejam um superconjunto de ACLs POSIX, parece que somente o Solaris pode transferir / traduzir ACLs POSIX para NFSv4 durante a movimentação / cópia de arquivos.

Portanto, concluindo, não vejo uma maneira de preservar a ACL em instantâneos do ZFS. Use o Linux - > Esquema Linux, ou use Solaris - > Solaris, Solaris - > FreeBSD ou FreeBSD - > Esquema do FreeBSD (ambos possuem ACLs NFSv4).

    
por 24.01.2016 / 12:22