OneFS: Aktualizacja jądra systemu plików NFS powoduje niepowodzenie wywołania dostępu

Summary: Aktualizacja kodu sieciowego systemu plików (NFS) w jądrze systemu Linux zmieniła zachowanie wywołań "access" sprawdzających uprawnienia "WRITE" dla określonych zestawów uprawnień OneFS. Ta zmiana sprawia, że zachowania systemu Linux NFS i bloku komunikatów serwera (SMB) są ze sobą zgodne, dzięki czemu ta kontrola jest spójna niezależnie od używanego protokołu. ...

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

Po uaktualnieniu jądra systemu Linux kontrole dostępu, które wcześniej zakończyły się powodzeniem, teraz kończą się niepowodzeniem w katalogach, w których użytkownik uzyskujący dostęp nie ma uprawnień "delete_child" w katalogu związanym z jego przepływem pracy. Można to sprawdzić za pomocą systemu Linux test polecenie za pomocą polecenia -w flaga dla tego samego katalogu; W starych wersjach jądra kod powrotny z tego polecenia to 0 podczas gdy w nowszych jądrach jest to 1.

Dotyczy to klientów Red Hat i Centos przechodzących z wersji 7 do nowszych wersji.

 

Cause

Ta zmiana zachowania została wprowadzona w głównym jądrze systemu Linux w wersji 4.13-rc2Kliknięcie tego hiperłącza powoduje wyświetlenie strony spoza witryny Dell Technologies. podczas refaktoryzacji kodu sterownika NFS. Jednak najwidoczniej check był obecny w głównym jądrze v3.7-rc1Kliknięcie tego hiperłącza powoduje wyświetlenie strony spoza witryny Dell Technologies. i nie był poprawnie wywoływany.

Po szczegółowym przeglądzie uważamy, że zarówno nowe zachowanie jądra Linuksa, jak i nasze zachowanie jest poprawne. Linux test komenda i access Wywołania systemowe są oparte na standardzie POSIX, który konceptualizuje jedynie:

  • CZYTAĆ
  • PISAĆ
  • WYKONAĆ

zgodnie z rfc1813#sekcja-3.3.4Kliknięcie tego hiperłącza powoduje wyświetlenie strony spoza witryny Dell Technologies. i rfc7530#sekcja-16.1Kliknięcie tego hiperłącza powoduje wyświetlenie strony spoza witryny Dell Technologies.; NFS umożliwia bardziej szczegółowe uprawnienia, a zatem konceptualizuje:

  • CZYTAĆ
  • MODYFIKOWAĆ
  • DOŁĄCZYĆ
  • DELETE
  • WYKONAĆ

Uprawnienie DELETE jest definiowane jako określa, czy klient może Delete an existing directory entry. To bezpośrednio odwzorowuje na delete_child w OneFS i powinny zostać odrzucone w okolicznościach, w których klient nie ma takiego uprawnienia. Zauważ również; Uprawnienia POSIX i NFS nie są dokładnie zgodne. POSIX WRITE zawiera wszystkie pojęcia w oddzielnych uprawnieniach NFS MODIFY, APPEND i DELETE. Tak więc, gdy narzędzie POSIX próbuje sprawdzić uprawnienia "WRITE", jądro Linuksa tłumaczy to żądanie "WRITE" na "MODIFY and APPEND and DELETE"

Wreszcie, nowsze zachowanie jest bardziej zgodne z innymi sterownikami systemu plików Linux, które również obsługują ten zestaw uprawnień. Na przykład testowanie na pliku SMB z tym samym zestawem uprawnień również zwraca błąd podczas sprawdzania POSIX WRITE z parametrem test za pomocą polecenia -w flaga.
 

# 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

Zachowania systemów OneFS i Linux w tej sytuacji są poprawne, ponieważ przepływy pracy, których dotyczy ten problem, muszą zapewniać delete_child Uprawnienia dla użytkowników i grup, których dotyczy problem. Jeśli na przykład katalog zapewnia pełny dostęp do swojego właściciela i grupy, ale usuwa delete_child z poziomu uprawnienia wszyscy mogą dodać to uprawnienie do wszystkich lub dodać dodatkowy wpis kontroli dostępu (ACE) dla użytkownika lub grupy, która widzi problemy bezpośrednio na liście kontroli dostępu (ACL).

# 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

Możliwe jest również zaktualizowanie jądra Linuksa, aby odwrócić to zachowanie. Wymaga to zbudowania jądra Linuksa ze źródeł po aktualizacji fs/nfs/dir.c Aby wymontować NFS4_ACCESS_DELETE wymóg wynikający z NFS_MAY_WRITE Makro.

Przed:

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

Po:

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