10

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

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

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

4

6 回答 6

6

只是这个:

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

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

-r也需要复制隐藏文件。请参阅如何使用 cp 复制以包含隐藏文件和隐藏目录及其内容?以供进一步参考。

于 2013-09-18T09:53:45.710 回答
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 在命令之前存在。

于 2015-08-05T09:25:49.550 回答
1
(shopt -s dotglob; cp -a /home/user1/folder1/* /home/user2/folder2/)

Will copy all files (including those starting with a dot) using the standard cp. The /folder2/ should exist, otherwise the results can be nasty.

Often using a packing tool like tar can be of help as well:

cd /home/user1/folder1
tar cf - . | (cd /home/user2/folder2; tar xf -)
于 2013-09-18T10:36:25.983 回答
0

我认为您需要使用此命令

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

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

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

于 2019-01-02T16:08:14.847 回答
0

只是为了添加到fedorqui '所以停止伤害'的答案。

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

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

sudo adduser prod_user

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

sudo adduser prod_user sudo

接下来,我将我需要的所有目录从home目录复制stage_userprod_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

就这样。

我希望这有帮助

于 2021-03-29T18:37:40.197 回答
-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),只关心回复,因为这在我的搜索中排名第一。

于 2014-10-24T08:21:19.567 回答