[OS] Chap13-04 : 파일 시스템 인터페이스_보호
운영체제(Operating System Concepts) 를 읽고 정리한 정리본입니다.
📌 Chap13-04 : 파일 시스템 인터페이스_보호
신뢰성은 일반적으로 파일의 복사본에 의해 제공된다.
파일 시스템이 사고로 파괴될 경우를 대비하여 복사본을 유지하기 위해 규칙적인 간격으로 디스크 파일을 테이프에 자동으로 복사한다.
이러한 신뢰성은 접근 제어를 통해 이루어질 수 있다.
🫧 접근의 유형
가능한 파일 접근 유형을 제한함으로써 통제된 접근을 제공한다. 여러 요인에 의해 접근이 허용되거나 거부된다.
- 읽기
- 쓰기
- 실행
- 추가
- 삭제
- 리스트
- 속성 변경
🫧 접근 제어
사용자가 특정 파일에 대한 접근을 요청할 때, 운영체제는 그 파일의 접근 리스트를 검사하여 허용 여부를 결정한다.
그 사용자의 요청이 리스트에 포함되어 있다면 접근은 허용되지만 보호 위반이 발생하면 사용자 작업은 파일에 대한 접근이 거부된다.
접근 리스트의 길이를 간결하게 하기 위해 많은 시스템은 모든 사용자를 세 가지 부류로 분류한다.
- 소유자 (User) : 파일을 생성한 사용자
- 그룹 (Group) : 파일을 공유하여 파일에 대한 유사한 접근을 해야 하는 사용자들의 집합
- 기타 (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)