CGI실행에 있어 퍼미션은 대단히 중요하다. 모든 CGI의 설치는 반드시 정확한 퍼미션을 가져야 제대로 실행됨은 가장 기본이 되는 요소이다. 그렇다면 퍼미션이란 무엇인가?

퍼미션이란 - 멀티유저가 기본인 유닉스 시스템에 있어 파일을 "소유한 사람/같은 그룹내 사람/기타다른사람" 3인에 대해 소유권을 지정하는 것을 말한다. 설명보다는 예를 들어 설명한다.

쉘상에서 ls -al 이란 명령을 치면 다음과 같은 화면이 나온다.

Example

$ ls -al
total 13
drwxr-xr-x   4 tianai   tianai       1024 Sep 13 19:51 ./
drwxr-xr-x  11 root     root         1024 Jul 29 20:01 ../
-rw-r--r--   1 tianai   tianai       1048 Apr 29 21:09 .Xdefaults
-rw-rw-r--   1 tianai   tianai       1379 Sep 13 15:43 .bash_history
-rw-r--r--   1 tianai   tianai         24 Apr 29 21:09 .bash_logout
-rw-r--r--   1 tianai   tianai        319 Apr 29 21:09 .bash_profile
-rw-r--r--   1 tianai   tianai        529 Apr 29 21:09 .bashrc
-rw-r--r--   1 tianai   tianai         58 Apr 29 21:09 .inputrc
drwx------   2 tianai   tianai       1024 Apr 29 21:09 Mail/
-rw-------  1 tianai   tianai        503 Sep 13 17:28 mbox
drwxrwxr-x  10 root     root         1024 Sep  2 22:12 public_html/    



위의 예에서 green색으로 표시된 부분이 퍼미션부분이다. 퍼미션을 지정하는 방법에는 몇가지가 있는데 그중 한가지만 알아본다.

CGI를 설치하다가 보면 퍼미션을 755로 하여야 한다.란 말을 많이 본다.여기서 퍼미션 755는 다시 다음과 같이 쓸수 있다. -rwxr-xr-x

총10개로 표시되는 퍼미션은 제일 앞부분을 빼면 9개로 표시할 수있다.제일 앞부분은 현재표시한것이 디렉토리인지 파일인지를 알려주는 부분이다. 즉 제일 앞에 d 라고 표시되어 있으면 이것은 디렉토리. - 으로 표시되어 있으면 이것은 그냥 일반 파일임을 의미한다.

그리고 나머지 9개는 다시 3개씩 나누어 지며 앞에서 부터 파일소유자/그룹퍼미션/other퍼미션 부분으로 나누어진다. 즉 755란 파일 소유자에게는 7이란 퍼미션을 그룹소유자에게는 5란 퍼미션을 기타다른 사람에게는 5란 퍼미션을 준것을 의미한다.

그럼 7이란 퍼미션은 무엇을 의미하는가 이것은 2에2승(4)+2에1승(2)+2에영승(1) 을 의미한다. 즉 4+2+1=7 이 된다는 것이다.

제일 앞은 파일 소유자에 대한 퍼미션이라 했다.
따라서 7이란 퍼미션은 4+2+1 이므로 rwx 란 퍼미션을 가진다는 것이다.
여기서 r는 read, w는 write, x는 실행이란 퍼미션을 의미한다.
즉 파일에 대해 읽기,쓰기,실행이 모두 된다는 이야기다.

그렇다면 그룹 퍼미션은 5을 분석해보자 5=4+1 이므로 2가 빠진다. 따라서 퍼미션5는 r-x란 퍼미션을 가진다. 즉 읽기와 실행이 가능하고 write는 안된다는 이야기다. 마찬가지로 기타다른사람에게는 5란 퍼미션을 부여하는데 이것 역시 4+1이므로
r-x란 퍼미션을 의미하며 읽기와 실행이란 퍼미션을 필요하다.

웹상에서 브라우저로 들어오는 방문객은 퍼미션을 기타다른사람의 퍼미션을 부여받는다. 즉 현재 파일에 대해 755라 설정되었으면 방문객은 제일 마지막 퍼밈션 5를 부여받고 5는 4+1이므로 r-x란 퍼미션을 따라서 읽기와 실행만 가능하다는 뜻이된다.

그럼 퍼미션 777이란 무슨뜻일까?

7=4+2+1 이므로 모든 이에게 rwx란 퍼미션을 부여하는것이다.
즉 rwxrwxrwx란 퍼미션을 의미하며 방문객은 파일에 대해 읽기,쓰기,실행이 가능하다는 것이다. 보통 cgi를 이용 어떤 데이타를 저장하고자할때 방문객에게 이런 퍼미션을 제공한다.

따라서 보통 cgi퍼미션은 755이며 어떤 환경이나 데이타가 저장되는 cgi sub 파일의 권한은 777으로 설정된다.

파일의 권한을 바꾸는 방법은 다음과 같다.
예를 들어 abcd.cgi란 파일의 퍼미션을 777으로 바꾸고 싶다면

$chmod 777 abcd.cgi라고 하면 된다.

chmod는 change mode 란 뜻으로 쓰인다
cgi설정시 반드시 알아두어야 할 부분이다