poindorg
Bonjour à tous,
Nouveau sur linux et fedora que je découvre depuis quelques mois, j'utilise en particulier ExifTool (paquet perl-Image-ExifTool) pour traiter les méta-données d'images.
Cependant, une particularité de logiciel m'intrigue, en effet, comme indiqué sur sa page man, exiftool peut écrire dans un fichier pourtant restreint en lecture seule.
Voici ma question, comment ce programme peut-il outre-passer les droits d'accès du système de fichiers ?
Merci !
Heldwin
Bonjour,
Bonne question... On a en effet la possibilité de modifier un fichier dont root est le propriétaire (root root -rw-r--r--, par exemple).
D'après ce que j'ai vu, cela fonctionne mais il faut plusieurs conditions, par exemple:
* Que le fichier soit dans un répertoire dans lequel l'utilisateur a le droit d'écrire (et donc de créer un fichier)
* Que l'utilisateur ait au moins le droit de lire ce fichier
Mais qu'il puisse le modifier si ces conditions sont réunies ne me semblent pas normale
(surtout qu'il garde les droits root:root après modification)
Heldwin
Je ne comprends pas comment il peut garder les droits root:root, si un utilisateur modifie le fichier, mais d'après ce qu'on m'a indiqué, le fait que l'utilisateur ait les droits d'écrire dans le répertoire rend la modification possible.
exiftool va recréer le fichier modifié, et supprimer l'ancien.
Tout comme on peut modifier un fichier possédé par root, où l'utilisateur n'a le droit que de lire (en forçant l'écriture), mais là encore il faut que l'utilisateur ait les droits d'écriture mis sur le répertoire parent.
Le problème des droits non-modifiés est un mystère pour l'instant 🙂
Car même avec vim, quand on force l'écriture sur un fichier en lecture seule dans un dossier où on peut écrire, on devient le propriétaire du fichier en question ...
poindorg
Bonsoir,
Merci pour tes indications, en particulier celle de la création de fichier, je n'avais pas pensé à ce type de fonctionnement.
J'ai refait un essai en créant un fichier root:root en 664 : exiftool en utilisateur standard peut agir dessus, il le copie et le renomme en *_original . Le nouveau fichier créé est bien un fichier utilisateur:utilisateur et avec les mêmes droits que le fichier source.
Les mêmes manips sur un fichier root:root en 440 renvoient une erreur, manifestement car exiftool (toujours en utilisateur standard) ne peut pas le lire pour le copier.
J'ai donc l'impression qu'avec exiftool, il faut aborder son fonctionnement du point de vue d'une copie de fichier (et en conséquence des droits du répertoire parent) et pas de celui des droits propres au fichier.
Heldwin
j'avais utilisé une commande un peu particulière pour pouvoir garder les droits, sans avoir le "_original", mais les personnes à qui j'ai demandé n'arrivent pas à répondre à la question du pourquoi/comment il peut garder les droits root alors que exiftool a été lancé par un utilisateur.
Mais sinon oui, les droits du répertoire parent sont importants, mais pas seulement pour exiftool.
Heldwin
Bon, on m'a finalement répondu et c'est bien dû au fait des droits du répertoire parent.
Je n'avais jamais remarqué pour ce type de situation, mais un utilisateur peut déplacer et/ou renommer un fichier dont il n'est pas le propriétaire et n'a que le droit de lecture, s'il a les droits d'écriture sur le dossier parent, sans modifier le propriétaire/date d'un fichier.