본문 바로가기
CS/보안

[보안] 파일 접근권한과 chmod, umask 명령어 사용법 (문자, 숫자 표기법)

by jangThang 2023. 5. 16.
반응형

 유닉스/리눅스 계열 서버에서 파일의 접근권한은 chmod와 umask 명령어로 관리합니다. 파일 접근권한에 대해 먼저 알아보고, 파일 접근권한을 변경할 수 있는 chmod 명령어와 기본값을 설정하는 umask 명령어에 대해 알아봅니다.

 

[ Contents ]

     

     

    1. 파일 접근권한 

     

     파일 접근권한은 총 12비트로 구성되어 있습니다. 특수권한, 소유자, 그룹, 외부 사용자별로 3bit씩 할당되어 있어 보통 8진수로 표현합니다.

     r은 Read(읽기), w는 Write(쓰기), x는 eXecution(실행)으로 각 비트로 해당 권한의 유무를 정의합니다. 예를 들어 5은 8진수로 101이며 rwx에서 읽기와 실행 권한만 있고 쓰기 권한은 없는 경우입니다.

     

     

    suid (setuid) 소유자(user) 권한의 실행(x) 대신 s가 들어가며, 소유자의 권한으로 실행됩니다.
    sgid (setgid) 그룹(group) 권한의 실행(x) 대신 s가 들어가며, 그룹 권한으로 실행됩니다.
    sticky-bit 외부 사용자(other) 권한의 실행(x) 대신 t가 들어가며, 디렉토리 내 파일은 해당 파일의 소유자, 그룹 또는 루트 사용자만 삭제할 수 있습니다.

     

     특수권한은 모두 실행(x)과 관련된 권한입니다.

     실행 시 다른 파일을 참조하는 경우, 해당 파일의 소유자가 아니면 접근하지 못할 때가 있습니다. 예를 들어 passwd 명령어로 자신의 패스워드를 바꿀 수 있지만, 패스워드 파일의 접근 권한은 없죠. 하지만 변경이 가능한 이유는 suid 특수권한으로 실행했기 때문입니다.

     반면 sticky-bit는 '디렉토리(폴더)'에만 부여하는 특수권한입니다. 주로 공용 디렉토리에서 사용하며, 자신이 만든 파일만 삭제할 수 있도록 제한하거나 타 그룹 멤버가 수정 및 삭제를 못하도록 막는 기능을 합니다.

     

     

     

    2. chmod 명령어

    chmod [권한] [파일/디렉토리]

     

     chmod는 "change mode"의 약자로, 파일이나 디렉토리의 접근권한을 변경하는 명령어입니다.

     

    숫자 표기법: 0부터 7까지의 숫자 (8진수로 000 ~ 111)
    문자 표기법: u, g, o, a(all), r, w, x +(추가), -(제거), =(설정)

     

     권한은 숫자 혹은 문자를 이용해서 표현합니다. 보통 특수권한은 없기 때문에, 소유자(User)-그룹(Group)-외부 사용자(Other)만 다루는 경우가 많습니다.

     

     예를 들어 chmod 755 test.txt 는 test.txt에 소유자에 읽기/쓰기/실행 권한을 주고, 그룹은 읽기/실행, 외부 사용자도 읽기/실행 권한만 주는 명령어입니다. 755를 8진수로 풀어쓰면 111 101 101이며, 위 표와 같이 적용됩니다.

     chmod 755 test.txt를 문자 표기법으로 바꾸면, chmod u+rwx, g+rx, o+rx test.txt입니다. 또는 =를 사용해서 chmod u=rwx, g=rx, o=rx test.txt로 해도 됩니다.

     문자 표기법은 숫자 표기법보다 직관적이고 이해하기 쉽지만 조금 깁니다. 그래서 숫자 표기법을 많이 사용하며, 익숙해지면 간편하게 사용할 수 있습니다. 특히 755와 같이 자주 사용되는 권한 배치만 주로 쓰기 때문에 금방 익힐 수 있습니다.

     

     

     

    3. umask 명령어

    umask [숫자 표기법]

     

     umask는 이후에 생성될 파일이나 디렉토리의 권한을 제한하는 기본값입니다. chmod에선 부여하는 권한 배치를 적었다면, umask에서는 제한하는 권한 배치를 씁니다.

     따라서 umask 022를 주로 사용하며, 이는 그룹과 외부 사용자의 쓰기권한이 없는 기본값입니다. chmod 755와 정반대의 권한 배치죠.

     

     

    umask -S [문자 표기법]

     umask도 문자 표기법으로 작성할 수 있으며, umask 022는 umask -S u=rwx, g=r, o=rx 로 쓸 수 있습니다.

     문자 표기법으로 작성할 때에는 chmod와 마찬가지로 부여할 권한을 써야한다는 점을 유의하시기 바랍니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글