黑客whoami返回假用户名

时间:2012-07-12 01:59:10

标签: linux path hadoop username hdfs

我创建了一个新的whoami命令,该命令需要一个假的用户名,并通过将其添加到〜/ .profile将其放入PATH中。它是以一种whoami的方式创建的,之后实际上是来自Linux的实际whoami。

这样做的主要原因是因为我正在远程访问Hadoop集群并希望复制的文件位于假用户名下。

当我在shell中调用whoami并且甚至调用$ PATH在其他所有内容之前显示我创建的whoami的路径时,这样可以正常工作。但出于某种原因,当Hadoop被调用时,它不会选择创建的“whoami”。

有人可以帮我解决这个问题吗?

感谢

2 个答案:

答案 0 :(得分:2)

大多数应用程序不使用whoami来确定用户的用户名或组。例如,在bash中,您可以使用命令id查找有关您自己或id [username]的详细信息(例如id root),以查找有关其他用户的更多详细信息。也可以使用groups找到群组。此外,不同的编程语言(如C)也有自己的方法来确定用户身份,例如getuid()命令。

如果你真的“需要”伪造你的用户帐户,你需要深入到操作系统级别并创建处理这些方法的内核/ API的钩子。

是否有可能只是在复制文件后chown文件?

<强>更新

看来Hadoop的某些版本实际上使用whoami(我自己的实现没有集群)。

在这种情况下,最好的(一个松散使用的术语)建议是移动合法的whoami可执行文件并创建一个whoami shell脚本。自定义脚本应验证当前用户,如果它是“hadoop”,则返回您想要的任何伪造用户名 - 否则返回有效输出。伊戈尔的回答在这种情况下会有效。

答案 1 :(得分:2)

我认为hadoop使用了你的shell中的其他PATH变量。 您可以调整其PATH并将假冒whoami的目录添加到其开头。

如果不可能, 您可以为whoami编写一个小包装器(我不确定这是一个好主意,但如果您愿意,可以执行此操作)将运行原始whoami,除非脚本由hadoop执行:

#!/bin/sh
WHOAMI=/bin/whoami.orig
if [ "$($WHOAMI)" = hadoop ]
then
  echo fake
else
  exec $WHOAMI "$@"
fi