我有两个linux用户(不是root用户)的登录名和密码,例如user1和user2。
如何复制文件 从 / home / user1 / folder1 到 / home / user2 / folder2 ,使用一个shell脚本(一个脚本启动,无需手动切换用户)。
我想我必须使用sudo命令,但没有找到确切的结果。
答案 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
接下来,我将我需要的所有目录从 home
的 stage_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),只有回答是因为这是我搜索的第一个结果。