운영체제(Operating System Concepts) 를 읽고 정리한 정리본입니다.

📌 Chap13-04 : 파일 시스템 인터페이스_보호

신뢰성은 일반적으로 파일의 복사본에 의해 제공된다.

파일 시스템이 사고로 파괴될 경우를 대비하여 복사본을 유지하기 위해 규칙적인 간격으로 디스크 파일을 테이프에 자동으로 복사한다.

이러한 신뢰성은 접근 제어를 통해 이루어질 수 있다.

🫧 접근의 유형

가능한 파일 접근 유형을 제한함으로써 통제된 접근을 제공한다. 여러 요인에 의해 접근이 허용되거나 거부된다.

  1. 읽기
  2. 쓰기
  3. 실행
  4. 추가
  5. 삭제
  6. 리스트
  7. 속성 변경

🫧 접근 제어

사용자가 특정 파일에 대한 접근을 요청할 때, 운영체제는 그 파일의 접근 리스트를 검사하여 허용 여부를 결정한다.

그 사용자의 요청이 리스트에 포함되어 있다면 접근은 허용되지만 보호 위반이 발생하면 사용자 작업은 파일에 대한 접근이 거부된다.

접근 리스트의 길이를 간결하게 하기 위해 많은 시스템은 모든 사용자를 세 가지 부류로 분류한다.

  1. 소유자 (User) : 파일을 생성한 사용자
  2. 그룹 (Group) : 파일을 공유하여 파일에 대한 유사한 접근을 해야 하는 사용자들의 집합
  3. 기타 (Other) : 시스템에 있는 모든 다른 사용자들

✨ 권한 부여

파일 또는 디렉터리 보호는 각 세 개의 필드로 나뉜다. 소유자, 그룹 및 기타 권한이다.

해당 필드는 세 개의 rwx 비트 구성되어 있다.

r은 읽기 액세스를 제어하고 w는 쓰기 액세스를 제어하며 x는 실행을 제어한다.


UNIX 시스템에서 권한에 대한 예시는 다음과 같다.

ex) rwxr-xr-x

차례대로 소유자는 rwx 권한을 가지고, 그룹 및 기타는 r-x 권한을 가지게 된다.

이는 숫자로도 나타낼 수 있으며, 해당 자리에 맞게 세 비트씩 끊어 읽으면 된다.

해당 예에서 rwxr-xr-x는 755로 나타낼 수 있다. (111.101.101 => 755)

🫧 ACL

ACL은 Access Control List의 약자로, 접근 제어 목록을 설정하는 것이다.

파일과 디렉터리의 확장 속성 중 하나로, chmod 명령어보다 더 다양한 권한에 대해 수행이 가능하다.

chmod 권한 명령어로 세 가지 분류된 사용자 (user, group, other) 의 한정된 영역에 권한을 부여할 수 있다. 그러나 ACL을 사용하게 되면 user, group, other 권한을 건드리지 않고 특정 사용자에게 권한을 부여할 수 있게 된다.

✨ ACL 설정법

ACL 설정 방법은 크게 파일과 디렉터리 두 가지 방법으로 나뉜다. 우선 설정 명령어를 알아보도록 하자.

우분투 기준, ls 명령어로는 ACL 권한을 확인할 수 없다. 따라 특별한 명령어를 사용해 이를 확인할 수 있도록 해야 한다.

getfacl [옵션] [파일/디렉터리] : 파일/디렉터리의 추가적인 권한을 확인할 때 사용
-d : 기본 정보에 대한 확인
-R : 디렉터리인 경우 하위 디렉터리 내용까지 확인 가능
setfacl [옵션] [권한] [파일/디렉터리] : 파일/디렉터리의 추가적인 권한을 수정할 때 사용
-m : ACL 설정 (수정)
-x : ACL 삭제
-R : 디렉터리인 경우 하위 디렉터리 내용까지 권한 변경
-b : 모든 ACL 삭제 (mask 포함)

ex) setfacl -m u:testuser:rx /test

  • 유저 권한 부여 - u:[유저명]:[rwx or 숫자]
  • 그룹 권한 부여 - g:[그룹명]:[rwx or 숫자]
  • 마스크 값 설정 - m::[rx or 숫자]

여기서 mask의 역할은 유저와 그룹에 어떤 ACL 권한을 줘도 mask가 설정한 권한을 넘기지 못하게 하는 것이다.

macOS 환경에서는 getfacl, setfacl 명령어가 따로 존재하지 않아, ls -le로 확인, chmod +a “[유저명] allow [read,write,execute] [파일명]” 으로 사용한다.

🫧 참고 자료

  • [[Linux] ACL 개념 설정법 티스토리_떵해이](https://it-serial.tistory.com/entry/Linux-ACL-%EA%B0%9C%EB%85%90-%EC%84%A4%EC%A0%95%EB%B2%95setfacl-getfacl)

카테고리:

업데이트: