샘플 명령 :
drush cc all
작동하지만 이것은 :
sudo drush cc all
나에게 준다 :
sudo: drush: command not found
왜? 이 문제를 해결하는 방법?
답변
당신 sudo
은 미리 설정 $PATH
되어 있는데, 루트 사용자의 기본 경로 와 같은 것 입니다. 프로그램이로 식별 된 디렉토리 목록에 없습니다 $PATH
.
예를 들어보십시오
sudo
$ PATH를 유지 하는 방법 ?- sudo 및 su를 통해 실행할 때 PATH 변수가 다른 이유는 무엇입니까?
- sudoers (5) (관련 다양한 설정 참조
PATH
) - 스도 (8)
sudo 는 외부 명령을 실행할 때 안전하려고합니다.
환경 변수를 처리하는 두 가지 방법이 있습니다.
env_reset
sudoers
옵션은 기본적으로 사용됩니다. 이 원인 명령을 포함하는 최소한의 환경을 실행하는TERM
,
PATH
,HOME
,SHELL
,LOGNAME
,USER
및USERNAME
호출 프로세스에서 변수 외에 허용env_check
과env_keep
의 sudoers 옵션. 환경 변수에 대한 화이트리스트가 효과적으로 있습니다.
sudo
를 유지 하도록 구성 할 수없는 경우 $PATH
일반적인 해결 방법은 프로그램의 전체 경로 이름을 지정하는 것입니다. (액세스되지 않은) 디렉토리의 다른 실행 파일을 호출하는 스크립트에서는 제대로 작동하지 않을 수 있습니다.
답변
전체 경로를 지정해야합니다. 또한 더 안전합니다. 경로를 지정하지 않으면 공격자가 루트 권한으로 실행될 다른 프로그램을 만들 수 있습니다.
또한 /etc/sudoers
허용하려면 줄을 넣어야 합니다. man sudoers
구문의 경우 여기에 넣기가 너무 많습니다.