본문 바로가기

*집필*/*집필* Linux

[JohnG] PATH 정리

// 본 정리는 ubuntu-server 환경에서 확인한 내용입니다.//

 PATH 정리에 앞서 사용자 계정 추가, profile에 대해 집고 넘어가겠습니다.
 /etc/skel/ 에는 .bach_logout , .bashrc , .profile 이 존재 합니다.
 이 파일들은 사용자 계정 추가시 " /home/사용자계정명/ " 디렉토리에 복사되어지며, 새로운 사용자 생성에 관한 설정을 할 수 있는 파일들 입니다.

 환경변수인 PATH정보는 리눅스 명령어 env 로 확인 할 수 있습니다.  (ex :  #env   )

 env 명령어로 PATH 정보를 확인해 보면 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 로 등록 되어 있습니다. (사용자의 시스템에 따라 다른 결과가 나올 수 도 있습니다.)

 쉘에서 "test"라고 입력하고 실행하면 PATH 정보에 따라
/usr/local/sbin , /usr/local/bin , /usr/sbin , /usr/bin , /sbin , /bin , /usr/games
순으로 test라는 실행 파일을 검색합니다.

여기서 만일 PATH=./:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
로 설정이 되어 있다고 가정했을 경우. 현재 디렉토리에 ls라는 실행파일이 있을경우를 확인 해 보겠습니다.
(이 경우는 ./ -> /usr/local/sbin -> /usr/local/bin -> /usr/sbin -> /usr/bin -> /sbin -> /bin -> /usr/games 순으로 명령어를 검색한다는것을 예상 하셔야 합니다.)

샘플파일로 "It's test"라는 문자열을 출력하는 ls라는 프로그램을 만들고 디렉토리에 저장한 후 ls 명령어를 실행해 보았습니다.

(PATH 설정을 변경할때는 export 명령어를 이용하시면 됩니다.)

 #env  - (PATH 정보를 먼저 확인 해 보겠습니다.)


 #export PATH=./:$PATH  - (PATH 설정의 앞부분에 현재 디렉토리를 추가 합니다.)


 #env  - (다시 PATH 정보를 먼저 확인 해서 변경 사항을 확인합니다.)


"It's test"라는 문자열을 출력하는 ls프로그램을 작성합니다.
간단한 샘플 소스는 아래.



ls 명령 실행 후 확인해 보겠습니다.


결과에 나오듯 디렉토리안의 파일 목록이 아닌 "It's test!"라는 문자열이 출력되는것을 확인 할 수 있습니다.

이러한 PATH 설정이 잘못되었을 경우 2차적인 공격형태를 띄기 쉬운 설정으로 샘플 프로그램이 버퍼오버플로우 공격 소스가 포함되어 있다면 상당히 위험한 일이 일어 날 수 있다는것을 기억해 주시길 바랍니다.