Unix环境下跨用户家目录复制文件权限问题咨询
跨用户目录复制文件并设置目标权限的解决方案
我来给你梳理个靠谱的操作流程,完全符合你的需求:
- 首先切换到
user1身份:如果当前是user2账号,直接执行su - user1,输入user1的密码即可切换;如果是管理员账号,同样用su - user1切换过去。 - 方案一:用管道直接传递内容(更安全,无临时文件残留)
在user1的会话中执行这条命令,输入user2的密码即可完成复制并设置权限:
原理:通过管道把源文件内容传给cat /home/user1/file.txt | su user2 -c "cat > /home/user2/file.txt && chown user2:user2 /home/user2/file.txt"su user2启动的会话,在user2身份下写入目标路径,同时直接修改文件的所属用户为user2。 - 方案二:借助临时目录(适合大文件,管道传输效率更高)
- 先把源文件复制到公共临时目录(比如
/tmp,所有用户都能访问):cp /home/user1/file.txt /tmp/temp_file.txt - 接着在
user1身份下,切换到user2完成最终复制和权限设置,顺便清理临时文件:
原理:先把文件放到双方都能访问的临时区域,再用su user2 -c "cp /tmp/temp_file.txt /home/user2/file.txt && chown user2:user2 /home/user2/file.txt && rm /tmp/temp_file.txt"user2的权限写入目标目录,最后清理临时文件避免残留。
- 先把源文件复制到公共临时目录(比如
注意:两种方案都需要你知道user2的密码,因为user1执行su user2时需要验证凭据,这完全符合你作为管理员知晓双方密码的前提。
内容的提问来源于stack exchange,提问作者Tuomas Toivonen
相关产品推荐
相关产品推荐

