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

10

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

如何使用一个单独的shell脚本(一个单独的脚本启动,不需要手动切换用户)将文件从/home/user1/folder1复制到/home/user2/folder2

我认为我必须使用sudo命令,但没有找到具体的方法。

7个回答

6

嗯,@Alfe 你是对的,我刚刚更新了它。-r 就是它的解决方法。 - fedorqui
再好不过了。现在您将创建一个/home/user2/folder2/folder1/… - Alfe
另一个选项是使用 cp /home/user1/folder1 /home/user2/,然后将 /home/user2/folder1 重命名为 /home/user2/folder2(仅在两者之前都不存在的情况下才有效)。 - Alfe
这个任务需要从一个用户复制文件到另一个用户,是否需要管理员权限?@Alfe和fedorqui - jasinth premkumar
1
不,一般来说不行。要执行拷贝操作,您必须拥有从原位置读取文件的权限,并拥有将其写入目标位置的权限。这样,您将创建一个新文件,该文件的所有者是执行此操作的用户(无论您选择哪个目标)。例如,如果要更改新文件的所有权,则需要具有管理员权限。但我建议您提出自己的问题,以便可以详细描述您的用例。 - Alfe

4

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

cp -a 档案
chown -R 递归操作

复制文件,然后授权给user2以访问它们。
拷贝所有文件,包括隐藏文件和子目录,不需要事先存在/home/user2/folder2目录。


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 -)

上述的恶意行为是受限制的。如果目录不存在,则会收到简单的错误消息。如果您忘记在结尾处添加“/”,并且目录不存在,并且“*”评估为正好一个文件,那么该文件将被复制到应该位于目标目录的位置的文件中,例如cp /u1/f1/* /u2/f2,只有/u1/f1/x存在,将导致一个名为/u2/f2的文件(!),其中包含来自/u1/f1/x的字节。 - Alfe

0

我认为你需要使用这个命令

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

这个命令允许你将特定用户的内容从任意文件路径复制出来。

PS:为了能够从中复制文件,父目录至少需要有可列出的权限。


0

首先,如果您在用户终端,请使用以下命令切换到 root 用户:

sudo -i

找到您的文件后,使用以下命令进行复制:

cp 文件名 /home/user

如果文件在其他目录中,请使用以下命令:

cp 目录/文件名 /home/user
请确保替换为您的用户名

要检查文件移动情况,返回到用户身份,请使用以下命令:

su user


0

仅仅是为了补充fedorqui 'SO stop harming'的回答。

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

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

sudo adduser prod_user

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

接下来,我从stage_userhome目录中复制了所有需要的目录到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

就这些。

希望这可以帮到你


-4

这个问题涉及跨用户的权限。

我认为默认情况下,家目录权限允许所有人列出和更改另一个用户的家目录: 例如,drwxr-xr-x 因此,在之前的答案中,人们没有意识到你可能遇到的问题。

在像我在 Web 主机上设置的更严格的设置中,非所有者用户无法执行任何操作。 例如,drwx ------ 即使您使用 su / sudo 并成为其他用户,您仍然只能同时成为一个用户,因此当您将文件复制回来时,仍然存在不足权限的问题。

所以。 。 。 使用 scp,把它当作网络环境处理就行了。顺便说一句,这个问题已经在这里得到回答(https://superuser.com/questions/353565/how-do-i-copy-a-file-folder-from-another-users-home-directory-in-linux),我只是因为这个在我的搜索结果中排名第一而选择回复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接