Back-end/Linux

리눅스 퍼미션이란? Permission (chown/chmod/umask)

cheersHena 2021. 1. 20. 15:43
반응형

퍼미션 Permission 이란?? 

 

리눅스는 여러사용자가 접근가능한 멀티유저 운영체제이다.  퍼미션(권한)기능을 사용하여 특정파일이나 디렉터리에 대하여 읽기/쓰기/삭제 등의 권한을 설정하여 파일접근 권한을 제어하고 파일을 보호하기 위해 사용한다. 

 

 

퍼미션의 종류 

 

 

퍼미션 해석

original 디렉터리를 해석해 보겠다. (맨앞 타입을 제외하고 3자리씩 끊어서 해석)

  

d[타입] rwx[소유자권한] r-x[그룹 소유자 권한] r-x[일반사용자권한]

   > original 파일은 디렉토리이다. 

   > 소유자 root는 읽기/쓰기/실행이 가능

   > 그룹소유자  root는 읽기/실행 만 가능 

   > 일반사용자 (root 외) 는 읽기/실행 만 가능 

   > 8진수를 이용하면 755 퍼미션에 해당됨. 

 

 

퍼미션 변경 

각 권한은 그에 해당하는 숫자를 가진다. (8진수 이용 방식)

r=4, w=2, x=1

즉, 읽기/쓰기/실행 rwx는 숫자를 더하여 7(4+2+1)이라는 형식으로 표현할 수 있다. 

 

1. chmod : 기존 파일또는 디렉토리에 대한 접근권한 변경시 사용

   $ chmod -R [8bit permission] [file name or folder name]

755퍼미션 예시 

  ex) 755 퍼미션: rwxr-xr-x  소유자는 모두가능, 그룹소유자와 일반사용자는 읽기/실행만.  

         644퍼미션:  rw-r--r--    소유자는 읽고쓰기, 그룹소유자와 일반사용자는 읽기만.

         600퍼미션 : rw-------    소유자는 읽고쓰기, 나머지는 아무권한도 없음. 

 

 

 

2. chown : 파일이나 데릭토리 소유자나 그룹소유자 변경 시 사용 

 - 명령을 실행하면 파일에 대한 이전 소유자의 권한은 사라짐

 - 슈퍼유저권한이 있어야 chown명령어를 사용할 수 있음. 

$ chown -R [owner name]:[group name] [filename or directory]

 

 

 

 

기본 퍼미션 변경 

매번 파일이나 디렉토리 생성 시 기본 퍼미션이 적용된다. 이 기본퍼미션에 영향을 주는것이 umask(user mask) 이다. 사용자 초기화 환경파일에 각 사용자의 기본 퍼미션을 수정할 수 있다. 

 

umask 유틸

umask 유틸은 파일이나 디렉토리 생성 시 초기화 퍼미션에 영향을 준다. 이 유틸은 위의 chmod 명령어처럼 읽기/쓰기/실행 3종류의 퍼미션을 가진다. 

umask의 기본값은 022이다.

참고로 umask값은 셸에 의존적이라서 각 셸에 따라 0022(sh) , 022(ksh)..  등으로 기본값이 정해져 있다. 0022 는 022와 같다고 보면 된다. 

 

 

umask 사용예시 

 

Tomcat에서는 기본 보안설정이 정해져 있다.

파일 : 666 rwx  / 디렉토리 : 777 rwx 

 

tomcat 에서 구동되는 Web application에서 파일을 생성했는데 umask permission이 027 (톰캣기본값)이다. 

 

umask 027 의 경우 파일 권한 

# umask

027

# touch umask_file

# ls ld umask_file

-rw-r-----. 1 root root 0 2016-12-15 21:45 umask_file

* 파일에 퍼미션 기본값은 666인데 umask 027을 적용(삭제)하게 되면 666 – 027 = 640이 된다. 

 

umask 027 의 경우 디렉토리 권한 

# umask

027

# touch umask_dir

# ls ld umask_file

drwxr-x---. 2 root root 4096 2016-12-15 21:51 umask_dir/

* 디렉터리에 퍼미션 기본값은 777인데 umask 027을 적용(삭제)하게 되면 777 – 027 = 750이 된다.

 

즉, 파일의 경우, 6[-rw-] 4[r--] 0[---] 으로 생성되어 일반사용자는 해당 파일을 읽을 권한이 없는 현상 발생.

 

이미지 파일 업로드라던지 기타 tomcat 어플리케이션을 통해 업로드된 파일에 대한 접근권한을 주기 위해서는

권한을 변경해주어야 한다. 

 

catalina.sh 파일에서 UMASK설정을 수정할 수 있다. 

 

vi catalina.sh 

# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
    UMASK="0027"
fi
umask $UMASK

위구문의 UMASK="0027" 을 "0022"로 바꿔줘야 한다. 

 

* 파일의 퍼미션 기본값은 666인데 umask 022을 적용(삭제)하게 되면 666 – 022 = 644  된다. 

즉,  6[rw-] 4[r--] 4[r--] 으로 파일이 생성되어 일반사용자도 파일 읽기 권한이 생김. 

* 디렉터리 또한 퍼미션 기본값은 777인데 umask 022을 적용(삭제)하게 되면 777 – 022 = 755 가 된다. 

 

 

반응형