Qualquer outra resposta aqui requer acesso root, permite que qualquer usuário na mesma máquina copie o arquivo ou exija o compartilhamento de senha. Aqui está um método que não:
Tenha USER2
(vamos chamá-lo de Bob) executar os seguintes comandos (você pode substituir /tmp
por qualquer diretório para o qual ambos os usuários tenham permissão para gravar, mas /tmp
é ideal porque por padrão é pegajoso, impede que um usuário mal-intencionado subverte esse processo. Um diretório de propriedade de Bob que é legível por todos também funciona):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Isso cria um arquivo que pode ser gravado no mundo, mas não legível.
Em seguida, execute USER1
(vamos chamá-la de Alice) (se você estiver paranóico, Alice poderá verificar as permissões primeiro para garantir que o arquivo pertença a Bob):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
Isto sobrescreve o conteúdo de /tmp/test.txt
. Se você quiser verificar a integridade do arquivo, Alice também deve gerar um hash do arquivo. Por exemplo:
[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
Você pode assinar digitalmente o arquivo ou qualquer outro método para garantir sua integridade.
E, finalmente, Bob move o arquivo e apropria-se dele:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
E o Bob pode verificar a integridade se ele gostar. Se assim for, ele deve verificar se apenas Alice pode escrever para /tmp/test.txt
.
[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")
Se o arquivo foi copiado corretamente, isso não deve exibir saída.