일부 명령을 sudo할 수 없는 이유는 무엇입니까? (예: 정력)

일부 명령을 sudo할 수 없는 이유는 무엇입니까? (예: 정력)

Centos-6.3을 실행하는 친구 서버에 sudo 액세스 권한이 있지만 sudo vim /var/www/html/index.html오류가 발생하는 것처럼 일부 명령을 실행하려고 하면 sudo: vim: command not found실행할 수 있고 예상 sudo su대로 vim /var/www/html/index.html작동합니다.

echo $PATH그리고 sudo echo $PATH둘 다 산출합니다:

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin

sudo which vim그러나 결과는 다음과 같습니다.

which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)

추가해보았습니다

export PATH=$PATH:/usr/local/bin

를 사용할 때 문제 /root/.bashrc가 해결되었지만 .sudo susudo <command>

sudo <command>회사에 어떻게 가나요 ?

답변1

를 실행할 때 sudo많은 시스템은 허용 목록에 없는 모든 값의 환경을 지우고 PATH 변수를 삭제된 값으로 재설정하도록 구성됩니다.

에서 전자 Defaults env_reset와 여러 가지를 찾을 수 있습니다 . 후자의 "보안" 재정의는 다음과 같이 지정됩니다 . ing 시 이 동작을 제거하려면 이 줄을 삭제하세요 .Defaults env_keep += "SOME_VARIABLE_NAME"/etc/sudoersPATHDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/binsudo


sudo -V로 실행할 때 어떤 환경 변수가 처리되는지가 인쇄됩니다  root.


이러한 기본값을 제거하지 않으려면 언제든지 전체 경로( sudo /usr/local/bin/vim)를 사용하여 프로그램을 지정할 수 있습니다.

SETENV또는 다음과 같이 파일 에 계정이 포함되도록 허용할 수 있습니다 sudoers.

%wheel  ALL=(ALL)       SETENV: ALL

이를 통해 다음과 같이 환경 기본값을 재정의할 수 있습니다. sudo PATH=$PATH which vim명령이 실행되기 전에 변수가 셸에 의해 해석되어 상속된 결과가 발생하기 때문입니다 PATH(그러나 등은 포함되지 않을 가능성이 높음 /sbin).

답변2

sudo echo $PATH

생각대로 되지 않습니다. $PATH(귀하의) 쉘로 대체됩니다.~ 전에명령을 실행합니다.

원하는 동작을 달성하려면 를 사용할 수 있습니다 sudo -i.

에서남자 스도:

-나는 명령한다]

그만큼-나(초기 로그인 시뮬레이션) 옵션은 다음에 지정된 쉘을 실행합니다.비밀번호(5) 로그인 쉘로 대상 사용자의 항목. 이는 .profile또는 와 같은 로그인별 리소스 파일을 .login셸에서 읽게 됨을 의미합니다. 명령이 지정되면 실행을 위해 쉘로 전달됩니다.

답변3

sudo <command>회사에 어떻게 가나요 ?

경로 문제를 해결할 때까지 전체 경로 이름을 사용하십시오.

  sudo /usr/local/bin/vim /var/www/html/index.html

관련 정보