Linux

[Linux] 권한 / umask 영구설정

meetking 2022. 12. 11. 13:03

리눅스에서 퍼미션을 설정하는 이유는 파일이나 디렉토리를 다른 사용자가 임의로 수정하거나 삭제하는것을 방지 하기 위함이다.

권한 확인

ls -al : 모든 파일에 대한 권할 정보 확인 명령어

ls -n : UID GID 확인 명령어

UID는 파일과 디렉토리의 사용자 정보를 뜻하며 GID는 파일과 디렉토리의 사용자 그룹 정보를 뜻한다.

예를 들어 UID가 100이고 GID가 10일떄 UID가 100인 사용자가 접근 했을떄 UID가 가진 권한에 걸맞는 권한을 부여받고 UID가 100이 아니면 GID와 대조하게 되는데 GID와 맞다면 GID에 걸맞는 권한을 부여받게 되고 GID에도 맞지 않다면 기타 사용자의 권한에 걸맞는 권한을 가지게된다.

<그림1>

  1. drwxr-xr-x 파일 권한
    d : 파일 종류
    rwx : 소유자의 권한
    r-x : 그룹사용자의 권한 
    r-x : 기타 사용자의 권한 
  2. 8 : 하드링크 갯수
  3. jpark : UID
  4. Administrators : GID 
  5. 4096 : 파일 크기 
r : 읽기 권한
w : 쓰기 권한
x : 실행 권한

 

권한 설정

  • 심볼릭 모드

<그림2>

예)

chmod u-r,o+x example1  -> 소유자에게 read권한 제거, 기타사용자에게 실행 권한 부여
chmod g+w,o-r example2  -> 그룹사용자에게 쓰기권한 부여 , 기타 사용자에게 읽기 권한 삭제

 

  • 8진수 모드
User Group Other
r w x r w x r w x
2^2 2^1 2^0 2^2 2^1 2^0 2^2 2^1 2^0

read 권한 - 4  
write 권한 - 2 
execute 권한 - 1 

읽기쓰기실행 권한을 모두 부여하고 싶다면 4+2+1 로 7이라는 숫자를 통해 부여할 수 있다.

예)

rwx = 7
rw- = 6
r-x = 5
r-- = 4
-wx = 3
-w- = 2
--x = 1
--- = 0

 

umask

  • 권한을 설정할때 수동적으로 권한을 주지않고 파일이나 디렉토리가 생성됨과 동시에 지정한 권한이 부여되도록 한다.
    즉 기본 권한 설정하는 명령어이다.

umask 설정

umask를 통해 파일과 디렉토리의 허가권을 결정 할 수 있고 파일과 디렉토리가 특정 허가권을 가지게끔 하기 위해서 usmak 설정 한다.

.bashrc 파일에 vim .bash rc 명령어를 사용하여 umask를 설정하면 영구적으로 umask를 설정할 수 있다.
기본 umask 명령어를 사용하면 일회성이며 재부팅시 022로 reset된다.

사용자 홈디렉토리의 .bashrc는 해당 사용자만 적용되는 방식이지만 /etc/profile에서 설정 하면 전체사용자에 대한 권한또한 설정 할 수 있다.

umask 구조

<그림3> umask 구조

파일의 최대권한은 666이며 , 디렉토리의 최대 권한은 777이다. 파일의 기본 권한이 666인 이유는 실행권한의 차이이며 파일은 실행권한이 있고 없음에 따라 취약점 발생 유무 차이가 큰 반면 디렉토리의 실행권한은 디렉토리 접근 권한 이기떄문에 최소 권한이다. 따라서 디렉토리에 접근 할 수 없으면 아무 것도 할 수 없게된다. 예를 들어 디렉토리의 권한이 744일때 umask가 002로 설정되어있다면 디렉토리의 권한은 744 - 002로 742이다. 따라서 디폴트로 설정된 umask 값을 제외하고 최종 권한이 부여되어서 매번 번거롭게 허가권을 지정할 필요없이 보안적인 부분을 관리 할 수 있다.