서버관리2013. 12. 6. 23:10
300x250


리눅스 유닉스 시스템에서 

현재 폴더가 PATH 환경변수에 들어 있지 않은 이유



리눅스 시스템을 사용하다 보면, 

현재 폴더에 있는 실행파일을 실행시키려고, 


# script.sh 


처럼 파일명만 치면, command not found  뿌려 준다.

물론 실행권한을 준 상태에서 말이다. 



이유는, 다들 알고 있다 시피 현재 디렉토리가 PATH 로 지정이 되어 있지 않기 때문이다. 



그렇다면, 리눅스 유닉스 시스템은 왜 현재 디렉토리가 PATH 환경 변수에 포함되어 있지 않거나 기껏해야 맨 뒤에 걸려 있는 것일까?


한마디로, 보안 때문이다. 


예를 들어 보자. 

어떤 공격자가 자신에게 허용된 폴더에 ls 라는 이름을 가진 악의적은 스크립트를 만들어 놓았고,

root 의 권한을 가진 자가 그 폴더에 들어가서 파일 목록을 보기 위해 ls 명령을 내리는 경우를 가정해 보자.. 


# ls -al


관리자의 의도대로라면, /usr/ 폴더의 /usr/ls 가 실행되기를 기대했을 것이다. 

근데, 현재 폴더가 PATH 의 앞쪽에 자리잡고 있다면, 불행히도 현재 폴더에 있는 악의적인 스크립트인 ls 가 먼저 실행이 되어 버린다. 


이런 이유로, 현재 폴더를 PATH 에 포함시켜 놓지 않거나, 포함시킬 경우 맨 끝에 넣는 이유이다. 



* 참고 : https://kldp.org/node/33916


300x250
Posted by 마스타