sudo로 어떤 환경을 이용할 수 있습니까?


15

sudo를 실행하면 내 환경은 정확히 어떻게됩니까?

내가 실행하면 sudo command내 환경이나 루트 환경이 보이지 않는 것 같습니다. 예를 들어 두 경로 모두에 포함 /usr/local/bin되지만 전체 경로없이 프로그램 중 하나를 실행하려고하면 실패합니다.

나는 sudo가 루트로 실행되었다고 생각하여 루트 환경을 얻었습니다. bash가 sudo에서 root 또는 일반 사용자와 다른 방식으로 실행됩니까?

편집하다:

sudo -i최근 에 사용 하고 있지만 최근에 현재 작업 디렉토리가로 설정되어 문제가 발생했습니다 /root. 이것은 예상대로이지만 (sorta) sudo가에서 실행 파일을 인식하지 못하는 이유를 여전히 이해하지 못합니다 /usr/local/bin.

편집하다:

Fedora 15를 실행 중입니다.


어떤 OS를 사용하고 있습니까 (Linux 인 경우 어떤 배포판)? 구성하는 방법에는 여러 가지가 PATH있으며 때로는 마지막으로 재정의하는 사람을 찾기가 쉽지 않습니다. 일부 시스템 설정 (예 : PAM), sudo 자체 또는 후속 프로필 스크립트 일 수 있습니다.
Gilles 'SO- 악한 중지'

@ Gills- 좋은 지적입니다. OS를 추가했습니다. 나는 Fedora (Ubuntu를 사용했었다)에서만 이것을 실제로 알았지 만 많은 편의 설정을 추가하지 않았기 때문이라고 생각했다.
beatgammit

답변:


6

Fedora의 기본값에 대해서는 모르지만 Debian의 sudo기본값은 secure_path옵션을 기본값으로 사용합니다 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin.

즉, 사용할 때마다 경로가 해당 값으로 변경됩니다 sudo. 그러나를 사용 sudo -i하면 루트 사용자의 RC 파일이 경로를 변경합니다.


나는 secure_path옵션 에 대해 몰랐다 . 기본값은 /usr/local/bin설치에 포함되지 않았습니다 . 고마워, 이것은 정말로 물건을 정리하는 데 도움이되었습니다!
beatgammit

4

다음과 같은 것들로 이것을 쉽게 확인할 수 있습니다

의 출력을 비교

sudo env 
env

그리고 같은 것들

sudo whoami 
whoami

이렇게하면 설정에서 누락 된 부분을 찾을 수 있습니다.


쿨, 그것에 대해 몰랐다. 어쨌든, /usr/local/binsudo env에는 없지만 내 루트 env 및 사용자 env에 있습니다. 왜 이런거야?
beatgammit

sudo whoami가 root예상대로 반환합니다 . sudo env가 루트 env와 다른 원인은 무엇입니까?
beatgammit

모릅니다. 그러나 어딘가에 누락 된 설정이 있어야합니다. / usr / local / bin이 일반적으로 포함됩니다. 어쩌면 일부 구성 파일에서 $ PATH env를 실수로 지웠습니까?
Johan

sudo 소스는 /root/.bashrc입니까? 그것이 /usr/local/bin루트의 경로에 추가되는 곳입니다 (불행히도 수동으로해야 했습니까)?
beatgammit

쉘 전역 설정을 수정하고 어떻게되는지 확인해야한다고 생각합니다. bash를 실행한다면 /etc/bash.bashrc와 같은 것입니다
Johan

2

sudo -i명령은 초기 로그인을 시뮬레이션합니다. 내 데비안 시스템에서는 다음과 같이 말합니다.

이는 .profile 또는 .login과 같은 로그인 특정 자원 파일을 쉘에서 읽음을 의미합니다. 명령이 지정되면 실행을 위해 셸로 전달됩니다. 그렇지 않으면 대화식 쉘이 실행됩니다. sudo는 쉘을 실행하기 전에 해당 사용자의 홈 디렉토리로 변경하려고 시도합니다. 또한 Linux 및 AIX 시스템에서 / etc / environment의 내용뿐만 아니라 HOME, MAIL, SHELL, USER, LOGNAME 및 PATH를 설정하여 DISPLAY 및 TERM을 변경하지 않고 환경을 초기화합니다. 다른 모든 환경 변수가 제거됩니다.


0

당신은 조정할 수 sudoenv_keep포함하는 매개 변수를 PATH당신이 마음에 그 일의 보안 문제를 유지해야하지만,.

visudo

...을 시작 $EDITOR하면 다음을 변경할 수 있습니다.Defaults env_keep = ...을 적절 .

또한 파일을 추가하여 시스템 경로에 / usr / local / bin을 추가 할 수 있습니다 /etc/profile.d 있습니다.

예 :

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF

sudo특별한 처리가 PATH있으므로 이것을해서는 안됩니다.
Arrowmaster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.