OneFS: Linux-kernelupdate naar NFS veroorzaakt fouten bij 'access'-aanroep

Summary: Een update van de NFS-code (Network File System) in de Linux-kernel heeft het gedrag gewijzigd van 'access'-aanroepen waarbij 'WRITE'-machtigingen worden ingeschakeld voor specifieke OneFS-machtigingensets. Deze wijziging brengt het gedrag van Linux NFS en Server Message Block (SMB) op elkaar af, waardoor deze controle consistent wordt, ongeacht het protocol dat u gebruikt. ...

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

Na een upgrade van de Linux-kernel mislukken toegangscontroles die eerder waren gelukt nu op directory's waarin de gebruiker die toegang heeft geen "delete_child"-machtigingen heeft in een directory die betrokken is bij hun workflow. Dit kan worden gevalideerd met behulp van de test opdracht met de -w markering tegen diezelfde directory; Op oude kernelversies is de retourcode van die opdracht 0 terwijl het bij nieuwere kernels 1te installeren.

Dit is van invloed op Red Hat- en Centos-clients die van versie 7 naar nieuwere releases gaan.

 

Cause

Deze gedragswijziging is geïntroduceerd in Linux mainline kernel v4.13-rc2Deze hyperlink leidt u naar een website buiten Dell Technologies. tijdens een refactor van de NFS-drivercode. Blijkbaar was de controle echter aanwezig vanaf mainline kernel v3.7-rc1Deze hyperlink leidt u naar een website buiten Dell Technologies. en werd deze niet correct aangeroepen.

Na uitgebreid onderzoek zijn we van mening dat zowel het gedrag van de nieuwe Linux-kernel als ons gedrag correct zijn. De linux test Commando en access systeemaanroepen zijn beide gebaseerd op de POSIX-standaard, die alleen het volgende conceptualiseert:

  • LEZEN
  • SCHRIJVEN
  • EXECUTEREN

Overwegende dat per rfc1813#section-3.3.4Deze hyperlink leidt u naar een website buiten Dell Technologies. en rfc7530#section-16.1Deze hyperlink leidt u naar een website buiten Dell Technologies.; NFS staat meer gedetailleerde machtigingen toe en conceptualiseert daarom:

  • LEZEN
  • MODIFICEREN
  • TOEVOEGEN
  • VERWIJDEREN
  • EXECUTEREN

Waarbij de DELETE-machtiging wordt gedefinieerd als de vraag of een client Delete an existing directory entryte installeren. Dit komt rechtstreeks overeen met delete_child in OneFS, en moet worden geweigerd in omstandigheden waarin de klant die toestemming niet heeft. Let ook op; POSIX- en NFS-machtigingen komen niet precies overeen. POSIX WRITE bevat alle concepten in de afzonderlijke NFS MODIFY, APPEND en DELETE machtigingen. Dus wanneer een POSIX-tool probeert om "WRITE"-machtigingen te controleren, vertaalt de linux-kernel dat verzoek voor "WRITE" in "MODIFY and APPEND and DELETE"

Ten slotte is het nieuwere gedrag meer in lijn met andere Linux-bestandssysteemdrivers die deze machtigingenset ook ondersteunen. Testen tegen een SMB-filer met dezelfde machtigingenset retourneert bijvoorbeeld ook een fout bij het controleren van POSIX WRITE met de test opdracht met behulp van de -w vlag.
 

# 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

Zowel het OneFS- als het Linux-gedrag in dit geval zijn correct, omdat dergelijke workflows die door dit probleem worden beïnvloed, de volgende moeten bieden: delete_child Rechten voor getroffen gebruikers en groepen. Dit kan bijvoorbeeld het geval zijn als een directory volledige toegang biedt tot de eigenaar, gebruiker en groep, maar delete_child van de machtiging Iedereen kunnen ze die machtiging aan iedereen toevoegen, of ze kunnen een extra toegangscontrole-invoer (ACE) toevoegen voor de gebruiker of groep die problemen ondervindt aan de toegangscontrolelijst (ACL) van de rechtstreeks.

# 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

Het is ook mogelijk om de Linux-kernel bij te werken om het gedrag ongedaan te maken. Hiervoor moet de Linux-kernel worden gebouwd vanaf de broncode na de update fs/nfs/dir.c om de NFS4_ACCESS_DELETE vereiste van de NFS_MAY_WRITE macro.

Vóór:

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

Na:

#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.