我有几个文件想要移动到另一个用户的主目录。我无权写入该用户的主目录,但我知道他的密码。
我知道怎么做复制文件使用scp
(参见这里)。但是,如果我想移动文件,复制然后删除原始文件的效率很低。有没有办法移动该文件,而不使用sudo
(我不知道 root 的密码)?
答案1
根据目标用户实际上可以访问其原始位置的文件的某些假设,以下方法可能有效:
SRC='/path/to/existing/file'
DST='/path/to/new/file'
su target_user sh -c "ln -f '$SRC' '$DST'" && rm -f "$SRC"
这会将文件“移动”到新用户的位置,但不会更改所有权或权限。
答案2
su
如果您知道密码,您可以访问任何用户。 (对于 sudo,您需要成为 sudoer,并且知道自己的密码)。
因此,使文件可读且目录可写(用于删除),将文件添加到共享组,或使用访问控制列表(ACL)setfacl
(在 gnu/linux 上设置文件权限等有哪些不同方法)
然后su other user
然后做动作。
另请参阅 @roaima 的答案,了解如何在不向接收用户授予写访问权限的情况下执行此操作。