传输二进制文件时通过 uid0 和 setuid 位设置保留所有权

传输二进制文件时通过 uid0 和 setuid 位设置保留所有权

如果我有一个由 uid0 (root) 拥有的二进制文件,并且在我的系统上设置了 setuid 位 (就像 sudo 本身一样),那么有什么办法可以将其发送到另一台具有不同用户的计算机,同时保留这些权限吗?如果是,那么是否有可能将一个模拟 sudo 功能并执行一些其他操作的二进制文件发送给另一个用户,并在他的计算机上定期运行它 (不使用 sudo),从而授予该程序升级的 (root) 权限?

如果我的整个理解是错误的,我很抱歉,但我读过一些关于类似问题的其他答案,这确实让我很困惑。

答案1

不,如果您在目标系统上使用自己的用户帐户执行转移,那么新副本也将始终归您所有。

文件并不是简单地“发送”,传输工具(接收方)总是要创建一个新的文件,然后手动设置所有参数(权限、所有权等),以匹配它对原始文件的了解。因此,传输工具显然需要拥有所有这些权限——如果它不是以 root 身份运行,它不能将新文件的所有者更改为除您自己之外的任何人。


可能存在例外。例如,您可以传输文件系统映像(例如伪装成 .iso 的 Ext4 映像)并让接收者挂载它。这将完全保留所有权和文件权限。

但是,挂载文件系统映像需要 root 权限,因此,如果你没有 root 权限,它仍然无法帮助你在目标系统上获得 root 访问权限。已经拥有它。(在 GNOME 中,双击磁盘映像将无需权限即可挂载它,但设置选项以忽略 setuid 模式 - 即文件系统挂载是nosuid为了防止这种欺骗。)

相关内容