在一个计算机上将文件从一个用户复制到另一个用户


20

如何通过终端将同一用户的任何文件或目录从一个用户复制到同一计算机上的另一用户

假设在USER1的主目录中有一个文件test.txt。我需要将该文件复制到我的计算机中USER2的主目录中。我该如何通过终端?

Answers:


26

假设您具有sudo特权,则以下命令将起作用。

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

将文件从USER1复制到USER2,然后将/ home / USER2中副本的所有者更改为USER2

如果您没有sudo特权,那么这两个用户将需要确保您对USER1目录具有读取权限,并且对USER2目录具有写入权限。如果您具有这些访问权限,则可以输入以下命令:

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

这将复制有问题的文件,但是USER2在拥有相应权限之前可能无法操纵该文件。


仅在USER1具有sudo访问权限时才有效,而在多用户系统中可能不是这种情况。
BostonHiker 2014年

另一个选项是在他们自己的文件夹上设置权限,以允许其他用户获取它们,但是如果可能的话,此选项要容易得多。
Geary Shull 2014年

@BostonHiker我已经假定进行复制的人既不是USER1也不是USER2,并且具有sudo特权。就我而言,这可能是一个错误的假设。
查尔斯·格林

@Charles Green-请编辑您的答案以陈述您的假设,否则不完整/具有误导性。
BostonHiker 2014年

@BostonHiker完成。感谢您让我诚实。
查尔斯·格林

6

如果您没有sudo特权,但是可以使用两个用户登录,则可以将scp与localhost一起使用:

scp file1 user2@localhost:/home/user2/

是什么让您认为这与远程主机有关,或有问题的计算机上正在运行SSH / SFTP服务器?
David Foerster

1
假设您已安装SSH
Loudstil


1

假设您要么没有安装ssh,要么不想共享密钥/秘密。

假设user1在group1中,而user2在group2中,并且user1!= user2和group1!= group2。

创建一个共享组group3s。

addgrp group3

将user1和user2都添加到group3s。

在一个用户可以拥有但具有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

但是,假设您无法创建新的共享组,并将两个用户都放置在该组中?

创建目录并为其赋予770权限,

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

然后,以root / admin身份将组所有权更改为其他用户的组,

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

chmod g + s命令将setgid位置1,以使放入目录的文件的组所有权设置为group2。


0

这里的所有其他答案都需要root用户访问权限,或者允许同一计算机上的任何用户复制文件,或者要求密码共享。这是不可以的方法:

已经USER2(让我们称他为鲍勃)运行下面的命令(你可以替换/tmp使用,无论用户有权限写入到任意目录,但是/tmp是理想的,因为默认情况下它是粘,防止恶意用户颠覆了这一过程。目录资鲍勃(Bob)的世界可读性也适用):

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

这将创建一个可全局写入但不可读的文件。

然后USER1运行(让我们称她为Alice)(如果您很偏执,Alice可以先检查权限以确保文件归Bob拥有):

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

这将覆盖的内容/tmp/test.txt。如果要检查文件的完整性,Alice还应该生成文件的哈希。例如:

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

相反,您可以对文件进行数字签名,也可以通过其他任何方法保证文件的完整性。

最后,鲍勃移动了文件并取得了所有权:

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

如果鲍勃喜欢,鲍勃可以检查其完整性。如果是这样,他应该检查以确保只有Alice可以写信给/tmp/test.txt

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

如果文件被正确复制,则应不显示任何输出。


-1

在将一个用户复制到另一个用户之前,您需要以su用户身份登录,然后使用命令cp

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

这不会将所有权转让给您,USER2而是将其保留root。-1
David Foerster's

@DavidFoerster我们没有转移所有权,我们将文件从一个用户复制到另一个用户。使用root用户,我们可以传输文件。OK
Shyam Gupta
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.