OneFS: Linux-ytimen päivitys NFS:ään aiheuttaa pääsykutsuvirheitä

Summary: Linux-ytimen NFS (Network File System) -koodin päivitys on muuttanut tiettyjen OneFS-käyttöoikeusjoukkojen kirjoitusoikeuksia tarkistavien access-kutsujen toimintaa. Tämä muutos tuo Linux NFS:n ja SMB (Server Message Block) -toiminnot linjaan, mikä tekee tarkistuksesta yhdenmukaisen riippumatta siitä, mitä protokollaa käytät. ...

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

Linux-ytimen päivityksen jälkeen aiemmin onnistuneet käyttöoikeustarkistukset epäonnistuvat nyt hakemistoissa, joissa käyttäjällä ei ole delete_child-oikeuksia työnkulkuun liittyvään hakemistoon. Tämä voidaan vahvistaa Linuxilla test komento, jossa on -w merkitse samaa hakemistoa vastaan; Vanhoissa ytimen versioissa kyseisen komennon palautuskoodi on 0 kun taas uudemmissa ytimissä se on 1.

Tämä vaikuttaa Red Hat- ja Centos-asiakkaiden siirtymiseen versiosta 7 uudempiin julkaisuihin.

 

Cause

Tämä käyttäytymisen muutos otettiin käyttöön Linuxin päälinjan ytimessä v4.13-rc2Tämä hyperlinkki johtaa Dell Technologiesin ulkopuoliseen sivustoon. NFS-ajurikoodin refaktoroinnin aikana. Ilmeisesti tarkistus oli kuitenkin olemassa päälinjan ytimestä v3.7-rc1Tämä hyperlinkki johtaa Dell Technologiesin ulkopuoliseen sivustoon., eikä sitä kutsuttu oikein.

Laajan tarkastelun jälkeen uskomme, että sekä uuden Linux-ytimen käyttäytyminen että käyttäytymisemme ovat oikeita. Linux test komento ja access Molemmat järjestelmäkutsut perustuvat POSIX-standardiin, joka käsittää vain:

  • LUKEA
  • KIRJOITTAA
  • SUORITTAA

Kun taas rfc1813#section-3.3.4Tämä hyperlinkki johtaa Dell Technologiesin ulkopuoliseen sivustoon. ja rfc7530#section-16.1Tämä hyperlinkki johtaa Dell Technologiesin ulkopuoliseen sivustoon.; NFS sallii yksityiskohtaisemmat käyttöoikeudet ja käsitteellistää siksi:

  • LUKEA
  • MUOKATA
  • LIITTÄÄ
  • DELETE
  • SUORITTAA

Kun DELETE-oikeus määritellään sen mukaan, voiko asiakas Delete an existing directory entry. Tämä kartoittaa suoraan delete_child OneFS:ssä, ja se on evättävä olosuhteissa, joissa asiakkaalla ei ole kyseistä lupaa. Huomaa myös; POSIX- ja NFS-käyttöoikeudet eivät täsmää tarkalleen. POSIX WRITE sisältää kaikki erillisten NFS-muokkaus-, liittämis- ja POISTO-oikeuksien käsitteet. Joten kun POSIX-työkalu yrittää tarkistaa "WRITE"-oikeudet, linux-ydin kääntää "WRITE"-pyynnön muotoon "MODIFY and APPEND and DELETE"

Lopuksi, uudempi toiminta vastaa paremmin muita Linux-tiedostojärjestelmäohjaimia, jotka myös tukevat tätä käyttöoikeusjoukkoa. Esimerkiksi testaus SMB-arkistoijalla, jolla on sama käyttöoikeusjoukko, palauttaa myös virheen, kun POSIX WRITE tarkistetaan test komento komennolla -w lippu.
 

# 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

Tässä tapauksessa sekä OneFS- että Linux-toiminta on oikein, koska työnkuluissa, joihin ongelma vaikuttaa, on annettava delete_child käyttöoikeudet käyttäjille ja ryhmille, joita ongelma koskee. Esimerkiksi jos hakemisto tarjoaa omistajalle, käyttäjälle ja ryhmälle täydet käyttöoikeudet, mutta poistaa delete_child Kaikki-oikeudesta he voivat joko lisätä kyseisen käyttöoikeuden kaikille tai lisätä ACE (Access Control Entry) -merkinnän käyttäjälle tai ryhmälle, jolla on ongelmia suoraan käyttöoikeusluettelossa (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

On myös mahdollista päivittää Linux-ydin toiminnan palauttamiseksi. Tämä edellyttää Linux-ytimen rakentamista lähdekoodista päivityksen jälkeen fs/nfs/dir.c Voit poistaa NFS4_ACCESS_DELETE vaatimus NFS_MAY_WRITE makro.

Ennen:

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

Jälkeen:

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