퍼미션의 정의
출처 : 세팔이님 홈페이지 http://www.spcgi.com
원문 : http://www.spcgi.com/spboard/board.cgi? ··· _cnt%3D0
퍼미션이 무엇인지도 모른체 사용하고있지는 않으신가요?
CGI 를 설치하다보면..
제일먼저 부딪치는 문제점이 퍼미션일겁니다..
그럼 이번에는 퍼미션의 개념을 공부해보겠습니다...
>>> 퍼미션의 개념
퍼미션은 사전 찾아보시면 '허용'이라고 나와 있는데, 유닉스에서 허용(퍼미션)의 뜻은 파일이나 디렉토리에 대한 읽기,쓰기,실행등을 허용할건지 말건지를 나타내는 사용자권한속성을 의미합니다.
유닉스에서 사용자는 '자신','그룹','모든 사용자'의 개념으로 구분됩니다. 내가 만약 특정 유닉스 서버에 ddart란 아이디를 가지고 있으면'나'는 그 서버의 모든 사용자중 어떤 그룹에 포함된 ddart사용자로 표현될수 있습니다. (그룹은 시스템관리자가 정해줌)
유닉스시스템은 Win98처럼 컴퓨터 한대놓고 자기 혼자만 쓰는게 아니라 그곳에 아이디를 가진 인간들은 다 함께 공유를 하죠?
천리안에 id를 가진 인간들은 모두 천리안 서버를 공유를 하는것처럼요.
이처럼 유닉스엔 사용자들이 득실대기때문에 내가 만약 천리안 서버에 접속해서 파일이나 디렉토리를 하나 생성 했다면 그건 내가 만든거라고 표시되어야 다른 사람들이 그건 내꺼야 라고 우기는 일이 발생하지 않을겁니다.
실제로도 파일을 만들면 그 파일의 소유자와 그 소유자가 속한 그룹이 파일속성으로 기록되게 되어 있습니다.
그런데,, 세상살면서 개인 프라이버시를 원하는 것처럼 서버내에서도 각 사용자 프라이버시를 보장받고 싶을 때가 있을겁니다.
가령 돈 1000만원을 주워서 어디에 파묻어 놓고 잊어버리지 않게 천랸 서버 자신의 계정에 파일로 저장해두고 싶다면(물론 이런 엉뚱한 행동을 하는사람은 없겠지만) 다른 사람은 이걸 못보게 막아야 하는데.. 어떻게 막을까요. 바로 퍼미션을 통해서입니다. 사용자중 소유자(바로 나자신)에게만 읽기권한을 주고 나머지 사람들은 읽기를 막아버리는거죠.
나 아님 전부이면, 권한체계가 너무 허술하죠? 중간단계인 내가 속한 그룹에 대해선 따로 권한을 줄수도 있어 총 3가지분류로 해서 권한 설정을 합니다.
맨처음은 그 파일의 소유자, 그다음은 그룹사용자, 그다음은 모든 사용자. 각각의 분류에 대해 앞에서부터
읽기 권한을 주려면 1 안주려면 0 ,영문자표기로 r
쓰기 권한을 주려면 1 안주려면 0, 영문자표기로 w
실행 권한을 주려면 1 안주려면 0, 영문자표기로 x
한분류의 사용자에게 읽기,쓰기,실행권한을 모두 주려면 111 혹은 rwx 로 표기됩니다. 111은 2진수이고, 이의 10진수값은 1*2의 2승 + 1*2 + 1 = 7 입니다.
읽기,쓰기권한만 주려면 110,혹은 rw- 로 표기되고, 110의 10진값은 6입니다.
읽기, 실행권한만 주려면 101, 혹은 r-x 로 표기되고, 101의 10진값은 5입니다.
읽기만 주려면 100, 혹은 r--로 표기되고, 100의 10진값은 4입니다.
사용자타입은 소유자, 그룹사용자, 모든사용자 세가지이니 이 세가지를 한번에 주려면 위중 해당권한 2진수의 10진값을 연달아 세개 붙여 777, 755, 666 등과 같이 표현되고,
계정에서 ls -al 했을때 자주본, rwxr-xr-x 와 같이 퍼미션 정보가 표시됩니다.
(파일이 디렉토리이면 앞에 d 가 붙어서 drwxr-xr-x 처럼 리스팅이 되고, 파일이면
-rwxr-xr-x 처럼 리스팅이 되는것임.)
어때요? 퍼미션이란 부분이 이제 이해가 되시나요?
그럼 이젠 퍼미션에 대해 실질적으로 변경하는 방법을 공부해보시기로 하죠...
>>> 보 충 설 명
퍼미션은 앞서 설명과 같이 아래과 같이 표기가 됩니다...
아래의 표기방법은 FTP 프로그램으로 계정에 접속하면 파일옆의 속성을 볼수가있습니다.
바로 이부분이 퍼미션이죠...
d rwx rwx rwx ....
- --- --- ---
1 2 3 4
1은 디렉토리(폴더)냐, 파일이냐를 보여 줍니다. '-'로 되어 있다면 당연히 파일 이구요
그리고 다음 r은 읽기(read)가능 여부 이고 w는 쓰기, 그리고 x는 실행(excute)의권한이 있음을 의미 합니다. 일반적으로 PC에서는 확장자에 의해 실행파일 여부를구분할 수 있으나 유닉스는 확장자는 파일을 구분하는 기능 외에 아무런 의미가없고 바로 이 퍼미션에 의해 결정이 되는겁니다.
재차 설명하자면, 유닉스 서버는 PC와 달리 많은 사용자들이 한대의 서버를 공동이용 하므로 다른 사람으로 부터 내 자료를 보호하고, 또는 함께 공유하기 위해 이렇게파일 단위의 권한이 필요해 진거죠.
그럼 왜 세번 반복이 되는가가 궁금하시겠죠? 앞서 설명한게 이해가 되었다면 괜찮지만 다시 한번 설명하면, 2번의 rwx는 이 파일의 소유주가 이파일에 대한어떤 권한을 가지고 있느냐 입니다. 3번은 그룹, 4번은 어느누구나의 개념으로보시면 됩니다
그리고 가장 중요한 퍼미션변경은,
chmod [화일permission] [파일Name 또는 폴더Name]
이런식으로 하면 됩니다...
유닉스에서는 각 화일과 디렉토리에 사용권한을 부여합니다.
예) -rwxr-xr-x guestbookt.html
rwx :처음 3개 문자 = 사용자 자신의 사용 권한
r-x :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x :마지막 3개 문자 = 전체 사용자의 사용 권한
읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음
명령어 사용법
chmod [변경모드] [파일]
% chmod 666 guestbook.html : test.html 화일을 자신에게만 r,w,x 권한을 줌
% chmod 766 guestbook.html : 자신은 모든 권한을 그룹사용자와,전체사용자에게는 읽기와 쓰기 권한만 줌
chmod
파일의 액세스 모드를 뱐경하는 기능을 한다.
permission denied라는 말이 나왔을 때 파일의 퍼미션 모드를 변경해 주어야 바로 작동한다. 이 명령은 분자로 변경하는 심볼릭 모드와 숫자로 변경하는 절대 모드가 있다.
[users] 이것은 사용자를 표시하는 기호이다.
u 유저
g 그룹
o others 그룹
a 모든 사용자
[operator] 이것은 실제 사용을 허가할지 하지 않을지 여부를 결정한다.
+ 허용한다.-
- 불허한다.
= 이 오퍼레이터 다음에 나로는 것만을 허용한다.
[permission] 사용상태를 표시하는 기호이다.
r 읽을 수 있다.
w 쓸 수 있다.
x 실행이 가능하다.
'절대모드':이 모드는 숫자의 조합으로 허가원을 표시한다(2진수를 의미함)
[user에 관한 값]
400 읽기 허용
200 쓰기를 허용한다.
100 실행을 허용한다.
[그룹에 대한 허용값]
40 읽기 허용
20 쓰기 허용
10 실행 허용
[others에 관힌 허용값]
4 읽기 허용
2 쓰기 허용
1 실행 허용
7 모든 것을 허용한다.
777 모두에게 모든 설정에 대해서 개방한다.
#chmod [-Rcfv][대상파일]
-c 접근 허용이 변한 파일에 대해서 정보를 출력한다.
-f 접근 허용이 바뀌지 않은 것에 대해서 에러 메시지를 출력하지 않는다.
-v 변화돤 접근 허용에 대한 정보를 출력한다.
-R 디렉토리와 그속에 포함된 파일의 접근 허용을 recursively 하게 바꾼다.
이제는 퍼미션에 대해서 더이상 어려워하지말고 고민하지도 마세요...^^
이걸로 퍼미션공부 끝!!!...



