copiar archivos de un usuario a otro en una sola máquina

20

¿Cómo copiar cualquier archivo o directorio de un usuario a otro usuario en una misma máquina a través del terminal ?

Supongamos que hay un archivo test.txt en el directorio de inicio de USER1. Necesito copiar ese archivo en el directorio de inicio de USER2 en mi máquina. ¿Cómo puedo hacerlo a través de la terminal?

nischalinn
fuente

Respuestas:

26

Suponiendo que tiene sudoprivilegios, lo hará el siguiente comando.

sudo cp /home/USER1/FNAME /home/USER2/FNAME && sudo chown USER2:USER2 /home/USER2/FNAME

Copiará el archivo de USUARIO1 a USUARIO2, y luego cambiará el propietario de la copia en / home / USER2 a USER2

Si no tiene sudoprivilegios, los dos usuarios deberán asegurarse de que tiene permisos de lectura en el directorio USER1 y acceso de escritura en el directorio USER2. Si tiene estos accesos, puede ingresar el comando:

cp /home/USER1/FNAME /home/USER2/FNAME

Esto copiará el archivo en cuestión, pero el USUARIO2 no podrá manipular el archivo hasta que tenga los permisos adecuados.

Charles Green
fuente
Esto funcionará solo si USER1 tiene acceso a sudo, lo que podría no ser el caso en un sistema multiusuario.
BostonHiker
La otra opción sería establecer los permisos en su propia carpeta para permitir que el otro usuario los tome, pero esta opción es mucho más fácil si es posible.
Geary Shull
@BostonHiker Supuse que la persona que hace la copia no es USUARIO1 ni USUARIO2, y tiene privilegios de sudo. Esta es probablemente una suposición pobre de mi parte.
Charles Green
@Charles Green: edite su respuesta para exponer sus suposiciones, de lo contrario es incompleta / engañosa.
BostonHiker
@BostonHiker Hecho. Gracias por ser honesto conmigo.
Charles Green
6

si no tiene privilegios de sudo pero puede iniciar sesión con los dos usuarios, puede usar scp con localhost:

scp file1 user2@localhost:/home/user2/
fuerte
fuente
¿Qué te hace pensar que se trata de un host remoto o que hay un servidor SSH / SFTP ejecutándose en la máquina en cuestión?
David Foerster
1
Suponiendo que tenga SSH instalado
loudstil
5

Como USUARIO1:

cp [filename] /tmp
chmod 777 /tmp/[filename]

Como USUARIO2:

cp /tmp/[filename] .

Como USUARIO1:

rm /tmp/[filename]
Ryan J McCall
fuente
Te mereces más votos a favor :)
Neeraj Jain
1

Suponga que no tiene instalado ssh o no puede no querer compartir claves / secretos.

Suponga que user1 está en group1, y user2 está en group2, y user1! = User2 y group1! = Group2.

Crea un grupo compartido, group3s.

addgrp group3

Agregue user1 y user2 a group3s.

Cree un directorio en un lugar de acceso mutuo, donde un usuario sea propietario, pero tenga la propiedad grupal de group3s.

#as user1,
mkdir $place/shared && chown user1.group3s $place/shared && chmod 770 $place/shared;
#as user1 or user2,
cp $file $place/shared && chgrp $place/shared/$file && chmod 660 $place/shared/$file

Pero, ¿y si no puede crear el nuevo grupo compartido y colocar a ambos usuarios en ese grupo?

Crea el directorio y dale permisos 770,

mkdir $place/shared && chown user1.group1 $place/shared && chmod 770 $place/shared;

Luego, como root / admin, cambie la propiedad del grupo al grupo del otro usuario,

sudo bash
chgrp group2 $place/shared && chmod g+s $place/shared

El comando chmod g + s establece el bit setgid para que los archivos colocados en el directorio tengan la propiedad del grupo establecida en group2.

ChuckCottrill
fuente
0

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 /tmppor cualquier directorio en el que ambos usuarios tengan permisos para escribir, pero /tmpes 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 USER1ejecute (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.

Chris
fuente
-1

Antes de copiar un usuario a otro, debe iniciar sesión como su usuario y luego usar el comando cp

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop
Shyam Gupta
fuente
Esto no transferirá la propiedad USER2sino que la dejará como rootsi así fuera. -1
David Foerster
@DavidFoerster no estamos transfiriendo la propiedad, copiamos el archivo de un usuario a otro. usando el usuario root, podemos transferir el archivo. OK
Shyam Gupta