컴퓨터공학부

[시스템 프로그래밍 Linux] 파일 접근 권한 관리

혜머니 2026. 4. 5. 00:11

1. 파일 접근 권한

 - 리눅스와 같은 다중 사용자 시스템은 사용자의 파일에 다른 사용자가 마음대로 접근할 수 없도록 보안 기능을 제공함

 - 사용자는 자신의 파일과 디렉터리 중에서 다른 사용자가 접근해도 되는 것과 그렇지 않은 것을 구분하여 접근 권한을 제한함

 - 사용자의 파일을 보호하는 가장 기본적인 보안 기능

 - 리눅스에서는 사용자 카테고리별로 접근 권한을 다르게 부여해 파일을 보호할 수 있음

 - 카테고리별로 파일에 접근하는 권한을 소유자나 시스템 관리자가 조정할 수 있음

 - 읽기 권한 : 파일을 변경할 수는 없지만 내용은 볼 수 있는 권한

 - 쓰기 권한 : 파일의 내용을 보는 것 뿐 아니라 수정하거나 삭제도 가능한 권한

권한 파일 디렉터리
읽기(r) 파일을 읽거나 복사할 수 있음 ls 명령으로 디렉터리 목록을 볼 수 있음
ls 명령의 실행 권한이 있어야 사용 가능
쓰기(w) 파일을 수정, 이동, 삭제할 수 있음
* 디렉터리에 쓰기 권한이 있어야 함
파일을 생성하거나 삭제할 수 있음
실행(x) 파일을 실행할 수 있음
*셀 스크립트나 실행 파일의 경우
cd 명령을 사용할 수 있음
파일을 디렉터리로 이동하거나 복사할 수 있음

 - 접근 권한 표기 : 사용자 카테고리별로 누가 파일을 읽고 쓰고 실행할 수 있는지 문자로 표현 (없을 경우 -)

 - 사용자 카테고리별로 세가지 권한의 부여 여부를 rwx 세 문자를 묶어서 표기

  * 사용자 카테고리가 세 개이고, 권한도 세 개이므로 총 9개의 문자로 나타냄

 - ls -l 파일 확인 시, -rw-r--r--. 로 나오는 부분의 맨 앞의 -를 제외한 rw-r--r--가 접근 권한 표시임

 - 사용자 카테고리별로 세문자씩 한묶음으로 표시

 - User(소유자), Group(그룹), Other(기타사용자) 카테고리로 나뉨

 - rw-r-xr-- : 소유자가 읽기 쓰기 권한을 가지고 있음, 그룹은 읽기와 실행 권한을 가지고 있음, 기타 사용자는 읽기 권한만 가짐

 - 파일의 소유자와 시스템 관리자는 접근 권한을 바꿀 수 있음

 - chmod 파일이나 디텍토리 접근 권한을 변경함

 - 옵션 (-R) 하위 디렉터리까지 모두 변경 가능

 - 기호모드 : 문자와 기호(rwx)로 표기

 - 숫자모드 : 문자를 숫자로 변경한 값으로 표기

2. 권한 변경

 (1) 기호를 이용한 파일 접근 권한 변경

  - chmod 사용자카테고리문자 연산자기호 접근권한문서 파일명

  * 사용자카테고리 문자 = 사용자(u), 그룹(g), 기타 사용자(o) 전체 사용자(a)를 문자로 표기

  * 연산자 = 권한 부여나 제거를 나타내는 기호 +(권한부여) -(권한제거) =(접근권한설정)

  * 접근 권한 기호 = 읽기 쓰기 실행을 나타내는 문자 사용  r(읽기) w(쓰기) x(실행)

 [ 예시 ]

  u+x 소유자에게 쓰기 권한 부여

  o-r 기타 사용자에게 읽기 권한 제거

  u=rwx 소유자에게 모든 권한 부여

  u+x, go+w 소유자에게 실행 권한, 그룹과 기타 사용자에게 쓰기 권한 부여

  +wx 모든 사용자에게 쓰기, 실행 권한 부여

 (2) 숫자를 이용한 파일 접근 권한 변경

   - 기호 모드에서는 카테고리와 권한으 모두 문자로 표시했으나 숫자모드에서는 각 권한의 유무를 0과 1로 표기하고 이를 다시 환산하여 숫자로 표기

   - rwx = (111) = 7, rx = (101) = 5, x = (001) = 1 등등으로 표시

   - 카테고리별로 계산하여 사용

   - chmod 777 파일명 으로 사용

   - 숫자의 각 위치가 사용자 카테고리를 나타내기 때문에 사용자 카테고리를 따로 지정할 필요가 없음

   - 항상 세자리 수를 사용해야 함

   - 변경하려는 한 카테고리의 권한 뿐 아니라 다른 카테고리 권한도 계산하여 사용해야 함

3. 접근 권한 설정

 (1) 기본 접근 권한 설정

   - 리눅스는 파일, 디렉터리를 설정할 때 기본 접근 권한이 자동으로 설정됨

   - 일반 파일 : 소유자(rw) 그룹/기타사용자(r)

   - 일반 디렉터리 : 소유자(rwx) 그룹/기타사용자(rx)

   - 기본 접근 권한은 리눅스 시스템에 설정된 기본값에 따른 것임(기본값 변경 가능)

   - 마스크 설정으로 접근 권한 마스킹 가능

     * unmask -S (마스크 값을 문자로 출력함) 

     * 아무 인자 없이 umask만 입력 시 현재 설정값 출력, umask -S만 입력 시 u=rwx, g=rx, o=rx 이런식으로 문자로 출력

     * umask 0077 입력 시 기본 접근 권한 0077로 변경됨

   - 마스크 값은 파일이 생성될 때마다 적용됨

   - 마스크 값을 비트로 표시했을 때 그 값이 1인 경우 대응하는 권한은 제외함

   - 마스크 값이 1이면 요청 권한이 어떤 것이든 권한 0(부여 안됨)

     * 실행 파일도 기본적으로 실행 권한을 가져야 하며, 디렉터리와 같은 형태로 권한이 부여됨

   - 리눅스의 기본 마스크값은 배포 판의 버전에 따라 다른데, 필요에 따라 적절히 변경하며 자신의 파일과 디렉토리 보호 가능

   - umask로 마스크 값을 바꿀 때 파일과 디렉터리에 모두 적용해 봐야함 (파일에는 적합하나, 디렉터리에는 부적합할 수 있음)

 (2) 특수 접근 권한 설정

   - 일반적인 접근권한 외에 리눅스에서 제공하는 특별한 접근 권한

   - umask가 출력하는 네 자리중 맨 앞자리는 특수 접근 권한을 나타냄

   - 맨앞자리 숫자 0 일반적인 접근 권한 설정

   - 맨앞자리 숫자 1,2,4 특수 접근 권한 설정

     * 1 스티키 비트(Sticky Bit) : 디렉터리에 설정하며, 이 디렉터리에 누구나 파일을 생성할 수 있는 권한을 가짐

                                                파일은 파일을 생성한 계정으로 소유자가 설정되고, 다른 사용자가 생성한 파일은 삭제할 수 없음

                                                스티키 비트 설정 시 기타 사용자의 설정 권한에 't'가 표시됨 (예시 : drwxdrwdrwt)

     * 2 SetGID : 설정 시 해당 파일이 실행될 동안에는 파일 소유 그룹의 권한으로 실행됨

                          SetUID가 설정되면 그룹의 실행 권한에 's'가 표시됨 (예시 : -rwxr-sr-x)

     * 4 SetUID  : 설정 시 파일을 실행하면 실행하는 동안에는 사용자 권한이 아니라 파일 소유자 권한이 적용됨

                           SetUID가 설정되면 소유자의 실행 권한에 's'가 표시됨 (예시 : -rwsr-xr-x)

  - 특수 권한을 설정하는 파일이나 디렉터리 모두 실행 권한을 가지고 있어야 함

  - 실행 권한이 없는 파일에 SetUID나 SetGID를 설정하면 's'가 아니라 'S'가 표시됨

  - 디렉터리 실행 권한이 없는데 스티키비트를 설정하면 't'가 아니라 'T'가 표시됨

  - 대문자 S나 T가 나타나면 특수 접근 권한을 잘못 설정한 것임