将文件从一个用户主目录复制到Linux中的另一个用户主目录

时间:2013-09-18 09:53:00

标签: linux security shell copy sudo

我有两个linux用户(不是root用户)的登录名和密码,例如user1和user2。

如何复制文件 从 / home / user1 / folder1 / home / user2 / folder2 ,使用一个shell脚本(一个脚本启动,无需手动切换用户)。

我想我必须使用sudo命令,但没有找到确切的结果。

6 个答案:

答案 0 :(得分:4)

sudo cp -a / home / user1 / folder1 / home / user2 / folder2
sudo chown -R user2:user2 / home / user2 / folder2

cp -a archive
chown -R递归

复制文件,然后授予user2访问权限的权限 复制所有文件,包括点文件,所有子目录,并且在命令之前不需要存在目录/ home / user2 / folder2。

答案 1 :(得分:3)

就是这样:

cp -r /home/user1/folder1/ /home/user2/folder2

如果添加-p(所以cp -pr),它将保留文件的属性(模式,所有权,时间戳)。

-r也需要复制隐藏文件。有关详细信息,请参阅How to copy with cp to include hidden files and hidden directories and their contents?

答案 2 :(得分:1)

(shopt -s dotglob; cp -a /home/user1/folder1/* /home/user2/folder2/)

将使用标准cp复制所有文件(包括以点开头的文件)。 /folder2/应该存在,否则结果会很糟糕。

通常使用像tar这样的打包工具也可以提供帮助:

cd /home/user1/folder1
tar cf - . | (cd /home/user2/folder2; tar xf -)

答案 3 :(得分:0)

我认为您需要使用此命令

sudo -u username /path1/file1 /path2/file2

此命令允许您以特定用户的身份从任何文件路径复制内容。

PS:父目录至少应该是可列出的,以便从中复制文件。

答案 4 :(得分:0)

只是为了添加到 fedorqui 'SO stop harming' 答案。

当我尝试在 Ubuntu 20.04 机器上将服务器的默认管理员用户从 stage_user 更改为 prod_user 时遇到了同样的挑战:

首先,我使用以下命令创建了一个 prod_user

sudo adduser prod_user

然后我将新创建的 prod_user 添加到 sudo 组:

sudo adduser prod_user sudo

接下来,我将我需要的所有目录从 homestage_user 目录复制到 prod_user

sudo cp -r /home/stage_user/folder1/ /home/prod_user/

接下来,我将复制文件夹的所有权从 stage_user 更改为 prod_user 以避免权限问题:

sudo chown prod_user:prod_user /home/prod_user/folder1

仅此而已。

我希望这会有所帮助

答案 5 :(得分:-4)

问题与跨用户的权限有关。

我相信默认情况下,家庭许可允许所有人进行列表并将工作目录更改为另一个人的家: 例如。 drwxr-XR-X 因此,在之前的回答中,人们没有意识到你可能遇到过什么。

如果我在网络主机上拥有更多限制设置,非主用户就无法做任何事情 例如。 drwx ------ 即使您使用su / sudo并成为其他用户,您仍然只能一次成为一个用户,因此当您将文件复制回来时,同样的问题仍然没有适用。

因此。 。 。相反,使用scp,像网络环境一样对待整个事情,让我这样说,就是这样。顺便说一下这个问题已经在这里回答了一次(https://superuser.com/questions/353565/how-do-i-copy-a-file-folder-from-another-users-home-directory-in-linux),只有回答是因为这是我搜索的第一个结果。