Cualquier otra respuesta aquí requiere acceso de root, permite que cualquier usuario en la misma máquina copie el archivo, o requiere compartir contraseña. Aquí hay un método que no:
Haga USER2
(llamémosle Bob) que ejecute los siguientes comandos (puede reemplazarlos /tmp
por cualquier directorio en el que ambos usuarios tengan permisos para escribir, pero /tmp
es ideal porque de forma predeterminada es pegajoso, lo que evita que un usuario malintencionado subvierta este proceso. por Bob que es legible en el mundo también funciona):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Esto crea un archivo que se puede escribir en todo el mundo, pero que no se puede leer.
Luego USER1
ejecute (llamémosla Alice) (si es paranoica, Alice puede verificar primero los permisos para asegurarse de que el archivo sea propiedad de Bob):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
Esto sobrescribe el contenido de /tmp/test.txt
. Si desea verificar la integridad del archivo, Alice también debe generar un hash del archivo. Por ejemplo:
[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
En su lugar, puede firmar digitalmente el archivo o cualquier otro método para garantizar su integridad.
Y finalmente Bob mueve el archivo y toma posesión de él:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
Y Bob puede verificar la integridad si lo desea. Si es así, debe verificar para asegurarse de que solo Alice pueda escribir /tmp/test.txt
.
[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")
Si el archivo se copió correctamente, esto no debería mostrar salida.