sudo로 쉘을 시작할 때 $HOME이 상속되는 이유는 무엇입니까?

sudo로 쉘을 시작할 때 $HOME이 상속되는 이유는 무엇입니까?

Vagrant box를 설정하고 있는데 이상한 점을 발견했습니다.

root@box:~# sudo --user=vagrant bash
bash: /root/.bashrc: Permission denied
vagrant@box:~$ export
declare -x HOME="/root"

왜 여기에 HOME설정되어 있습니까 /root? 사용자 vagrant의 홈 디렉토리는 다음과 같습니다 /root.

vagrant@box:~$ grep vagrant /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash

온라인에서 찾은 모든 내용은 환경 변수를 방지하는 방법이 아니라 환경 변수를 상속하는 방법에 대해 설명합니다. sudoers 파일에는 env_reset기본값이 포함되어 있습니다. 이 행동을 제어하는 ​​다른 것이 무엇인지 모르겠습니다.

답변1

이것은 선택입니다. 마음에 들지 않으면 -i또는 -H옵션을 사용하거나 구성을 변경하세요. sudo(8) 매뉴얼 페이지에는 다음과 같이 나와 있습니다 HOME.

또는 이 지정되거나 -i에서 또는 이 지정되고 이 옵션이 설정된 경우 대상 사용자의 홈 디렉터리로 설정됩니다.-Henv_resetalways_set_homesudoers-sset_homesudoers

env_resetUbuntu에서는 실제로 효과가 없습니다 $HOME(그러나 아래 참조). 이는 매뉴얼 페이지의 부정확성입니다. 바라보다런치패드 버그 #889936.

추가 정보

env_reset일부 환경 변수는 제공될 때 여전히 유지될 수 있습니다. 옵션을 사용하여 변경할 수 있는 컴파일 시간 기본값이 있습니다 env_keep. 자세한 내용은 sudoers(5) 매뉴얼 페이지를 참조하십시오. sudo -V루트 아래 출력 의 "보존할 환경 변수:"에서 이러한 환경 변수 목록을 볼 수 있습니다. 특히 HOMEUbuntu에는 기본적으로 나열되어 있지만 Debian에는 나열되어 있지 않습니다.

자세한 내용은 다음을 참조하세요.

관련 정보