我有两个linux用户(不是root用户)的登录名和密码,例如user 1和user 2。如何使用一个shell脚本(一个脚本启动,无需手动切换用户)将文件从**/home/user 1/folder 1复制到/home/user 2/folder 2**。我想我必须使用sudo命令,但没有找到确切的方法。
cl25kdpy1#
首先,如果你在用户终端去根使用须岛找到您的文件,然后使用cp filename /home/user如果文件在其他目录中cp dir/filename /home/user
user>确保替换为您的用户名
使用检查文件移回用户su用户
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),只关心回复,因为这是我搜索的第一个结果。
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?以获取更多参考。
-p
cp -pr
-r
j13ufse24#
/home/user1/folder1 /home/user2/folder2sudo chown -R user2:user2 /home/user2/folder2cp -a存档chown -R递归地动作复制文件,然后将权限授予user 2以访问它们。复制所有文件,包括点文件、所有子目录,并且不要求在命令之前存在目录/home/user 2/folder 2。
mxg2im7a5#
(shopt -s dotglob; cp -a /home/user1/folder1/* /home/user2/folder2/)
字符串将使用标准cp复制所有文件(包括以点开头的文件)。/folder2/应该存在,否则结果可能会很糟糕。经常使用像tar这样的打包工具也会有所帮助:
cp
/folder2/
tar
cd /home/user1/folder1 tar cf - . | (cd /home/user2/folder2; tar xf -)
型
p4rjhz4m6#
我想你需要使用这个命令
sudo -u username /path1/file1 /path2/file2
字符串此命令允许您以特定用户的身份从任何文件路径复制内容。PS:父目录至少应该是列表式的,以便从其中复制文件。
wfypjpf47#
只需要添加到fedorqui 'SO stop harming'答案。当我试图在Ubuntu 20.04机器上将服务器的默认管理员用户从stage_user更改为prod_user时,我遇到了同样的挑战:首先,我使用下面的命令创建了一个prod_user:
stage_user
prod_user
sudo adduser prod_user
字符串然后我将新创建的prod_user添加到sudo组:
sudo adduser prod_user sudo
型接下来,我将所需的所有目录从stage_user的home目录复制到prod_user:
home
sudo cp -r /home/stage_user/folder1/ /home/prod_user/
型接下来,我将复制的文件夹的所有权从stage_user更改为prod_user,以避免权限问题:
sudo chown prod_user:prod_user /home/prod_user/folder1
型就这些了
希望这能帮上忙
7条答案
按热度按时间cl25kdpy1#
首先,如果你在用户终端去根使用
须岛
找到您的文件,然后使用
cp filename /home/user
如果文件在其他目录中
cp dir/filename /home/user
user>确保替换为您的用户名
使用检查文件移回用户
su用户
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),只关心回复,因为这是我搜索的第一个结果。
41zrol4v3#
就这个:
字符串
如果你添加
-p
(所以cp -pr
),它将保留文件的属性(模式,所有权,时间戳)。-r
也需要复制隐藏文件。参见How to copy with cp to include hidden files and hidden directories and their contents?以获取更多参考。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。
mxg2im7a5#
字符串
将使用标准
cp
复制所有文件(包括以点开头的文件)。/folder2/
应该存在,否则结果可能会很糟糕。经常使用像
tar
这样的打包工具也会有所帮助:型
p4rjhz4m6#
我想你需要使用这个命令
字符串
此命令允许您以特定用户的身份从任何文件路径复制内容。
PS:父目录至少应该是列表式的,以便从其中复制文件。
wfypjpf47#
只需要添加到fedorqui 'SO stop harming'答案。
当我试图在Ubuntu 20.04机器上将服务器的默认管理员用户从
stage_user
更改为prod_user
时,我遇到了同样的挑战:首先,我使用下面的命令创建了一个
prod_user
:字符串
然后我将新创建的
prod_user
添加到sudo组:型
接下来,我将所需的所有目录从
stage_user
的home
目录复制到prod_user
:型
接下来,我将复制的文件夹的所有权从
stage_user
更改为prod_user
,以避免权限问题:型
就这些了
希望这能帮上忙