sudo su를 사용할 때 SUDO_* 환경 변수가 설정되지 않습니다.

sudo su를 사용할 때 SUDO_* 환경 변수가 설정되지 않습니다.

sudo su - user1특정 사용자를 원하고 스크립트를 실행한 다음 얻고 싶은 스크립트 내에서 사용하는 경우가 있습니다 SUDO_USER. 그러나 대신 사용하면 SUDO_*환경 변수가 설정되지 않습니다.sudo su - user1sudo su app

sudo su user1
[sudo] password for rbhanot:
$ env | grep -i sudo
SUDO_COMMAND=/bin/su user1
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot 

su로그인 셸을 사용하여 호출 하면 이러한 변수가 설정되지 않습니다.

sudo su - user1
$ env|grep -i sudo
$

약간 다른 명령을 사용하면 작동합니다.sudo -i

sudo -i -u user1
$ env|grep -i sudo
SUDO_COMMAND=/bin/ksh
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot

SUDO_*그렇다면 이러한 변수가 su - user1구체적으로 얻어지지 않은 이유는 무엇입니까 ?

답변1

-i 없이 시도하면 변수가 작동할 것입니다.

그래도 작동하지 않으면 명령줄에서 변수를 지정하도록 하는 것이 좋습니다. 이상적이지는 않을 수도 있지만 사용자에게 원하는 유연성을 제공할 것입니다.

ie.  sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh

사용자가 이를 기억해야 하는 경우 .bash_profile에 별칭을 추가할 수 있습니다.

ie.  alias myroot="sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh"

그런 다음 "myroot"를 입력하면 작성된 대로 sudo 명령이 실행됩니다.

관련 정보