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
'서버관리' 카테고리의 다른 글
CentOS 5.x 에서 snmp 정보 가져가는 로그가 마구 쌓일 때.. (1) | 2013.12.09 |
---|---|
센토스 CentOS 5.x 에 snmp 서비스 설치하기 (0) | 2013.12.08 |
device eth0 entered promiscuous mode (0) | 2013.12.06 |
DHCP starvation Attack (0) | 2013.12.06 |
DNS 공격 막기 - error sending response: unexpected eror (0) | 2013.12.06 |