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