퍼미션 Permission 이란??
리눅스는 여러사용자가 접근가능한 멀티유저 운영체제이다. 퍼미션(권한)기능을 사용하여 특정파일이나 디렉터리에 대하여 읽기/쓰기/삭제 등의 권한을 설정하여 파일접근 권한을 제어하고 파일을 보호하기 위해 사용한다.
퍼미션의 종류
퍼미션 해석
original 디렉터리를 해석해 보겠다. (맨앞 타입을 제외하고 3자리씩 끊어서 해석)
d[타입] rwx[소유자권한] r-x[그룹 소유자 권한] r-x[일반사용자권한]
> original 파일은 디렉토리이다.
> 소유자 root는 읽기/쓰기/실행이 가능
> 그룹소유자 root는 읽기/실행 만 가능
> 일반사용자 (root 외) 는 읽기/실행 만 가능
> 8진수를 이용하면 755 퍼미션에 해당됨.
퍼미션 변경
각 권한은 그에 해당하는 숫자를 가진다. (8진수 이용 방식)
즉, 읽기/쓰기/실행 rwx는 숫자를 더하여 7(4+2+1)이라는 형식으로 표현할 수 있다.
1. chmod : 기존 파일또는 디렉토리에 대한 접근권한 변경시 사용
$ chmod -R [8bit permission] [file name or folder name]
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 가 된다.
'Back-end > Linux' 카테고리의 다른 글
[linux] top 명령어. CPU 사용률 확인 (0) | 2021.04.15 |
---|---|
[linux] yum daum 저장소 설정(yum install 에러 해결: Could not resolve host: None; Unknown error) (0) | 2021.02.25 |
Linux환경에서 Java InstallCert를 사용하여 외부 SSL/TLS인증서를 Import 하기. (0) | 2020.12.08 |
[Linux] su / su - / sudo 명령어와 차이점 (0) | 2020.03.24 |
[Linux] rpm / yum 이란? (0) | 2019.03.22 |