Предположим, что пользователь "qqq" имеет файл /home/qqq/bigfile.dat и хочет передать его пользователю "aaa" без помощи root (он должен принадлежать "aaa"). Что должны делать пользователи "qqq" и "aaa"?
Наивный способ:
uid=qqq$ mv bigfile.dat /home/aaa/
uid=aaa$ chown aaa /home/aaa/bigfile.dat # Operation not permitted
Конечно, это можно сделать с помощью ACL (uid=qqq$ setfacl u:aaa:rw- /home/aaa/bigfile.dat
) или путем создания временной копии (uid=aaa$ mv bigfile.dat bigfile.dat_ && cat bigfile.dat_ > bigfile.dat && rm bigfile.dat_
), но оба способа имеют свои недостатки.
Оба пользователя соглашаются (могут дать какую-то команду) "пропустить" файл. Это должно быть быстро, с сохранением inode и других атрибутов и т.д.
Как это сделать чисто?