Forum Linux.redhat Mapping Posix ACL -> NFSv4 ACL over NFSv4

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
3
oct.
2014

Bonjour,

merci d'avance à ceux qui liront ce post. Il s'agit d'un phénomène étrange, long à expliquer et pas de manière aisée.

Je rencontre actuellement un problème de mapping entre des ACL Posix et des ACL NFSv4 over NFSv3.

configuration:

*Serveur RH 6,5 *
NFSv3+4.
acl-2.2.49-6
nfs4-acl-tools-0.3.3-6

fichier exports : /nfsshare *(rw,sync,root_squash)
arborescence complète :
/nfsshare/rep_usergrp1
/nfsshare/rep_usergrp2

ACL Posix misent en place sur /nfsshare
group:groupuser1:r-x
group:groupuser2:r-x

ACL Posix misent en place sur /nfsshare/rep_usergrp1
group:groupuser1:rwx
group:groupuser2:r-x
default:group:groupuser1:rwx
default:group:groupuser2:r-x

ACL Posix misent en place sur /nfsshare/rep_usergrp2
group:groupuser1:r-x
group:groupuser2:rwx
default:group:groupuser1:r-x
default:group:groupuser2:rwx

id user1 -> groupuser1
id user10 -> groupuser1
id user2 -> groupuser2

*Client RH 6,5 *
NFSv3+4.
acl-2.2.49-6
nfs4-acl-tools-0.3.3-6

id user1 -> groupuser1
id user10 -> groupuser1
id user2 -> groupuser2

cas de test 1 :
Depuis le client, avec l'utilisateur "user1" j'effectue une montage NFSv3 dans /mnt. J'obtiens donc /mnt/rep_usergrp1 et /mnt/rep_usergrp2. La commande getfacl sur /mnt/rep_usergrp1 et /mnt/rep_usergrp2 permet de constater que les ACL sont bien présentent et correctes.

/mnt

group:groupuser1:r-x
group:groupuser2:r-x

/mnt/rep_usergrp1
group:groupuser1:rwx
group:groupuser2:r-x
default:group:groupuser1:rwx
default:group:groupuser2:r-x

/mnt/rep_usergrp2
group:groupuser1:r-x
group:groupuser2:rwx
default:group:groupuser1:r-x
default:group:groupuser2:rwx

Dans le répertoire /mnt/rep_usergrp1 je créé un fichier texte.txt et un répertoire rep1. Les droits sur ces deux éléments ont bien été hérités du répertoire parent.

/mnt/rep_usergrp1/texte1.txt
group:groupuser1:rwx#effective:rw-
group:groupuser2:r-x#effective:r--

/mnt/rep_usergrp1/rep1
group:groupuser1:rwx
group:groupuser2:r-x
default:group:groupuser1:rwx
default:group:groupuser2:r-x

Je démonte la ressource NFSv3 pour la remonter en NFSv3 mais avec l'utilisateur "user10". Vu que user10 et user1 font partis du même groupe, pas de problème pour modifier ce fichier texte, créer un répertoire dans /mnt/rep_usergrp1/rep1 etc…

Je démonte la ressource NFSv3 à nouveau pour la remonter en NFSv4 avec "user10". Vu que c'est un point de montage NFSv4 la commande nfs4_getfacl me permet de lire les ACL qui sont de la forment :

/mnt
A:g:groupuser1@domainnfs:rxtcy
A:g:groupuser2@domainnfs:rxtcy

/mnt/rep_usergrp1/rep1
A:g:groupuser1@domainnfs:rwaDxtcy
A:g:groupuser1@domainnfs:rxtcy
A:fdig:g:groupuser1@domainnfs:rwaDxtcy
A:fdig:g:groupuser2@domainnfs:rxtcy

Les droits sont bien mappé dans la norme ACL NFSv4. Je n'ai donc pas de problème pour modifier le fichier texte, créer un répertoire dans /mnt/rep_usergrp1/rep1 etc… avec "user10"

cas de test 2 :
Depuis le client, avec l'utilisateur "user1" j'effectue une montage NFSv4 dans /mnt. J'obtiens donc /mnt/rep_usergrp1 et /mnt/rep_usergrp2. La commande nfs4_getfacl sur /mnt/rep_usergrp1 et /mnt/rep_usergrp2 permet de constater que les ACL sont bien présentent et correctes même transposées dans la norme ACL NFsv4.

Dans le répertoire /mnt/rep_usergrp1 je créé un fichier texte.txt et un répertoire rep1. A la suite de ces deux actions, je lance la commande nfs4_getfacl.

nfs4_getfacl /mnt
A:g:groupuser1@domainnfs:rxtcy
A:g:groupuser2@domainnfs:rxtcy

-->OK Mapping de droit OK

nfs4_getfacl /mnt/rep_usergrp1/texte1.txt

/mnt/rep_usergrp1/texte1.txt
A:g:groupuser1@domainnfs:rtcy
A:g:groupuser2@domainnfs:rtcy

-->KO Mapping de droit KO. Les personnes du groupes groupuser1 n'ont qu'un droit de lecture sur le fichier. Il devrait être rw (rwaDxtcy en mapping ACL NFSv4). L'héritage du répertoire parent ne s'effectue pas correctement.

nfs4_getfacl /mnt/rep_usergrp1/rep1
A:g:groupuser1@domainnfs:rxtcy
A:g:groupuser1@domainnfs:rxtcy
A:fdig:g:groupuser1@domainnfs:rwaDxtcy
A:fdig:g:groupuser2@domainnfs:rxtcy

-->KO Mapping de droit KO. Les personnes du groupe groupuser1 n'ont pas de droit de créer quoi que ce soit dans le répertoire rep1 (rxtcy). Ca devrait être rwaDxtcy.

Effectivement par la suite lorsque que j'effectue un montage NFSv3 ou 4 avec l'utilisateur "user10" ce dernier ne possède ni le droit de modifier le fichier texte et pas non plus le droit de créer un répertoire dans /mnt/rep_usergrp1/rep1

conclusion
Le mapping ACL Posix over NFSv4 n'est pas consistant.

Quelqu'un a t-il déjà rencontré cet étonnant phénomène ?
S'agit-il d'un bug ou d'une limite de mapping (best effort)?
Comment faites-vous pour utiliser des ACL Posix (sur redhat)en couplant des montage NFSv3 et 4 ?
Faut-il oublier le NFSv4 en utilisant des ACL Posix ?

Merci

  • # Faut oublier

    Posté par  (site web personnel) . Évalué à 3.

    Faut-il oublier le NFSv4 en utilisant des ACL Posix ?

    Perso, je dirais oui. Les mapping ACLs NFSv4/Posix sont foireux, il faudrait un FS qui supporte les ACL NFSv4 et rester cohérent en utilisant celles-ci sur le FS et sur le partage réseau, mais y'a pas.

    http://wiki.linux-nfs.org/wiki/index.php/ACLs

    Et ça e**** beaucoup de monde (cf recherches google sur ce thème).

    Ceci dit, si quelqu'un arrive avec une solution qui marche… je suis preneur (mais pas encore vu).

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

    • [^] # Re: Faut oublier

      Posté par  . Évalué à 2.

      Merci de ton avis.

      Effectivement je constate que le mapping n'est pas consistant. Actuellement, effectivement seul le système de fichier XFS supporte les ACL NFSv4. Un patch expérimental est en cours pour le support par ext4 mais ça reste expérimental. En même temps le jour ou cela sera opérationnel, le problème se posera toujours. l'utilisation d'ACL NFSv4 obligera à forcer les montages en NFSv4.

  • # Faut oublier

    Posté par  . Évalué à 1.

    Lolop,

    Comment fais-tu (si tu as ce cas de figure) pour appliquer une matrice de droit digne de ce nom sur une arbo Linux (ext4) ?

    ++

    • [^] # Re: Faut oublier

      Posté par  (site web personnel) . Évalué à 2.

      J'ai fait avec ACLs posix, sur du ext4 et sur du xfs, et dans certains cas ça casse et il faut re-appliquer les ACLs (je suis en environnement Linux + MacOS + Windows, avec des accès aux données via NFS et via CIFS).

      J'ai testé récemment avec du droit unix de base + sticky bit sur le répertoire (pour un cas simple de partage de fichier pour groupe de travail), là encore dans certains cas ça casse (tout ce qui est transfert de fichier avec préservation des droits).

      Je ne dis pas qu'il ne faut pas utiliser les ACLs, mais que le passage via NFS4 c'est pas ça (et à ce que j'ai pu en lire, ça risque de ne pas être ça avant longtemps).

      Ta conclusion "Le mapping ACL Posix over NFSv4 n'est pas consistant." est malheureusement vraie.

      Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

      • [^] # Re: Faut oublier

        Posté par  . Évalué à 1.

        Actuellement, il y a deux solutions.

        -Utilisation ACL posix + NFSv3 (on oublie le NFSv4).
        -Utilisation NFSv3 + v4 (on oublie les ACL).

        Je suis en environnement Linux (Redhat 4,5 et 6) + Windows. Ça me surprend tes casses de droits. Si je reste uniquement en CIFS + NFSv3 + ACL Posix, je ne rencontre aucun soucis.

      • [^] # Re: Faut oublier

        Posté par  . Évalué à 1.

        Lolop,

        Ok donc actuellement tu n'utilises pas non plus de NFSv4 puisque tu utilises des ACL Posix ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.