sudo를 실행하면 내 환경에는 정확히 어떤 일이 발생하나요?
실행하면 sudo command
내 환경이나 루트 환경이 표시되지 않는 것 같습니다. 예를 들어 내 경로가 모두 포함되어 있지만 /usr/local/bin
전체 경로 없이 프로그램 중 하나를 실행하려고 하면 실패합니다.
나는 sudo가 루트로 실행되고 있다고 생각하여 루트 환경을 얻었습니다. bash는 sudo에서 루트나 일반 사용자와 다르게 실행됩니까?
편집하다:
최근에 를 사용하고 있지만 sudo -i
현재 작업 디렉토리가 로 설정되어 있기 때문에 문제가 발생하고 있습니다 /root
. 이것은 예상대로 작동하지만 sudo가 내 실행 파일을 인식하지 못하는 이유를 여전히 이해하지 못합니다 /usr/local/bin
.
편집하다:
저는 Fedora 15를 사용하고 있습니다.
답변1
Fedora의 기본값은 모르지만 Debian에서는 옵션 의 sudo
기본값이 .secure_path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
이는 경로를 사용할 때마다 해당 값으로 변경되지만 sudo
이를 사용하면 sudo -i
루트 사용자의 RC 파일에 의해 경로가 변경된다는 의미입니다.
답변2
다음과 같이 쉽게 확인할 수 있습니다.
출력 비교
sudo env
env
이런 것들도 있어요
sudo whoami
whoami
이렇게 하면 설정에서 무엇이 누락되었는지 알아낼 수 있습니다.
답변3
이 sudo -i
명령은 초기 로그인을 시뮬레이션합니다. 내 데비안 시스템에는 다음과 같은 내용도 나와 있습니다.
이는 쉘이 .profile 또는 .login과 같은 로그인별 리소스 파일을 읽는다는 것을 의미합니다. 명령이 지정되면 실행을 위해 쉘로 전달됩니다. 그렇지 않으면 대화형 쉘이 실행됩니다. sudo는 쉘을 실행하기 전에 사용자의 홈 디렉토리로 변경을 시도합니다. 또한 환경을 초기화하여 DISPLAY 및 TERM을 변경하지 않고 HOME, MAIL, SHELL, USER, LOGNAME 및 PATH는 물론 Linux 및 AIX 시스템의 /etc/environment 내용도 설정합니다. 다른 모든 환경 변수는 제거됩니다.
답변4
를 포함하도록 매개변수를 sudo
조정할 수 있지만 그렇게 하면 보안에 미치는 영향을 염두에 두어야 합니다.env_keep
PATH
visudo
...이(가) 시작되면 $EDITOR
적절하게 ...을 변경할 수 있습니다.Defaults env_keep =
또는 /etc/profile.d
.
예를 들어:
cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF