在Linux中将文件从用户复制到另一个用户

在Linux中将文件从用户复制到另一个用户

我正在尝试将文件从我的主目录复制到另一个用户的目录。我对其他用户有 sudo 访问权限,没有密码。我尝试做类似的事情:

sudo secondUser cp /home/firstUser/file /home/secondUser 

有没有办法做到这一点?我也没有 root 访问权限,也不知道第二个用户的密码。

答案1

编辑:有一种无需额外设置即可快速轻松完成此操作的方法。

cat ~firstUser/file | sudo -u secondUser tee ~secondUser/file >/dev/null

这将传输所有文件的内容确切地。如果您关心文件权限和/或时间戳是否与原始文件匹配,则需要使用chmod和分别修复它们touch


原答案:

这里的问题是:

  • secondUser无权访问您的主目录。
  • 您无权访问secondUser的主目录。

因此,无论您cp以您自己的身份还是以 的身份运行该命令secondUser,都无法执行文件复制。

鉴于您说您没有root访问权限,显而易见的答案是通过中间世界可读位置复制文件,例如/tmp并将文件的权限更改为世界可读。但是,如果文件中的数据敏感,您可能不想这样做,因为服务器上的任何人都可以在文件传输过程中读取该文件。如果它是不是敏感数据,只需执行以下操作:

cp file /tmp/
chmod a+r /tmp/file
sudo -u secondUser cp /tmp/file ~secondUser
rm /tmp/file

如果您可以安排的话,更好的选择是创建一个仅包含您和 的组secondUser,并且chgrp中的文件副本/tmp归该组所有。这样你就不需要制作文件了世界- 可读,但只能由组可读(带有chmod g+r /tmp/file)。然而,groupadd它本身需要 root 访问权限,因此这不太容易安排。根据具体情况(如果您经常尝试与之共享/协作secondUser可能适用),您可以考虑要求管理员设置此组以供将来使用。

答案2

问题在于:

sudo -u secondUser cp /home/firstUser/file /home/secondUser 

就是一旦你成为了secondUser,你就无权访问/home/firstUser/file

secondUser解决方案是您需要打开as的文件firstUser并继承secondUser该文件描述符。

作为一项安全措施,将关闭除、和sudo之外的所有文件描述符;但是,在这种情况下,这就是您所需要的(您可以显式允许继承更多文件描述符):012

sudo -u secondUser < /home/firstUser/file sh -c 'cat > /home/secondUser/file' 

tar对于具有可能的元数据保存的更通用的解决方案,您可以将类似或的输出放在cpio流程sudostdin

 tar c file1 file2 file3 | sudo -u secondUser tar x -C ~secondUser

答案3

sudo 的 -u 标志将允许您指定应在其下运行命令的用户帐户,但要求您知道其他用户的密码。

sudo -u secondUser cp file /home/secondUser/file

如果您不知道其他用户的密码,您可能无法执行此操作。这是系统正常权限分离设计的一部分,理想情况下应该无法绕过。

您还可以将该文件移动到两个用户帐户都可以访问的位置(例如 /tmp),并让第二个用户将其移动到自己的主目录。

答案4

将文件复制到 /tmp 并将权限更改为 777. su给第二个用户。从 /tmp 复制文件。
该命令sudo secondUser无效。

相关内容