.png)
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 su
sudo <command>
sudo <command>
회사에 어떻게 가나요 ?
답변1
를 실행할 때 sudo
많은 시스템은 허용 목록에 없는 모든 값의 환경을 지우고 PATH 변수를 삭제된 값으로 재설정하도록 구성됩니다.
에서 전자 Defaults env_reset
와 여러 가지를 찾을 수 있습니다 . 후자의 "보안" 재정의는 다음과 같이 지정됩니다 . ing 시 이 동작을 제거하려면 이 줄을 삭제하세요 .Defaults env_keep += "SOME_VARIABLE_NAME"
/etc/sudoers
PATH
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
sudo
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