본문 바로가기
!?/Linux

리눅스 파일권한

by Where's my namespace 2014. 1. 9.

리눅스는 기본적으로 서버의 기능을 할 수 있게 설계되었기 때문에 어떤 파일에 대해 owner, group, other 의 세 부류에 


대한 권한 설정이 필요하다. 


권한에는 우리가 흔히 많이 들어서 알고 있는 read, write, execute가 있다. 이를 쉽게 rwx로 표현한다. 



리눅스 상에서 어떤 파일의 권한을 보기 위해서는 터미널에서 "ls -l" 명령으로 확인 가능하다. 


ls -l 명령으로 확인해보면 


" -rwxr--r-- " 과 같이 표현되어 있는 것이 보이는데 이게 각 부류의 권한을 나타낸다.  


가장 처음에 나오는 "-" 은 이 파일의 종류를 나타낸다. "-" 의 경우 일반적인 텍스트 파일, 소스 코드를 의미한다. 

("-"말고도 "C" , "|" 과 같이 파일의 종류를 나타내는 문자는 여러개 있으므로 필요하면 찾아보길 바란다. )


그 뒤에 나오는 char 3개는 owner의 권한을 나타낸다. 위의 예에서는 rwx로 읽고, 쓰고, 실행이 가능하다. 


그 다음 나오는 char 3개는 group의 권한을 나타낸다. 위의 예에서는 r-- 이므로 읽기만 가능하다. 


그 다음 나오는 char 3개는 other의 권한을 나타낸다. 위의 예에서는 r--이므로 읽기만 가능하다. 



자, 이렇게 3 부류로 권한을 나누어 놓았는데 어떻게 구분할까, 만약 사용자가 파일의 owner이라면 owner의 권한을 가지고, owner은 아니지만 같은 group에 있는 유저라면 group의 권한을 가진다. 이도저도 아니면 other의 권한을 가진다. 


이렇게 구분되는 파일 권한을 바꿔 줄 수 있다. 그 명령이 바로 "chmod" 명령이다. 


chmod 명령의 사용 예를 살펴보면, 


"chmod 777 test.c" 와 같이 사용할 수 도 있고, "chmod a+r test.c" 와 같은 형식으로도 사용할 수 있다. 


앞의 예의 표기방식을 보면 rwx의 각 위치를 이진수로 나타내면, r = 4, w =2 , x = 1로 볼 수 있다. 이를  이진수 111로 보면 7이다.  그래서 777의 의미는 모든 부류가 rwx의 권한을 가진다는 것을 의미한다. 


뒤의 예의 표기방식을 보면 a+r은 모든 부류에 read권한을 추가(+)하라는 의미이다. 앞의 a는 all의 줄임이고, owner은 u

로 group는 g로 other은 o로 표현하고, +의 경우 추가, -의 경우는 삭제, =의 경우는 지정을 의미한다. 

예로, "chmod u=rwx test.c" 는 owner의 권한을 rwx로 지정하는 의미이다. 



리눅스에서는 기본적으로 파일을 생성할 때의 권한도 설정이 가능하다. 이는 mask를 이용하는 방식인데. 네트워크의 subnetmask 와 같은 방식이다. 


만약에 리눅스상에서 파일을 생성하면 744의 권한이 걸린다고 하고, 기본적인 mask값이 022라고하자. 이를 이진수로 표현하면 아래와 같다. 이 값을 XOR하면 나오는 값이 실제 파일 생성시 파일의 권한이 된다. 


1 1 1 1 0 0 1 0 0 (744)

0 0 0 0 1 0 0 1 0 (022)

--------------------------

      1 1 1 1 0 0 1 0 0 (744) 


만약 파일 생성시 722의 권한이 걸린다고하고, mask값이 022라면 파일의 권한은 700(rwx------)만 걸린다.  


이 mask값을 변경하는 명령이 umask명령이다. 


단순히 터미널에 umask를 입력하면 현재의 mask값이 나오고, "umask 22" 와 같이 입력하면 022의 값이 mask값으로 설

정된다.


'!? > Linux' 카테고리의 다른 글

RPM  (0) 2014.03.01
Shell  (0) 2014.01.11
리눅스 관련 자격증  (0) 2013.11.29
VIM / EMACS  (0) 2013.11.23
Grub의 부팅 순서 바꾸기.  (0) 2013.09.07