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

표준이 얼마나 되는지 잘 모르겠지만 적어도 우분투 시스템에서는 sudo다음 환경 변수를 설정합니다(다른 환경 변수 중에서 - ENVIRONMENTsudo 맨페이지 섹션 참조).

   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.

관련 정보