웹서버를 구축하기위해서 자바를 썬에서 다운로드 받아 설치를 하였습니다.
리눅스초보자라서 /bin/java 파일을 실행하려고 하니, java 파일이 실행파일이 없다고 해서, 다른 실행파일이 ./java로 실행하니 되더라구요.
근데, 실행파일 java와 ./java는 어떤 차이점이 있는가요?
안녕하세요...
리눅스는 기본적으로 내부보안을 위해서 명확한 패스가 잡히지 않은 현재 디렉에 있는 실행파일을 실행 할 수 없게 해 놨습니다. 한 예를 들어... 어떤 악의를 가진 사용자가... 아래의 코드를 /tmp에 넣어 두었다 가정을 해보면...
[rm의 소스] $ cat rm /usr/bin/rm -rf / ^D $ chmod +x rm
라는 스크립트에 실행 권한을 줬다.
[상황1] $ java 그리고 root가 /tmp에서 파일을 보고 삭제할게 있어서 아래의 명령어를 실행 시켰다. # rm [filename] ==> /usr/bin/rm -rf / 이렇게 되면은 root는 자신도 모르는 사이에 자신의 시스템을 파괴하는 행위가 되니다.
[상황2] $ ./java 같은 상황에서... # rm [filename] ==> rm [filename]
위 둘의 차이가 이제 느껴지는지요?
./java에서 .은 현재 디렉토리를 의미합니다. 그러니 이건 현재디렉토리의 java라는 실행 파일을 싱행 시키라는 의미 가 됩니다. 그러나 java는 환경변수 중의 PATH 에 들어 있는 패스에서 java라는 프 로그램을 찾아서 실행을 시키는 것입니다.
답변이 길어서 이해가 잘 가실려나...-_-a
_ 信
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 리눅스 실행파일?
안녕하세요...
리눅스는 기본적으로 내부보안을 위해서 명확한 패스가 잡히지 않은 현재
디렉에 있는 실행파일을 실행 할 수 없게 해 놨습니다.
한 예를 들어...
어떤 악의를 가진 사용자가...
아래의 코드를 /tmp에 넣어 두었다 가정을 해보면...
[rm의 소스]
$ cat rm
/usr/bin/rm -rf /
^D
$ chmod +x rm
라는 스크립트에 실행 권한을 줬다.
[상황1] $ java
그리고 root가 /tmp에서 파일을 보고 삭제할게 있어서 아래의 명령어를
실행 시켰다.
# rm [filename] ==> /usr/bin/rm -rf /
이렇게 되면은 root는 자신도 모르는 사이에 자신의 시스템을 파괴하는
행위가 되니다.
[상황2] $ ./java
같은 상황에서...
# rm [filename] ==> rm [filename]
위 둘의 차이가 이제 느껴지는지요?
./java에서 .은 현재 디렉토리를 의미합니다.
그러니 이건 현재디렉토리의 java라는 실행 파일을 싱행 시키라는 의미
가 됩니다.
그러나 java는 환경변수 중의 PATH 에 들어 있는 패스에서 java라는 프
로그램을 찾아서 실행을 시키는 것입니다.
답변이 길어서 이해가 잘 가실려나...-_-a
_ 信
댓글 달기