OneFS: Linux-kerneopdatering til NFS forårsager 'adgangsopkaldsfejl'

摘要: En opdatering til NFS-koden (Network File System) i Linux-kernen har ændret adfærden for "adgangs"-kald, der kontrollerer "WRITE"-tilladelser for specifikke OneFS-tilladelsessæt. Denne ændring bringer adfærden i Linux NFS og Server Message Block (SMB) på linje med hinanden, hvilket gør denne kontrol konsistent, uanset hvilken protokol du bruger. ...

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

Efter en Linux-kerneopgradering mislykkes adgangskontroller, der tidligere var lykkedes, nu på mapper, hvor den bruger, der får adgang, ikke har "delete_child"-tilladelser til en mappe, der er involveret i deres arbejdsgang. Dette kan valideres ved hjælp af Linux test Kommandér med -w flag mod samme mappe På gamle kerneversioner er returkoden fra denne kommando 0 der henviser til, at det i nyere kerner er 1.

Dette påvirker Red Hat- og Centos-klienter, der flytter fra version 7 til nyere udgivelser.

 

原因

Denne ændring i funktionsmåde blev introduceret i Linux-hovedlinjekerne v4.13-rc2Dette hyperlink fører dig til et websted uden for Dell Technologies. under en omstrukturering af NFS-driverkoden. Men tilsyneladende var kontrollen til stede fra hovedlinjekernen v3.7-rc1Dette hyperlink fører dig til et websted uden for Dell Technologies. og blev ikke korrekt kaldt.

Efter omfattende gennemgang mener vi, at både den nye Linux-kerneadfærd og vores adfærd er korrekt. Linux test kommando og access Systemkald er begge baseret på POSIX-standarden, som kun konceptualiserer:

  • LÆSE
  • SKRIVE
  • UDFØRE

der henviser til, at i henhold til rfc1813#sektion-3.3.4Dette hyperlink fører dig til et websted uden for Dell Technologies. og rfc7530#sektion-16.1Dette hyperlink fører dig til et websted uden for Dell Technologies.; NFS tillader mere detaljerede tilladelser og konceptualiserer derfor:

  • LÆSE
  • MODIFICERE
  • TILFØJE
  • SLETTE
  • UDFØRE

Når tilladelsen SLET defineres som, hvorvidt en klient kan Delete an existing directory entry. Dette er direkte knyttet til delete_child i OneFS, og bør nægtes under omstændigheder, hvor klienten ikke har denne tilladelse. Bemærk også; POSIX- og NFS-tilladelser stemmer ikke nøjagtigt overens. POSIX WRITE indeholder alle begreberne i de separate tilladelser NFS MODIFY, ADD og DELETE. Så når et POSIX-værktøj forsøger at kontrollere "WRITE" -tilladelser, oversætter linuxkernen denne anmodning om "WRITE" til "MODIFY and ADD and DELETE"

Endelig er den nyere adfærd mere på linje med andre Linux-filsystemdrivere, der også understøtter dette tilladelsessæt. Hvis du f.eks. tester mod en SMB-fil med det samme tilladelsessæt, vises der også en fejl ved kontrol af POSIX WRITE med test Kommando ved hjælp af -w flag.
 

# 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

 

解决方案

Både OneFS- og Linux-funktionsmåderne under disse omstændigheder er korrekte, da sådanne arbejdsprocesser, der påvirkes af dette problem, skal give delete_child tilladelse til berørte brugere og grupper. Hvis et katalog f.eks. giver fuld adgang til ejerbrugeren og gruppen, men fjerner delete_child Fra tilladelsen Alle kan de enten føje denne tilladelse til alle, eller de kan tilføje en ekstra adgangskontrolpost (ACE) for den bruger eller gruppe, der oplever problemer, på adgangskontrollisten (ACL) for den 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å muligt at opdatere Linux-kernen for at ændre adfærden. Dette kræver, at Linux-kernen bygges fra kilden efter opdatering fs/nfs/dir.c for at fjerne NFS4_ACCESS_DELETE Krav fra NFS_MAY_WRITE makro.

Før:

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

Efter:

#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
		NFS4_ACCESS_EXTEND)

 

受影响的产品

PowerScale OneFS
文章属性
文章编号: 000226868
文章类型: Solution
上次修改时间: 16 7月 2024
版本:  1
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。