Supposons que l'utilisateur "qqq" possède le fichier /home/qqq/bigfile.dat et qu'il veuille le transmettre à l'utilisateur "aaa" sans l'aide de root (il doit appartenir à "aaa"). Que doivent faire les utilisateurs "qqq" et "aaa" ?
De manière naïve :
uid=qqq$ mv bigfile.dat /home/aaa/
uid=aaa$ chown aaa /home/aaa/bigfile.dat # Operation not permitted
Bien entendu, il est possible d'utiliser des listes de contrôle d'accès (ACL) ( uid=qqq$ setfacl u:aaa:rw- /home/aaa/bigfile.dat
) ou en faisant une copie temporaire ( uid=aaa$ mv bigfile.dat bigfile.dat_ && cat bigfile.dat_ > bigfile.dat && rm bigfile.dat_
), mais les deux méthodes semblent présenter des inconvénients.
Les deux utilisateurs acceptent (en émettant une commande) de "passer" le fichier. Cette opération doit être rapide, en préservant l'inode et les autres attributs, etc.
Comment le faire proprement ?