我有两个 linux 用户(不是 root)的登录名和密码,例如 user1 和 user2。
如何使用单个 shell 脚本(启动单个脚本,无需手动切换用户)将文件从/home/user1/folder1复制到/home/user2/folder2 。
我想我必须使用 sudo 命令,但没有找到确切的方法。
只是这个:
cp -r /home/user1/folder1/ /home/user2/folder2
如果添加-p
(so cp -pr
),它将保留文件的属性(模式、所有权、时间戳)。
-r
也需要复制隐藏文件。请参阅如何使用 cp 复制以包含隐藏文件和隐藏目录及其内容?以供进一步参考。
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 在命令之前存在。
(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 -)
我认为您需要使用此命令
sudo -u username /path1/file1 /path2/file2
此命令允许您以特定用户身份从任何文件路径复制内容。
PS:父目录至少应该是可列出的,以便从中复制文件。
只是为了添加到fedorqui '所以停止伤害'的答案。
当我尝试在 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
就这样。
我希望这有帮助
这个问题与跨用户的权限有关。
我相信默认情况下,家庭权限确实允许所有人列出并将工作目录更改为另一个人的家:例如。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),只关心回复,因为这在我的搜索中排名第一。