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

Riepilogo: 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. ...

Questo articolo si applica a Questo articolo non si applica a Questo articolo non è legato a un prodotto specifico. Non tutte le versioni del prodotto sono identificate in questo articolo.

Sintomi

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.

 

Causa

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

 

Risoluzione

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)

 

Prodotti interessati

PowerScale OneFS
Proprietà dell'articolo
Numero articolo: 000226868
Tipo di articolo: Solution
Ultima modifica: 16 lug 2024
Versione:  1
Trova risposta alle tue domande dagli altri utenti Dell
Support Services
Verifica che il dispositivo sia coperto dai Servizi di supporto.