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

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

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

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.

 

Causa

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

 

Risoluzione

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)

 

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.