sudo -E가 $HOME 환경 변수를 보존하지 않는 이유는 무엇입니까?

sudo -E가 $HOME 환경 변수를 보존하지 않는 이유는 무엇입니까?

echo $HOME내 Red Hat 컴퓨터에서 일반 사용자 계정을 사용하여 명령을 실행하면 을 얻습니다 /home/snrub. 명령을 실행 sudo vim foo.txt하고 vim 에 입력하면 을 echo $HOME얻습니다 /root. /home/snrubsudo를 사용하여 파일을 편집하는 경우에도 멋진 Vim 플러그인을 구문 분석할 수 있도록 반환하고 싶습니다 . sudo 매뉴얼 페이지에 따르면 -E또는 옵션이 작동해야 하지만 or 를 -H실행하면 홈 .vimrc 파일을 구문 분석하지 않고 를 입력할 때 반환되지 않습니다 .sudo -E vim foo.txtsudo -H vim foo.txtsudo -EH vim foo.txt/rootecho $HOME

또한 sudoers 파일에 다음 줄을 추가한 다음 저장해 보았습니다.

Defaults   env_keep += "HOME"

여전히 작동하지 않습니다. Vim을 실행 sudo vim foo.txt하고 입력해도 echo $HOME여전히 나타납니다 /root. 마찬가지로(엄격히 Vim 문제가 아닌지 확인하기 위해) 입력 sudo emacs foo.txt하고 Enter를 누른 다음 Alt-X를 입력 getenv하고 Enter를 누른 다음 입력 HOME하고 Enter를 누릅니다. 여전히 Will return 이 표시됩니다 /root. 어떻게 돌려받나요 /home/snrub?

답변1

sudo보안 예방 조치로 환경 변수(TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME 및 SUDO_*) 목록을 기본적으로 활성화된 옵션 으로 재설정하세요. HOME을 사용자 계정에서 환경 env_reset으로 이전하려면 다음을 수행해야 합니다.sudo

  • sudo 규칙에서 SETENV 태그와 옵션을 사용 -E하거나

  • 특히 이 env_reset옵션을 설정 해제하세요.

또한 이 옵션이 꺼져 있는지 확인하십시오 always_set_home(기본적으로).

보다sudoers 매뉴얼 페이지모든 세부정보와 상호작용을 확인하세요.

관련 정보