관리 메뉴

IT창고

리눅스 소유권과 허가권 본문

서버운영/Linux

리눅스 소유권과 허가권

방구석여포 2017. 8. 25. 01:13

파일과 디렉토리에는 각자 소유권과 허가권이 있는데 즉 시스템에 존재하는 모든 파일은 접근할 수 있는 권한이 부여되어 있습니다. 접근을 제한하는 것을 허가권(permission)이라 하며 파일이나 디렉토리를 소유한 권한을 소유권(Ownership)이라고 합니다.


소유권은 명령어에서 ls -l을 입력하면 -rw-r--r--. 1 root root 8025 2017-08-10 03:42 install.log 처럼 뜨는데 root root부분이 소유권을 나타냅니다. root root 같은 부분을 소유권 필드라 부르며 앞에 root는 소유계정을 뜻하고 뒤의 root는 소유그룹을 뜻합니다. 

소유권을 변경하는 명령어로 소유권을 바꾸는데 chown(change ownership)명령어로 바꿉니다.

ex) chown [계정명] : [그룹명] 파일 


허가권의 필드 확인도 ls -l 명령어로 확인해 볼수있습니다. 허가권 필드는 -rwxr-xr-x와 같은데 

rwx 

r-x 

r-x 

 파일종류

사용자 

그룹 

기타사용자 

위와 같은 필드 형식입니다. 여기서 rwx의 의미를 알아보는데 r(read)은 읽기권한이고 w(write)는 쓰기권한, x(excute)는 실행권한 입니다. 허가권을 변경하는 명령어가 있는데 chmod(change mode)라고 합니다. chmod명령어에는 2가지 모드가 있는데 기호모드와 숫자모드가 있습니다. 기호모드는 상대값 sysmboloc mode이고 숫자모드는 절대값 absolute mode 입니다. 


기호모드를 알아보면 +: 권한부여 -: 권한제거 =: 권한유지 s: SetUID,SetGID u: user g: group o: other a: all t: sticky으로 기호를 조합해서 허가권 명령을 내립니다.

ex) chmod g+w,o+w file   and   chmod u-wx,g-x,o-w file   and  chmod ugo-r file    and   chmod a-r file

ex에서 보듯이 여러가지 종류로 조합해서 허가권 명령어를 내릴수있습니다.


숫자모드는 각각의 허가권 필드를 3자리의 8진수로 표기하는 방법인데 완벽한 표기법은 4자리지만 보통 3자리만 사용합니다.

 

 사용자필드

그룹필드

기타사용자필드

 기호

r w x

r w x

r w x

자리수 

4 2 1

4 2 1

4 2 1

 2진수

1 1 1

1 1 1

1 1 1

 8진수

7

7

7


위와 같이 표현되며 숫자모드로 허가권을 내릴때는 chmod 755 file 과 같은 형식으로 사용합니다. 7은 rwx이며 5는r-x입니다. 

디렉토리 허가권은 파일의 허가권 보다 우선순위에 있으며 파일허가권이 rwxrwxrwx라도 디렉토리권한이 rwx------이면 사용할수가 없습니다. 


이러한 허가권을 알게되었다면 UMASK에 대해 알아보겠습니다.

UMASK는 디렉토리나 파일을 생성할떄 가지게 되는 기본 허가권을 결정하는 기준이 되는 값입니다.

파일의 기본 허가권은 666(rw- rw- rw-)이며 디렉토리의 기본 허가권은 777(rwx rwx rwx)입니다.

명령어 umask를 입력해보시면 기본값0022가 나오는데 umask [허가권]을 입력하면 기본값을 바꿀수있습니다 (ex)077) UMASK를 계산하는 방법은 UMASK의 기본값을 2진수로 변경하고(000 010 010) 디렉토리의 기본허가권을 2진수로 변경한후(111 111 111) UMASK값과 디렉토리 기본허가권 값을 AND연산 해주면 나오는 값이 디렉토리가 생성될때 설정되는 허가권 값입니다 즉 UMASK값을 바꾸면 디렉토리나 파일을 생성할때 허가권을 바뀌어서 생성되게 됩니다.


속성(attribution)에 대해 알아보겠습니다 속성은 허가권이나 소유권과는 다른 개념으로 파일을 관리할 수 있습니다. 파일에는 허가권이나 소유권외에 속성이라는 설정이 있습니다. 


속성에는 종류가 있는데 i 속성과 a속성을 대표적으로 알아보겠습니다. i속성은(immutavle)로 해당 파일의 내용을 수정, 이름을변경, 파일을 삭제 등 파일상태를 변경시킬수없는 설정입니다 a속성도 i속성과 비슷한데 i속성의 내용과 더해서 내용추가가 가능합니다.

속성에 대한 명령어로 우선 lsattr가 있습니다 속성을 확인할때 사용하고 chattr로 속성을 변경합니다 옵션으로 +를 넣으면 지정한속성을 추가하고 -를 넣으면 지정한 속성을 제거하고 =는 기존속성을 초기화하고 지정한 속성만 부여합니다.


마지막으로 ACL(Access Control List)에 대해 알아보겠습니다. ACL은 커널2.4이상부터 사용이 가능하고 파일에 특정 사용자 혹은 그룹에 특정 권한을 부여하는 기능입니다.

명령어로 getfacl는 파일에 설정된 ACl을 확인하고 setfacl는 파일에 ACL을 설정합니다. 

사용방법은 

getfacl [파일명], setfacl [옵션][규칙][파일명] 입니다. setfacl는 옵션 외에 규칙을 함께 사용해주어야하는데 우선 옵션은

- m(modify) 권한을 수정할때 사용합니다 -x 권한을 삭제할떄 사용합니다

옵션을 사용하고 규칙을 사용해야하는데 규칙의 사용방법은 u:[UID]:[권한]과 g:[GID]:[권한]과 o:[권한] 입니다.

ex) getfacl gsk             setfacl -m u:gsk:rwx gskk 






'서버운영 > Linux' 카테고리의 다른 글

리눅스 예약작업  (0) 2017.08.29
리눅스 프로세스  (0) 2017.08.29
리눅스 사용자계정  (0) 2017.08.25
리눅스 환경변수와 스크립트  (0) 2017.08.22
Xshell 기본 설정하기  (0) 2017.08.21
Comments