2012-07-12 3 views
0

가짜 사용자 이름이 필요하고 ~/.profile에 추가하여 PATH에 넣은 새로운 whoami 명령을 만들었습니다. 실제로는 리눅스에서 실제 whoami 전에 whoami이 호출되는 방식으로 생성됩니다.위장한 사용자 이름을 되 돌리는 whoami 해킹

주된 이유는 내가 Hadoop 클러스터에 원격으로 액세스하여 복사 된 파일을 위조 된 사용자 이름 아래에 있기 때문입니다.

셸에서 whoami을 호출하면 제대로 작동하며 $ PATH를 호출해도 다른 모든 것보다 먼저 만든 Whami에 대한 경로가 표시됩니다. 그러나 어떤 이유로 Hadoop이 호출 될 때 생성 된 'Whoami'를 선택하지 않습니다.

누군가이 문제를 해결하는 방법을 알려 줄 수 있습니까?

감사

답변

2

대부분의 응용 프로그램은 사용자의 사용자 이름 또는 그룹을 결정하기 위해 whoami를 사용하지 마십시오. 예를 들어, bash에서는 명령어 id을 사용하여 자신에 관한 더 자세한 정보를 얻거나 id [username] (예 : id root)을 사용하여 다른 사용자에 대한 더 자세한 정보를 얻을 수 있습니다. 그룹은 groups으로 찾을 수 있습니다. 또한 C와 같은 다른 프로그래밍 언어에는 getuid() 명령과 같은 사용자 ID를 결정하는 고유 한 방법이 있습니다.

사용자 계정을 위조하는 데 정말로 "필요"하다면 OS 수준으로 내려 가서 해당 방법을 처리하는 커널/API에 후크를 만들어야합니다.

대신 파일을 복사 한 후 chown 파일을 단순히 사용할 수 있습니까?

UPDATE :

그것은 하둡의 일부 버전은 실제로 whoami 사용합니까 나타납니다 (W 내 자신의 구현을/클러스터링하지 않습니다).

이 경우 가장 적합한 (약하게 사용되는 용어) 제안은 합법적 인 whoami 실행 파일을 옮기고 해당 위치에있는 whoami 쉘 스크립트를 만드는 것입니다. 사용자 정의 스크립트는 현재 사용자의 유효성을 검사해야하며 "hadoop"인 경우 사용자가 위조 한 사용자 이름을 반환합니다. 그렇지 않으면 유효한 출력을 반환합니다. 이고르의 대답은이 경우에 효과가 있습니다.

+0

Hadoop은'whoami' 명령을 사용하고 있지만, reze는 Hadoop이 올바른 경로를 선택하도록 path에 새로운'whoami' 명령을 올바르게 설정할 수 없습니다. –

+0

합법적 인'whoami' 스크립트에 대한 래퍼를 제안함으로써'whoami'를 사용하는 Hadoop을 지원하겠다는 제 대답이 업데이트되었습니다. – newfurniturey

2

나는 hadoop이 다른 변수 인 PATH을 사용하고 있다고 가정합니다. PATH를 조정하고 fake whoami으로 디렉토리를 처음에 추가 할 수 있습니다.

당신이 스크립트가 실행되는 경우를 제외하고 원래 whoami를 실행 whoami위한 작은 래퍼 (나는 그것이 좋은 생각이다 모르겠어요하지만 당신이 원하는 경우이 작업을 수행 할 수 있습니다) 쓸 수 불가능한 경우 by hadoop :

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

감사합니다. 이것은 좋은 제안입니다. 너 hadoop의 오른쪽 PATH를 조정하는 방법을 알려주시겠습니까? 나는 무엇을 바꾸어야하는지 전혀 모른다. – reza

+0

'hadoop-env가 있어야합니다.sh'를 설치하십시오. 거기에'PATH'를 지정해야합니다. –

관련 문제