사용자가 fakeroot와 같은 도구를 사용하고 있는지 여부를 신경 쓰지 않고 사용자가 루트인지 알고 싶습니다. 사용자가 루트인지 fakeroot인지 어떻게 알 수 있습니까?
나는 기능getuid()
,
geteuid()
및
getlogin()
을 시도,하지만 난
fakeroot
명령을 실행하면 이들 각각은
root
대신 내 자신의 계정 정보를 전송한다. 이 코드에 대한
: 내가 좋아하는 뭔가를 좀하고 싶습니다 때
% fakeroot ./busybox rm
1000 1000 julien
하기 :
0 0 root
(로그인이 충분하다 여기
printf("%d %d %s\n", getuid(), geteuid(), getlogin());
내가 무엇을 얻을)
'fakeroot'의 정의에 따라 프로그래밍 방식으로 차이를 만들 수 없어야합니다. 최소한 바이너리가 동적으로 링크되어 있다면 ('fakeroot'는'LD_PRELOAD' 트릭을 사용합니다). –
@BasileStarynkevitch 왜 'fakeroot whoami'라고 입력하면 '뿌리'를 얻을 수 있습니까? –
약간 이상합니다.'fakeroot'는'get * uid' 호출을 가로 챕니다. 'busybox'는 정적 libc에 대해 컴파일됩니까? – nneonneo