Todas as outras respostas aqui requerem acesso root, permitem que qualquer usuário na mesma máquina copie o arquivo ou exigem compartilhamento de senha. Aqui está um método que não:
Faça USER2
(vamos chamá-lo de Bob) executar os seguintes comandos (você pode substituir /tmp
por qualquer diretório em que ambos os usuários tenham permissão para gravar, mas /tmp
é ideal porque, por padrão, é persistente, o que impede um usuário mal-intencionado de subverter este processo. por Bob que é legível pelo mundo também funciona):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Isso cria um arquivo que pode ser gravado mundialmente, mas não legível.
Em seguida, USER1
execute (vamos chamá-la de Alice) (se você for paranóico, Alice pode verificar as permissões primeiro para garantir que o arquivo seja de propriedade de Bob):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
Isso substitui o conteúdo de /tmp/test.txt
. Se você deseja 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
Em vez disso, você pode assinar digitalmente o arquivo ou qualquer outro método para garantir sua integridade.
E, finalmente, Bob move o arquivo e se apropria dele:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
E Bob pode verificar a integridade, se quiser. Nesse caso, ele deve verificar se apenas Alice pode escrever /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.