Kopieren von Dateien von einem Benutzer auf einen anderen in einem einzelnen Computer


20

Wie kopiere ich Dateien oder Verzeichnisse von einem Benutzer auf einen anderen Benutzer auf demselben Computer über ein Terminal ?

Angenommen, es gibt eine Datei test.txt im Ausgangsverzeichnis von USER1. Ich muss diese Datei in das Home-Verzeichnis von USER2 auf meinem Computer kopieren. Wie kann ich das über das Terminal machen?

Antworten:


26

Angenommen, Sie verfügen über sudoBerechtigungen, reicht der folgende Befehl aus.

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

Kopiert die Datei von USER1 nach USER2 und ändert dann den Eigentümer der Kopie in / home / USER2 nach USER2

Wenn Sie nicht über sudoBerechtigungen verfügen , müssen die beiden Benutzer sicherstellen, dass Sie über Leseberechtigungen für das Verzeichnis USER1 und über Schreibzugriff für das Verzeichnis USER2 verfügen. Wenn Sie diese Zugriffe haben, können Sie den Befehl eingeben:

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

Dadurch wird die betreffende Datei kopiert, aber USER2 kann die Datei möglicherweise erst bearbeiten, wenn sie über die entsprechenden Berechtigungen verfügt.


Dies funktioniert nur, wenn USER1 über Sudo-Zugriff verfügt, was in einem Mehrbenutzersystem möglicherweise nicht der Fall ist.
BostonHiker

Die andere Option wäre, die Berechtigungen für ihren eigenen Ordner festzulegen, damit der andere Benutzer sie abrufen kann. Diese Option ist jedoch viel einfacher, wenn dies möglich ist.
Geary Shull

@BostonHiker Ich hatte die Annahme gemacht, dass die Person, die die Kopie erstellt, weder USER1 noch USER2 ist und sudo-Berechtigungen besitzt. Dies ist wahrscheinlich eine schlechte Annahme von meiner Seite.
Charles Green

@ Charles Green - Bitte bearbeiten Sie Ihre Antwort, um Ihre Vermutungen darzulegen, andernfalls ist sie unvollständig / irreführend.
BostonHiker

@ BostonHiker Fertig. Danke, dass du mich ehrlich hältst.
Charles Green

6

Wenn Sie keine sudo-Rechte haben, sich aber mit den beiden Benutzern anmelden können, können Sie scp mit localhost verwenden:

scp file1 user2@localhost:/home/user2/

Woran denken Sie, dass es sich um einen Remote-Host handelt oder dass auf dem betreffenden Computer ein SSH / SFTP-Server ausgeführt wird?
David Foerster

1
Vorausgesetzt, Sie haben SSH installiert
loudstil

5

Als USER1:

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

Als USER2:

cp /tmp/[filename] .

Als USER1:

rm /tmp/[filename]

Sie verdienen mehr Upvotes :)
Neeraj Jain

1

Angenommen, Sie haben ssh nicht installiert oder möchten keine Schlüssel / Geheimnisse weitergeben.

Angenommen, Benutzer1 ist in Gruppe1 und Benutzer2 ist in Gruppe2 und sowohl Benutzer1! = Benutzer2 als auch Gruppe1! = Gruppe2.

Erstellen Sie eine gemeinsame Gruppe, group3s.

addgrp group3

Fügen Sie Benutzer1 und Benutzer2 zu Gruppe3s hinzu.

Erstellen Sie ein Verzeichnis an einem für beide Seiten zugänglichen Ort, an dem ein Benutzer Eigentümer von group3s ist, der jedoch Gruppeneigentümer ist.

#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

Angenommen, Sie können die neue, gemeinsam genutzte Gruppe nicht erstellen und beide Benutzer in diese Gruppe einfügen.

Erstellen Sie das Verzeichnis, und geben Sie ihm 770 Berechtigungen.

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

Ändern Sie dann als root / admin den Gruppeneigentum in die Gruppe des anderen Benutzers.

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

Der Befehl chmod g + s setzt das Bit setgid so, dass für Dateien, die in das Verzeichnis gestellt werden, der Gruppeneigentum auf group2 gesetzt ist.


0

Jede andere Antwort hier erfordert Root-Zugriff, ermöglicht jedem Benutzer auf demselben Computer, die Datei zu kopieren, oder erfordert eine Kennwortfreigabe. Hier ist eine Methode, die dies nicht tut:

USER2Lassen Sie (nennen wir ihn Bob) die folgenden Befehle ausführen (Sie können sie durch ein /tmpbeliebiges Verzeichnis ersetzen , in das beide Benutzer schreiben dürfen, dies ist jedoch /tmpideal, da es standardmäßig klebrig ist und einen böswilligen Benutzer daran hindert, diesen Prozess zu untergraben von Bob, der von der Welt gelesen werden kann, funktioniert auch):

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

Dadurch wird eine Datei erstellt, die von der Welt geschrieben, aber nicht gelesen werden kann.

Dann hat USER1(sie sich Alice nennt) laufen (wenn Sie paranoid, Alice die Berechtigungen zunächst überprüfen , um sicherzustellen , dass die Datei von Bob gehört):

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

Dies überschreibt den Inhalt von /tmp/test.txt. Wenn Sie die Integrität der Datei überprüfen möchten, sollte Alice auch einen Hash der Datei generieren. Zum Beispiel:

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

Sie können die Datei stattdessen digital signieren oder eine andere Methode zur Gewährleistung ihrer Integrität verwenden.

Und schließlich verschiebt Bob die Datei und übernimmt das Eigentum daran:

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

Und Bob kann die Integrität prüfen, wenn er möchte. In diesem Fall sollte er überprüfen, ob nur Alice schreiben kann /tmp/test.txt.

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

Wenn die Datei korrekt kopiert wurde, sollte dies keine Ausgabe anzeigen.


-1

Bevor Sie einen Benutzer auf einen anderen kopieren, müssen Sie sich als su-Benutzer anmelden und dann den Befehl cp verwenden

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

Hierdurch wird das Eigentum nicht übertragen, USER2sondern es bleibt so, als rootob. -1
David Foerster

@DavidFoerster Wir übertragen nicht das Eigentum, wir kopieren die Datei von einem Benutzer auf einen anderen Benutzer. Mit root können wir die Datei übertragen. OK
Shyam Gupta
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.