Forum Linux.général Problème de déplacement de fichiers de ext4 vers fat32 / exfat

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
3
22
avr.
2021

Bonjour à tou(te)s,

Petite présentation de la situation :
- un ordinateur familial, 4 comptes utilisateurs, sous Mageia 8 64b Plasma (belle réussite au passage, bravo à l'équipe !)
- les 4 comptes utilisateurs sous /home dans un SSD formaté en ext4
- un disque dur d'archives /mnt/archives formaté en exfat (autrefois fat32) pour qu'il n'y ai pas de droits et que tous les utilisateurs y aient accès facilement (et aussi historiquement parce qu'il était partagé avec feu Windows)

Problème :
- on copie (avec Dolphin) des fichiers de ext4 vers exfat, puis on efface les fichiers de départ, ça marche !
- mais si on déplace les fichiers, ça marche mal, on a souvent des erreurs, soit "accès refusé" ou "impossible de modifier les droits d'accès". Les fichiers de départs sont encore visibles sous Dolphin, mais si on rafraichi, on voit qu'en fait ils ont bien été supprimés. C'est comme si Dolphin après avoir été averti de la fin de la copie supprimait les fichiers de départ alors qu'en fait ils ne sont déjà plus là !?

Ça ressemble à ce qui est décrit dans ce bug :
https://kde-bugs-dist.kde.narkive.com/97fkE2Qb/dolphin-bug-376634-new-moving-a-folder-from-ext4-formated-partition-to-a-fat32-partition-does-not

Montage des disques :
- Le SSD /home ext4 est monté avec les options : noatime,discard
- Le HDD /mnt/archives exfat est monté avec les options : rw,user,exec,umask=000,noatime

C'est le meilleur choix d'options que j'ai trouvé à ce jour pour que tous les utilisateurs puissent écrire, lancer des programmes sur le disque archives, mais peut-être y en a-t-il un meilleur ?

Le noatime est un choix volontaire, car l'info n'a aucune importance pour nous (mais est-ce que ça peut être source de problèmes ???)

Une idée ??? Merci !

  • # Problème de droits sur exFAT

    Posté par  . Évalué à 6 (+5/-0).

    Salut à toi,

    C'est un problème de gestion de droits. Les systèmes FAT, dont exFAT, ne supportent pas les droits utilisateurs. Tu ne peux pas leur dire "ce fichier appartient à alouali", ça n'a pas de sens pour eux.

    Quand tu copies un fichier, la copie est créée avec les droits par défaut de la destination, donc pas de problème. Quand tu le déplaces, Dolphin va chercher à copier les droits du fichier source, ce qui génère ton erreur.

    Changer le noatime ne changera rien.

    • [^] # Re: Problème de droits sur exFAT

      Posté par  (site Web personnel) . Évalué à 1 (+0/-0). Dernière modification le 23/04/21 à 12:10.

      Bonjour,

      merci pour ta réponse.

      J'ai choisi le format FAT justement pour l'absence de droits utilisateurs, pour que tous les utilisateurs y aient accès en lecture / écriture / exécution (archives de photos, vidéos, fichiers… ainsi qu'une ancienne compatibilité Windows). C'est le disque partagé avec toute la famille.

      Effectivement c'est un problème de conservation des droits, puisqu'en ligne de commande, mv source destination me sort un mv: conservation des droits pour « destination »: Opération non permise. Alors que effectivement la même commande avec cp ne sort aucune erreur.

      A ton avis y-a-t'il un moyen de contourner ça par d'autres paramètres de montage dans le /etc/fstab ? Avec un umask différent ?

      • [^] # Re: Problème de droits sur exFAT

        Posté par  . Évalué à 4 (+3/-0).

        Comme expliqué, et comme l'indique le message suivant ton test en ligne de commande, il n'y a rien à contourner dans /etc/fstab ; ce sont tes opérations qu'il faut corriger :

        • soit faire des copies (et des suppressions manuelles de l'autre côté)
        • soit faire des déplacements et ne pas tenir compte de l'avertissement

        Le déplacement, au sens Unix, implique (pour des partitions différentes) de

        1. copier le contenu dans des blocs libre de la destination
        2. mettre à jour les informations des inodes de destination
        3. supprimer la source (en fait mise à jour des inodes)
        • [^] # Re: Problème de droits sur exFAT

          Posté par  (site Web personnel) . Évalué à 1 (+0/-0).

          Bonjour,

          merci pour ta réponse.

          Je suis d'accord, d'un volume à l'autre, un déplacement est une copie suivie d'une suppression.

          Mais pourquoi l'erreur n'apparait-elle pas quand on fait un cp, qui lui aussi copie les information de droits ? Un cp est-il moins "exigeant" qu'un mv ?

          Et finalement si la solution ne se situe pas dans /etc/fstab, y-a-t'il une autre solution ?

          • [^] # Re: Problème de droits sur exFAT

            Posté par  . Évalué à 5 (+3/-0).

            Mais pourquoi l'erreur n'apparaît-elle pas quand on fait un cp, qui lui aussi copie les information de droits ?

            Bilbo a répondu à cette question :

            Quand tu copies un fichier, la copie est créée avec les droits par défaut de la destination.

            tout comme il a aussi répondu à celle-là :

            Et finalement si la solution ne se situe pas dans /etc/fstab, y-a-t'il une autre solution ?

            PS. Je ne sais pas si ses réponses sont exactes mais tu ne sembles pas les lire, ça n'est pas très motivant :-)

            • [^] # Re: Problème de droits sur exFAT

              Posté par  (site Web personnel) . Évalué à 0 (+0/-1).

              Sisi, je fais l'effort de les lire ! Mais j'ai peut-être aussi du mal à comprendre (ou à accepter) car je ne suis pas très l'aise avec tout ça (j'ai un passé de dev, pas d'admin). Je suis désolé que mes messages et mes réponses donnent l'impression d'être bâclés, car ce n'est pas le cas.

              Pour moi vraiment un mv entre volumes c'était égal à un cp + un rm, je comprends donc qu'en fait ce n'est pas le cas et qu'il y a donc 2 algorithmes / stratégies différentes.

              J'ai bien compris que le problème ne vient pas des paramètres de montage, mais des types différents des volumes.

              Et si j'insiste c'est parce que ce problème ne doit pas être si rare que ça, et que j'ai du mal à croire (ou peut-être à accepter) qu'il n'y ai pas d'autres solutions que de se dire qu'il faut soit subir le message d'erreur à chaque fois, soit faire à la main une copie suivie d'une suppression, parce que c'est vraiment agaçant.

              • [^] # Re: Problème de droits sur exFAT

                Posté par  . Évalué à 3 (+2/-0).

                Un petit man cp (chez moi c'est en anglais —et c'est l'implémentation BSD mais c'est pareil avec l'implémentation GNU et conformément à la spécification POSIX)

                […] the cp utility copies the contents of the source_file to the target_file. […] The names of the files themselves are not changed. […]

                Ce qui est exactement ce que je disais : on copie le contenu (les datas et en aucun cas les métadonnées/inodes) ; et comme précisé par ailleurs, le conteneur (donc le nom du fichier et les propriétés/permissions) sont créées sur la destination avec les paramètres qui vont bien pour accueillir le contenu.

                Toujours d'après le manuel, il y a une option qui permet de confirmer ce que tu ne veux pas entendre/lire (car c'est ce que fait toujours mv quand on passe d'une partition à une autre)

                -p Cause cp to preserve the following attributes of each source file in the copy: modification time, access time, file flags, file mode, user ID, and group ID, as allowed by permissions. Access Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also be preserved.

                If the user ID and group ID cannot be preserved, no error message is displayed and the exit value is not altered.

                If the source file has its set-user-ID bit on and the user ID cannot be preserved, the set-user-ID bit is not preserved in the copy's permissions. If the source file has its set-group-ID bit on and the group ID cannot be preserved, the set-group-ID bit is not preserved in the copy's permissions. If the source file has both its set-user-ID and set-group-ID bits on, and either the user ID or group ID cannot be preserved, neither the set-user-ID nor set-group-ID bits are preserved in the copy's permissions.

              • [^] # Re: Problème de droits sur exFAT

                Posté par  . Évalué à 2 (+1/-0).

                Pour moi vraiment un mv entre volumes c'était égal à un cp + un rm, je comprends donc qu'en fait ce n'est pas le cas et qu'il y a donc 2 algorithmes / stratégies différentes.

                Je l'ai détaillé plus tôt (1,2,3) mais tu omets une partie (là tu ne considères que 1,3 ou 2,3 selon)

                Oui, ce sont des algorithmes différents (qui partagent des points communs) d'où des commandes différentes.
                Et les messages ne sont pas des erreurs mais des informations (le code de retour est OK/0/succès) donc il n'y a rien à faire.

                • [^] # Re: Problème de droits sur exFAT

                  Posté par  (site Web personnel) . Évalué à 1 (+0/-0).

                  Merci pour tes réponses, ça commence à rentrer ;-)

                  Comme tu as l'air plus pointu que moi dans ce domaine, peux tu m'éclairer sur ce point supplémentaire : quand je déplace un fichier de mon ext4 vers une clé USB amovible fat32, cette fois je n'ai pas l'erreur !

                  Je fais alors mount pour savoir comment la clé a été automontée, la seule différence que je vois par rapport à mon disque archives est qu'il y a en plus uid=1000,gid=1000 qui correspondent à mon utilisateur et à mon groupe.

                  Si j'ai bien compris, le fait que l'uid source et destination sont identiques seraient la raison pour laquelle il n'y a pas d'erreur ?

                  Je pourrai mettre uid=1000,gid=1000 dans le /etc/fstab ça règlerai le problème pour moi mais pas pour les autres utilisateurs de l'ordinateur ?

                  • [^] # Re: Problème de droits sur exFAT

                    Posté par  (site Web personnel) . Évalué à 1 (+0/-0).

                    Complément : je viens de faire le test, j'ai rajouté uid=1000,gid=1000 dans le /etc/fstab et je n'ai plus l'erreur. Par contre les autres utilisateurs continuent à l'avoir.

                    • [^] # Re: Problème de droits sur exFAT

                      Posté par  . Évalué à 3 (+2/-0).

                      C'est un bogue ou une fonctionnalité étendue de GNU/Linux qui s'explique pour les raisons déjà évoquées :

                      • Après avoir copié les données, le système doit rajouter les informations sur le fichier, et les spécifications POSIX (et les bibliothèques sous-jacentes utilisées) ajoutent au moins uid/gid/perms/ctime/mtime… : l'idéal (qui serait pourtant un bogue puisque la norme est d'informer) est de ne rien faire pour les systèmes de fichiers qui ne prennent pas en charge ces informations de base.
                      • Quand on spécifie un uid/gid/fmask/dmask pour ce genre de système de fichiers, l'information est collée en mémoire et tout fichier/répertoire rencontré ou créé est considéré comme ayant les valeurs mentionnées. Comme lors d'une copie, la destination est attribuée à la personne qui copie, et que les réglages par défaut correspondent à cette personne, bah il cherche pas à mettre à jour l'information.
                      • À l'inverse, quand ça ne correspond pas, l'opération va râler (c'est une information et non une erreur)

                      Pour faciliter la vie des usagers, les distributions récentes montent les clés USB avec le caractéristiques de la personne qui fait le montage (et on peut donc utiliser sa propre clé sans se prendre la tête de devoir tout faire en root pour pas se faire jeter.)
                      Mais tu n'as pas été au bout de ton test : il aurait fallu que fasses tes opérations depuis un autre compte aussi pour te rendre compte que le comportement est le même qu'avec ta modification de fstab De toute façon, ce système de fichiers n'est pas multi-users…

                      Comme tu es "dev" tu peux jeter un œil au code source de ces utilitaires pour mieux comprendre.

                    • [^] # Re: Problème de droits sur exFAT

                      Posté par  (site Web personnel) . Évalué à 3 (+1/-0).

                      A tester: Créer un groupe "famille" dans lequel tu mets tes utilisateurs, et forcer le montage de ton volume avec gid=le gid de ce groupe.

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

      • [^] # Re: Problème de droits sur exFAT

        Posté par  . Évalué à 3 (+0/-0).

        J'ai choisi le format FAT justement pour l'absence de droits utilisateurs, pour que tous les utilisateurs y aient accès en lecture / écriture / exécution (archives de photos, vidéos, fichiers… ainsi qu'une ancienne compatibilité Windows). C'est le disque partagé avec toute la famille.

        Le plus simple c'est de garder un filesystem supportant les ACL sous linux (ext4 convient) mais que tous les membres de la famille appartiennent à un même groupe sur ta mageia et d'utiliser les acl pour que les sous-dossiers/fichiers héritent des permissions du parent:

        Exemple avec un group nommé 'famille' et un /mnt/archives formaté en ext4:
        setfactl -m d:g:famille:rwX /mnt/archives

        Dans la commande ci-dessus, le 'd' signifie "default" pour dire que c'est le droit par défaut (héritage des permissions), le 'g' qu'ont donne le droit à un groupe, rwX respectivement read/write et l'entrée vers les répertoires.

Envoyer un commentaire

Suivre le flux des commentaires

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