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

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

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

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.

 

Causa

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

 

Risoluzione

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)

 

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.