OneFS: NFS'ye yönelik Linux çekirdeği güncelleştirmesi 'erişim' çağrısı hatalarına neden oluyor

Resumo: Linux çekirdeğindeki Ağ Dosya Sistemi (NFS) kodunda yapılan bir güncelleştirme, belirli OneFS izin kümeleri için 'WRITE' izinlerini denetleyen 'erişim' çağrılarının davranışını değiştirdi. Bu değişiklik, Linux NFS ve Sunucu İleti Bloğu (SMB) davranışlarını birbiriyle uyumlu hale getirerek, kullandığınız protokolden bağımsız olarak bu denetimin tutarlı olmasını sağlar. ...

Este artigo aplica-se a Este artigo não se aplica a Este artigo não está vinculado a nenhum produto específico. Nem todas as versões do produto estão identificadas neste artigo.

Sintomas

Bir Linux çekirdeği yükseltmesinden sonra, daha önce başarılı olan erişim denetimleri artık erişen kullanıcının iş akışıyla ilgili bir dizinde "delete_child" izinlerine sahip olmadığı dizinlerde başarısız olur. Bu, Linux kullanılarak doğrulanabilir test komutu ile -w aynı dizine karşı bayrak; Eski çekirdek sürümlerinde, bu komutun dönüş kodu şöyledir 0 oysa daha yeni çekirdeklerde 1.

Bu, sürüm 7'den daha yeni sürümlere geçiş yapan Red Hat ve Centos istemcilerini etkiler.

 

Causa

Davranıştaki bu değişiklik, NFS sürücü kodunun yeniden düzenlenmesi sırasında Linux ana hat çekirdeği v4.13-rc2'deBu köprü bağlantı sizi Dell Technologies dışındaki bir web sitesine yönlendirir. kullanıma sunulmuştur. Ancak görünüşe göre kontrol, ana hat çekirdeği v3.7-rc1'denBu köprü bağlantı sizi Dell Technologies dışındaki bir web sitesine yönlendirir. itibaren mevcuttu ve doğru şekilde çağrılmıyordu.

Kapsamlı bir incelemeden sonra, hem yeni Linux çekirdeği davranışının hem de davranışımızın doğru olduğuna inanıyoruz. Linux test komut ve access sistem çağrılarının her ikisi de yalnızca aşağıdakileri kavramsallaştıran POSIX standardına dayanmaktadır:

  • OKUMAK
  • YAZMAK
  • YÜRÜTMEK

rfc1813#bölüm-3.3.4Bu köprü bağlantı sizi Dell Technologies dışındaki bir web sitesine yönlendirir. ve rfc7530#bölüm-16.1'eBu köprü bağlantı sizi Dell Technologies dışındaki bir web sitesine yönlendirir. göre; NFS daha ayrıntılı izinlere izin verir ve bu nedenle şunları kavramsallaştırır:

  • OKUMAK
  • DEĞİŞTİRMEK
  • EKLEME
  • DELETE
  • YÜRÜTMEK

DELETE izni, bir istemcinin şunları yapıp yapamayacağı olarak tanımlanır Delete an existing directory entry. Bu doğrudan şuna eşlenir: delete_child OneFS'de yer alır ve istemcinin bu izne sahip olmadığı durumlarda reddedilmelidir. Ayrıca dikkat edin; POSIX ve NFS izinleri tam olarak eşleşmiyor. POSIX WRITE, ayrı NFS DEĞIŞTIRME, EKLEME ve SİLME izinlerindeki tüm kavramları içerir. Bu nedenle, bir POSIX aracı "YAZMA" izinlerini kontrol etmeye çalıştığında, linux çekirdeği bu "YAZMA" isteğini "DEĞIŞTIR ve EKLE ve SİL" olarak çevirir

Son olarak, yeni davranış, bu izin kümesini destekleyen diğer Linux dosya sistemi sürücüleriyle daha uyumludur. Örneğin, aynı izin kümesine sahip bir SMB dosyalayıcısına karşı test yapmak, POSIX WRITE ile kontrol edilirken de bir hata döndürür. test komutunu kullanarak -w bayrak.
 

# 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

 

Resolução

Bu sorundan etkilenen iş akışlarının sağlaması gerektiğinden bu durumda hem OneFS hem de Linux davranışları doğrudur. delete_child Etkilenen kullanıcılar ve gruplar için izin. Örneğin, bir dizin sahip kullanıcısına ve grubuna tam erişim sağlıyor ancak delete_child herkes izninden, bu izni herkese ekleyebilir veya sorunları gören kullanıcı veya grup için doğrudan Erişim Denetimi Listesine (ACL) ek bir Erişim Denetimi Girişi (ACE) ekleyebilirler.

# 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

Davranışı geri döndürmek için Linux çekirdeğini güncelleştirmek de mümkündür. Bu, güncellemeden sonra Linux çekirdeğinin kaynaktan oluşturulmasını gerektirir fs/nfs/dir.c Kaldırmak için NFS4_ACCESS_DELETE gereksinimi NFS_MAY_WRITE Makro.

Önce:

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

Sonra:

#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
		NFS4_ACCESS_EXTEND)

 

Produtos afetados

PowerScale OneFS
Propriedades do artigo
Número do artigo: 000226868
Tipo de artigo: Solution
Último modificado: 16 jul. 2024
Versão:  1
Encontre as respostas de outros usuários da Dell para suas perguntas.
Serviços de suporte
Verifique se o dispositivo está coberto pelos serviços de suporte.