bash 스크립트를 sudo로 실행하기 위해 사용자 이름을 얻는 방법은 무엇입니까?

bash 스크립트를 sudo로 실행하기 위해 사용자 이름을 얻는 방법은 무엇입니까?

sudo를 사용하여 실행해야 하는 bash 스크립트를 만들고 싶지만 이를 실행하는 sudo가 아닌 사용자의 이름을 고려해야 합니다. 그래서 사용자가 bob실행 하면 누가 실행했는지 알고 sudo ./myscript.sh싶습니다 .myscript.shbob

내부를 살펴보겠습니다 myscript.sh.

USER=$(whoami)
# Do something that takes into account the username.

프로세스를 생성한 사용자의 이름을 어떻게 알 수 있나요? 좀 더 구체적으로, whoamiget bob과 not 대신 무엇을 사용해야 합니까 root?

답변1

표준이 얼마나 되는지 잘 모르겠지만 적어도 Ubuntu 시스템에서는 sudo다음과 같은 환경 변수가 설정되어 있습니다(다른 환경 변수 중에서 - ENVIRONMENT매뉴얼 페이지의 sudo 섹션 참조).

   SUDO_UID        Set to the user ID of the user who invoked sudo

   SUDO_USER       Set to the login of the user who invoked sudo

예를 들어,

steeldriver@lap-t61p:~$ sudo sh -c 'whoami'
root
steeldriver@lap-t61p:~$ sudo sh -c 'echo $SUDO_USER'
steeldriver

답변2

sudo없이 작동하려면 다음을 사용하십시오 ${SUDO_USER:-$USER}.

printf '%s\n' "${SUDO_USER:-$USER}"

${var:-val}설정되지 않거나 비어 있지 않는 한 으로 확장됩니다 $var. 이 경우 로 확장됩니다 val.

관련 정보