OneFS: Linux-kjerneoppdatering til NFS forårsaker feilslåtte tilgangsanrop

Summary: En oppdatering av NFS-kode (Network File System) i Linux-kjernen har endret virkemåten til tilgangsanrop som kontrollerer skrivetillatelser for bestemte OneFS-tillatelsessett. Denne endringen bringer Linux NFS og Server Message Block (SMB) atferd i tråd med hverandre, noe som gjør denne kontrollen konsekvent uavhengig av hvilken protokoll du bruker. ...

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

Etter en oppgradering av Linux-kjernen mislykkes tilgangskontrollene som tidligere lyktes, på kataloger der brukeren som får tilgang ikke har "delete_child"-tillatelser i en katalog som er involvert i arbeidsflyten. Dette kan valideres ved hjelp av Linux test kommando med -w flagg mot den samme katalogen; På gamle kjerneversjoner er returkoden fra denne kommandoen 0 mens i nyere kjerner er det 1.

Dette påvirker Red Hat- og Centos-klienter som går over fra versjon 7 til nyere utgivelser.

 

Cause

Denne endringen i virkemåten ble introdusert i Linux-hovedkjerne v4.13-rc2Denne hyperkoblingen tar deg til et nettsted utenfor Dell Technologies. under en refaktor av NFS-driverkoden. Men tilsynelatende sjekken var til stede som av hovedkjernen v3.7-rc1Denne hyperkoblingen tar deg til et nettsted utenfor Dell Technologies., og ble ikke riktig kalt.

Etter omfattende gjennomgang tror vi at både den nye Linux-kjernens oppførsel og vår oppførsel er riktig. Linuxen test kommando og access systemkall er begge basert på POSIX-standarden, som bare konseptualiserer:

  • LESE
  • SKRIVE
  • HENRETTE

Mens per rfc1813#section-3.3.4Denne hyperkoblingen tar deg til et nettsted utenfor Dell Technologies. og rfc7530#section-16.1Denne hyperkoblingen tar deg til et nettsted utenfor Dell Technologies.; NFS tillater mer detaljerte tillatelser, og konseptualiserer derfor:

  • LESE
  • MODIFISERE
  • TILFØYE
  • SLETT
  • HENRETTE

Med DELETE-tillatelsen definert som om en klient kan Delete an existing directory entry. Dette tilordnes direkte til delete_child i OneFS, og bør nektes under omstendigheter der klienten ikke har den tillatelsen. Legg også merke til; POSIX- og NFS-tillatelser stemmer ikke helt overens. POSIX WRITE inneholder alle konseptene i de separate tillatelsene NFS MODIFY, ADD og DELETE. Så når et POSIX-verktøy forsøker å sjekke "WRITE" -tillatelser, oversetter linux-kjernen den forespørselen om "WRITE" til "MODIFY and ADDD and DELETE"

Endelig er den nyere oppførselen mer i tråd med andre Linux-filsystemdrivere som også støtter dette tillatelsessettet. Hvis du for eksempel tester mot en SMB-fil med samme tillatelsessett, returneres også en feil når du kontrollerer POSIX WRITE med test kommandoen ved hjelp av -w flagg.
 

# 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

Både OneFS- og Linux-virkemåten i denne situasjonen er riktige, da arbeidsflyter som påvirkes av dette problemet, må gi delete_child Tillatelse til berørte brukere og grupper. Hvis for eksempel en katalog gir full tilgang til eierbruker og -gruppe, men fjerner delete_child Fra alle-tillatelsen kan de enten legge til denne tillatelsen for alle, eller de kan legge til en ekstra tilgangskontrolloppføring (ACE) for brukeren eller gruppen som ser problemer med tilgangskontrollisten (ACL) for direkte.

# 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

Det er også mulig å oppdatere Linux-kjernen for å tilbakestille oppførselen. Dette krever bygging av Linux-kjernen fra kilden etter oppdatering fs/nfs/dir.c Slik tar du ut NFS4_ACCESS_DELETE krav fra NFS_MAY_WRITE makro.

Før:

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

Etter:

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