I want to allow user adam to give files to user bobby and only allow this transfer.
Para fazer isso, você precisa ter um programa que seja executado como root, faça as verificações necessárias e altere o proprietário de um determinado arquivo. Executar como root é fácil, você pode usar sudo
ou um programa setuid, fazer a verificação correta para que o programa não seja mal utilizado, é mais difícil.
O que poderia funcionar, seria: 1) Abra o arquivo 2) use fstat()
para verificar seu dono 3) então fchown()
para alterar o dono.
É necessário passar por um fd para trabalhar no arquivo, pois o acesso através do arquivo nome não garante que o arquivo que está sendo verificado seja o arquivo que é operado em instantes posteriores. O arquivo pode ser alterado entre eles.
Outra opção seria implementar uma espécie de "serviço de upload" que receberia os arquivos (seus conteúdos) através da rede a partir de adam
e, em seguida, criar arquivos completamente novos para bobby
dos dados recebidos.
Eu não acho que nenhum deles existe como ferramentas prontas, embora o último seja semelhante ao e-mail.