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