OneFS: A atualização do kernel do Linux para NFS causa falhas de chamada de "acesso"

Summary: Uma atualização do código do Network File System (NFS) no kernel do Linux alterou o comportamento das chamadas de "acesso" que verificam as permissões de "GRAVAÇÃO" em conjuntos de permissões específicos do OneFS. Essa alteração alinha os comportamentos do Linux NFS e do SMB (Server Message Block), tornando essa verificação consistente independentemente do protocolo que você está usando. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Após um upgrade do kernel Linux, as verificações de acesso que haviam sido bem-sucedidas anteriormente agora falham em diretórios nos quais o usuário de acesso não tem permissões "delete_child" em um diretório envolvido com seu fluxo de trabalho. Isso pode ser validado usando o Linux test com o comando -w sinalizar contra esse mesmo diretório; Em versões antigas do kernel, o código de retorno desse comando é 0 enquanto que em núcleos mais novos é 1.

Isso afeta os clients Red Hat e Centos que migram da versão 7 para versões mais recentes.

 

Cause

Essa mudança de comportamento foi introduzida no kernel v4.13-rc2Esse hiperlink direcionará você para um site fora da Dell Technologies. da linha principal do Linux durante uma refatoração do código do driver NFS. No entanto, aparentemente a verificação estava presente a partir do kernel principal v3.7-rc1Esse hiperlink direcionará você para um site fora da Dell Technologies., e não estava sendo chamada corretamente.

Após uma extensa revisão, acreditamos que tanto o novo comportamento do kernel Linux quanto o nosso comportamento estão corretos. O Linux test comando e access as chamadas do sistema são baseadas no padrão POSIX, que conceitua apenas:

  • LER
  • ESCREVER
  • EXECUTAR

Considerando que por rfc1813#section-3.3.4Esse hiperlink direcionará você para um site fora da Dell Technologies. e rfc7530#section-16.1Esse hiperlink direcionará você para um site fora da Dell Technologies.; O NFS permite permissões mais granulares e, portanto, conceitua:

  • LER
  • MODIFICAR
  • ACRESCENTAR
  • DELETE
  • EXECUTAR

Com a permissão DELETE sendo definida como se um client pode Delete an existing directory entry. Isso mapeia diretamente para delete_child no OneFS, e deve ser negado em circunstâncias em que o cliente não tem essa permissão. Observe também; As permissões POSIX e NFS não correspondem exatamente. O POSIX WRITE inclui todos os conceitos nas permissões separadas de NFS MODIFY, APPEND e DELETE. Assim, quando uma ferramenta POSIX tenta verificar as permissões de "GRAVAÇÃO", o kernel do Linux está traduzindo essa solicitação de "GRAVAÇÃO" em "MODIFICAR e ANEXAR e EXCLUIR"

Finalmente, o comportamento mais recente está mais alinhado com outros drivers de sistema de arquivos do Linux que também oferecem suporte a esse conjunto de permissões. Por exemplo, o teste em um servidor de dados SMB com o mesmo conjunto de permissões também retorna uma falha ao verificar POSIX WRITE com o test usando o comando -w bandeira.
 

# Old kernel
ancons@ubuntu:~$ uname -r
4.13.0-041300rc1-generic
ancons@ubuntu:~$ sudo mount -o vers=4,proto=tcp 10.20.0.181:/ifs /mnt/nfs
ancons@ubuntu:~$ sudo mount -o user=admin,pass=a //10.20.0.181/ifs /mnt/smb
ancons@ubuntu:~$ test -w /mnt/nfs/posix; echo "$?"
0
ancons@ubuntu:~$ test -w /mnt/smb/posix; echo "$?"
1

# New kernel
ancons@ubuntu:~$ uname -r
4.14.0-041400rc4-generic
ancons@ubuntu:~$ sudo mount -o vers=4,proto=tcp 10.20.0.181:/ifs /mnt/nfs
ancons@ubuntu:~$ sudo mount -o user=admin,pass=a //10.20.0.181/ifs /mnt/smb
ancons@ubuntu:~$ test -w /mnt/nfs/posix; echo "$?"
1
ancons@ubuntu:~$ test -w /mnt/smb/posix; echo "$?"
1

 

Resolution

Os comportamentos do OneFS e do Linux nessa circunstância estão corretos, pois os fluxos de trabalho afetados por esse problema devem fornecer o delete_child Permissão para usuários e grupos afetados. Por exemplo, se um diretório fornece acesso total ao usuário e grupo proprietário, mas remove delete_child na permissão everyone, eles podem adicionar essa permissão a todos ou podem adicionar uma ACE (Access Control Entry, entrada de controle de acesso) adicional para o usuário ou grupo que está enfrentando problemas na lista de controle de acesso (ACL) do diretamente.

# ACL that only allows root to delete child items
p980-1-1# ls -led /ifs/posix-delete_child
drwxrwxrwx +   2 root  wheel  0 Jun 18 14:20 /ifs/posix-delete_child
 OWNER: user:root
 GROUP: group:wheel
 0: user:root allow dir_gen_read,dir_gen_write,dir_gen_execute,std_write_dac,delete_child
 1: group:wheel allow dir_gen_read,dir_gen_write,dir_gen_execute,delete_child
 2: everyone allow dir_gen_read,dir_gen_write,dir_gen_execute

# ACL that allows a specific additional group to delete child items
p980-1-1# ls -led /ifs/posix-delete_child
drwxrwxrwx +   2 root  wheel  0 Jun 18 14:20 /ifs/posix-delete_child
 OWNER: user:root
 GROUP: group:wheel
 0: group:admin allow dir_gen_read,dir_gen_write,dir_gen_execute,delete_child
 1: user:root allow dir_gen_read,dir_gen_write,dir_gen_execute,std_write_dac,delete_child
 2: group:wheel allow dir_gen_read,dir_gen_write,dir_gen_execute,delete_child
 3: everyone allow dir_gen_read,dir_gen_write,dir_gen_execute

# ACL that allows everyone to delete child items
p980-1-1# ls -led /ifs/posix-delete_child
drwxrwxrwx +   2 root  wheel  0 Jun 18 14:20 /ifs/posix-delete_child
 OWNER: user:root
 GROUP: group:wheel
 0: user:root allow dir_gen_read,dir_gen_write,dir_gen_execute,std_write_dac,delete_child
 1: group:wheel allow dir_gen_read,dir_gen_write,dir_gen_execute,delete_child
 2: everyone allow dir_gen_read,dir_gen_write,dir_gen_execute,delete_child

Também é possível atualizar o kernel do Linux para reverter o comportamento. Isso requer a compilação do kernel Linux a partir do código fonte após a atualização fs/nfs/dir.c para remover o NFS4_ACCESS_DELETE requisito do NFS_MAY_WRITE macro.

Antes:

#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
		NFS4_ACCESS_EXTEND | \
		NFS4_ACCESS_DELETE)

Depois:

#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
		NFS4_ACCESS_EXTEND)

 

Affected Products

PowerScale OneFS
Article Properties
Article Number: 000226868
Article Type: Solution
Last Modified: 16 July 2024
Version:  1
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.