答案1
移动文件(不更改其所有权)只需要能够写入包含它们的目录。因此,要将/home/usera/dir1/dir2
其内容移动到/home/userb/dir3
,从 开始usera
:
cd ~/dir1
find . -type d -print0 | xargs -0 chmod 777
su userb
cd ~/dir3
mv ~usera/dir1/dir2 .
exit
然后,usera
将权限恢复为应有的权限(特别是在 上dir1
)。
usera
但仍将保留移动文件的所有者,这可能不方便。另一种选择是执行类似的操作,使用cp -rl
;创建链接场。这在类似的条件下工作,并且具有创建属于userb
.
答案2
我会做与 Kupferdache 相反的事情:
我会在我的家中创建一个公共可写目录,转到另一个帐户并将文件移动到我的目录,然后更改回目录权限。
注意:这是一个真正的举动。然后您应该根据需要设置权限。所以你的解决方案是SCP可能是安全的(您这边安全且良好的文件权限)
答案3
这能满足您的需求吗? rsync 会将目录、文件和权限复制到目标目录。
rsync -avz /path/to/files target_server:/path_to_files
编辑:如果复制成功,您可以添加标志以删除原始文件。
答案4
是的,您不想要这样,所以让我们尝试一些不同的东西!
1-以其他用户身份执行命令,不再要求输入密码:
首先,您需要准备环境,这样您就不需要密码来执行命令。
准备用户2:
user2@machine:~$ cp /bin/bash .bash
user2@machine:~$ chmod a+s /home/user2/.bash
是的,现在 user1 您可以以 user2 身份登录,无需任何密码!
user1@machine:~$ /home/user2/.bash -p
bash-4.3$ whoami
user2
现在在 user1 中,您无需任何密码即可执行此操作。
user1@machine:~$ chmod -R 777 source ; /home/user2/.bash -pc "mv source dest"
但这可能非常不安全,因为如果其他用户发现 /home/user2/.bash -p 将以 user2 身份登录而无需密码,那么您的安全将不安全。如果您在一个公共组中有两个用户,那么这将是安全的,因此您将使用 chmod ug+s 而不是 chmod a+s 来准备您的环境,并且只有该组中的用户才能像其他用户一样运行 bash!很好不是吗?
2- 执行要求密码的操作(更安全):
如果您没有公共组中的用户并且想要像其他用户一样运行命令,您可以考虑使用密码询问版本,如下所示:
user1@machine:~$ chmod -R 777 source ; su user2 -c "mv source dest"
这有帮助吗?