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

wlzqhblo  于 2023-08-07  发布在  Shell
关注(0)|答案(7)|浏览(250)

我有两个linux用户(不是root用户)的登录名和密码,例如user 1和user 2。
如何使用一个shell脚本(一个脚本启动,无需手动切换用户)将文件从**/home/user 1/folder 1复制到/home/user 2/folder 2**。
我想我必须使用sudo命令,但没有找到确切的方法。

cl25kdpy

cl25kdpy1#

首先,如果你在用户终端去根使用
须岛
找到您的文件,然后使用
cp filename /home/user
如果文件在其他目录中
cp dir/filename /home/user

user>确保替换为您的用户名

使用检查文件移回用户
su用户

7kqas0il

7kqas0il2#

这个问题与跨用户的权限有关。
我相信默认情况下,home权限确实允许所有人将工作目录列表和更改为其他人的home:因此,在前面的回答中,人们没有意识到你可能遇到了什么。
有了更多的限制设置,就像我在我的网络主机上,非所有者用户无法做任何事情,例如。drwx--即使你使用su/sudo并成为另一个用户,你仍然只能是一个用户在同一时间,所以当你复制回文件,同样的问题,没有足够的权限仍然适用。
所以……使用scp代替,把整个事情当作一个网络环境,让我这样说,就是这样。顺便说一下,这个问题已经在这里回答过一次了(https://superuser.com/questions/353565/how-do-i-copy-a-file-folder-from-another-users-home-directory-in-linux),只关心回复,因为这是我搜索的第一个结果。

41zrol4v

41zrol4v3#

就这个:

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?以获取更多参考。

j13ufse2

j13ufse24#

/home/user1/folder1 /home/user2/folder2
sudo chown -R user2:user2 /home/user2/folder2
cp -a存档
chown -R递归地动作
复制文件,然后将权限授予user 2以访问它们。
复制所有文件,包括点文件、所有子目录,并且不要求在命令之前存在目录/home/user 2/folder 2。

mxg2im7a

mxg2im7a5#

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

p4rjhz4m

p4rjhz4m6#

我想你需要使用这个命令

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

字符串
此命令允许您以特定用户的身份从任何文件路径复制内容。
PS:父目录至少应该是列表式的,以便从其中复制文件。

wfypjpf4

wfypjpf47#

只需要添加到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


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


就这些了

希望这能帮上忙

相关问题