답변:
현재 디렉토리가 경로에 없기 때문입니다. 이것은 안전 기능입니다. 경로에 있다면 누군가가 공통 명령의 악의적 인 사본을 삭제할 수 있으며 실제 sudo를 실행하는 대신 해당 디렉토리에있을 때 가짜 명령을 실행할 수 있습니다. 그건 나쁜 일이야
.
이후로 /usr/bin/
, 그것은 실제를 대체하지 않을 것 sudo
입니다. 실수로 경로에 프로그램을 추가하지 않도록하는 것이지만 기존 프로그램을 대체하는 것이 아닙니다.
sudo
사용 합니다. 훨씬 더 불려질 것입니다. ls
rm
ls
암호를 요구하지 않으며 사용자가 sudo
암호를 사용할 수 있는지 흥미 롭습니다 ...;)
sl
나쁜 일을 한 다음 호출 ls
하고 삭제 하는 스크립트 를 작성 한다고 가정 해 봅시다. 시스템 도구를 재정의 할 수는 없지만 'typosquat'는 가능합니다.
cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
. 비밀번호를 몰라도됩니다.
echo $PATH
이것이 작동하려면 경로에 현재 디렉토리 (단일 점)가 있어야합니다.
다음 명령을 사용하여 경로에 추가 할 수 있습니다.
sh / bash :
export PATH=$PATH:.
tcsh / csh :
set PATH = ($PATH .)
runnable file => executable file
?