copia di file da un utente a un altro in una singola macchina


20

Come copiare file o directory da un utente a un altro utente in una stessa macchina tramite terminale ?

Supponiamo che ci sia un file test.txt nella home directory di USER1. Devo copiare quel file nella home directory di USER2 nella mia macchina. Come posso farlo tramite terminale?

Risposte:


26

Supponendo di disporre dei sudoprivilegi, eseguirà il comando seguente.

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

Copia il file da USER1 a USER2, quindi cambia il proprietario della copia in / home / USER2 in USER2

Se non si dispone di sudoprivilegi, i due utenti dovranno assicurarsi di disporre delle autorizzazioni di lettura sulla directory USER1 e di accedere in scrittura alla directory USER2. Se si dispone di questi accessi, è possibile immettere il comando:

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

Ciò copierà il file in questione, ma USER2 potrebbe non essere in grado di manipolare il file fino a quando non disporrà delle autorizzazioni appropriate.


Questo funzionerà solo se USER1 ha accesso sudo, il che potrebbe non essere il caso di un sistema multiutente.
Boston Escursionista

L'altra opzione sarebbe quella di impostare le autorizzazioni nella propria cartella per consentire all'altro utente di afferrarle, ma questa opzione è molto più semplice se possibile.
Geary Shull,

@BostonHiker Avevo ipotizzato che la persona che stava eseguendo la copia non fosse USER1 o USER2 e avesse sudo privilegi. Questo è probabilmente un cattivo presupposto da parte mia.
Charles Green,

@Charles Green - modifica la tua risposta per affermare le tue assunzioni, altrimenti è incompleta / fuorviante.
BostonHiker,

@BostonHiker Done. Grazie per avermi reso onesto.
Charles Green,

6

se non si dispone dei privilegi di sudo ma è possibile accedere con i due utenti, è possibile utilizzare scp con localhost:

scp file1 user2@localhost:/home/user2/

Cosa ti fa pensare che si tratti di un host remoto o che ci sia un server SSH / SFTP in esecuzione sul computer in questione?
David Foerster,

1
Supponendo che abbiate installato SSH
forte il

5

Come UTENTE1:

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

Come UTENTE2:

cp /tmp/[filename] .

Come UTENTE1:

rm /tmp/[filename]

Meriti altri voti :)
Neeraj Jain,

1

Supponiamo che tu non abbia installato ssh o che tu non possa non voler condividere chiavi / segreti.

Supponiamo che user1 sia nel gruppo1, e user2 sia nel gruppo2, e sia user1! = User2 che group1! = Group2.

Crea un gruppo condiviso, group3s.

addgrp group3

Aggiungi sia user1 che user2 a group3s.

Creare una directory in un luogo reciprocamente accessibile, di cui un utente è proprietario, ma ha la proprietà di gruppo di 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

Supponiamo che non sia possibile creare il nuovo gruppo condiviso e collocare entrambi gli utenti in quel gruppo?

Crea la directory e assegnagli 770 autorizzazioni,

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

Quindi, come root / admin, cambia la proprietà del gruppo nel gruppo dell'altro utente,

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

Il comando chmod g + s imposta il bit setgid in modo che i file inseriti nella directory abbiano la proprietà del gruppo impostata su group2.


0

Ogni altra risposta qui richiede l'accesso come root, consente a qualsiasi utente sullo stesso computer di copiare il file o richiede la condivisione della password. Ecco un metodo che non:

Chiedi USER2(chiamiamolo Bob) di eseguire i seguenti comandi (puoi sostituirlo /tmpcon qualsiasi directory in cui entrambi gli utenti dispongono delle autorizzazioni per scrivere, ma /tmpè l'ideale perché per impostazione predefinita è appiccicoso, il che impedisce a un utente malintenzionato di sovvertire questo processo. di Bob leggibile in tutto il mondo funziona anche):

[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt

Questo crea un file che è scrivibile in tutto il mondo, ma non leggibile.

Quindi USER1esegui (chiamiamola Alice) (se sei paranoico, Alice può prima controllare le autorizzazioni per assicurarsi che il file sia di proprietà di Bob):

[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt

Questo sovrascrive il contenuto di /tmp/test.txt. Se vuoi verificare l'integrità del file, Alice dovrebbe anche generare un hash del file. Per esempio:

[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1

Puoi invece firmare digitalmente il file o qualsiasi altro metodo per garantirne l'integrità.

E infine Bob sposta il file e ne prende la proprietà:

[bob@computer ~]$ mv /tmp/test.txt "$HOME" 
[bob@computer ~]$ chmod 600 "$HOME/test.txt"

E Bob può controllare l'integrità se gli piace. In tal caso, dovrebbe verificare per assicurarsi che solo Alice possa scrivere /tmp/test.txt.

[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")

Se il file è stato copiato correttamente, questo non dovrebbe visualizzare alcun output.


-1

Prima di andare a copiare un utente in un altro devi accedere come su user e quindi utilizzare il comando cp

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop

Questo non trasferirà la proprietà USER2ma la lascerà come rootse. -1
David Foerster,

@DavidFoerster non trasferiamo la proprietà, copiamo il file da un utente a un altro utente. usando l'utente root, possiamo trasferire il file. OK
Shyam Gupta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.