[unix] `sudo`를 $ PATH로 유지하는 방법?

/ opt / godi / sbin (사용자 정의 디렉토리)에 설치된 프로그램을 실행해야합니다. 해당 디렉토리를 PATH에 추가하면 .bashrc 파일에 다음 줄을 추가하여

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin

그런 다음 명령을 제대로 실행하려고 시도 할 수 있습니다 (sudo가 필요하기 때문에 실패한다는 것을 제외하고). 그러나 sudo를 사용하려고하면 :

sudo godi_console

다음과 같은 오류가 발생합니다

sudo: godi_console: command not found

sudo를 사용한 후 PATH 변수를 검사하면 일반 사용자와 동일한 PATH가 포함되어 있지 않습니다.

$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PATH가 다른 이유는 무엇입니까? 내가 뭔가 잘못하고 있습니까? 나는 데비안 Jessie를 사용하고 있지만 불행히도 sudi 절대 링크를 godi_console에 전달하여 문제를 해결할 수 없습니다. godi_console 자체도 올바르게 설정된 PATH에 의존하기 때문입니다.



답변

당신은 항상 할 수 있습니다 :

sudo env "PATH=$PATH" godi_console

데비안에 대한 보안 조치로서, /etc/sudoerssecure_path안전한 값으로 설정 옵션을 선택합니다.

참고 :

sudo "PATH=$PATH" godi_console

어디에서 sudo취급이 포함 된 인수 선도 =자체가 환경 변수 할당과 같은 문자를, 또한 실행에서 일하는 것이 godi_console당신의 $PATH 합니다 (반대 secure_path의 환경에서)하지만, 영향을 미치지 않을 것 sudo‘의 실행 파일의 검색 경로를, 그래서 도움이되지 것입니다 sudo것을 찾는 godi_console.


답변

당신은 또한 기본 경로를 설정할 수 있습니다 /etc/sudoers

파일을 사용하여 편집 visudo

원하는대로 라인을 업데이트하십시오.
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin


답변

SUDO는 기본적으로 env 변수를 재설정합니다.

env_reset이라는 매뉴얼과 옵션을 확인하십시오.

/ etc / sudoers에서 비활성화해야합니다.


답변

이것은 작동합니다 :

sudo $(which your_command)

gpsNvidia GPU의 프로세스를 나열하는 스크립트를 호출하는 예 :

$ sudo gps
sudo: gps: command not found
$ sudo $(which gps)
  PID TTY          TIME CMD
 9922 tty7     02:42:47 Xorg

설명 :

$ set -x;sudo $(which gps);set +x
++ which gps
+ sudo /home/xyztuv/myScripts/shl/gps
  PID TTY          TIME CMD
 9922 tty7     02:42:39 Xorg
+ set +x


답변

sudo --preserve-env=PATH env [command]

이것은 내 끝에 secure_path를 ovverrides


답변

이것은 효과가 있었다 :

sudo "PATH=$PATH" [your command]

경로 값으로 $ PATH를 변경하지 말고 다음과 같이 작성하십시오.

예: $ sudo env "PATH=$PATH" ant -f webAppConfig.xml regenWebAppConf....


답변

OP가 요구하는 것을 정확하게하지는 않지만 도움이 될 수 있습니다.

sudo -u the_user PATH=$PATH:/opt/godi/bin sh -c 'echo $PATH'

이것은 sudoed 명령 내부 의 PATH를 변경합니다 .

편집 : 위의 내용이 거의 말이되지 않기 때문에 이것이 무엇을 의미하는지 잘 모르겠습니다. 대신 다음을 사용하십시오.

sudo -u the_user sh -c 'PATH=$PATH:/opt/godi/bin echo $PATH'