Linux 파일 보안에서 DAC (파일 권한), ACL 및 MAC (SELinux)의 역할은 무엇입니까?


18

Linux 파일 보안에서 다른 역할 DAC, ACL 및 MAC에 대한 설명 / 확인 / 세련이 필요합니다.

문서에서 약간의 연구를 한 후에, 이것은 스택에 대한 나의 이해입니다.

  1. SELinux는 파일 객체에 대한 액세스를 허용해야합니다.
  2. 파일의 ACL을 (예를 들어, 만약 setfacl, getfacl명시 있도록하는 ACL 마운트가) / 개체에 대한 액세스를 거부, 더 이상의 처리가 필요하다.
  3. 그렇지 않으면 파일 권한 (rwxrwxrwx DAC 모델)에 달려 있습니다.

뭔가 빠졌습니까? 그렇지 않은 상황이 있습니까?


2
당신이 맞다고 생각합니다. 발생한 문제를 게시 할 수 있습니까?
케빈 M

잘못된 질문에 대해 사과드립니다. 이것에 관해서는, 나는 "시행 및 오류"모드로 들어갑니다. 나는 자신있게 그것을 이해하려고 노력하고 있으며 누군가가 스택의 각 부분이 담당하는 역할에 대한 명확한 그림을 공유하기를 희망했습니다.
Belmin Fernandez

답변에서 찾고있는 것을 명확히하기 위해 질문을 편집했습니다.
벨민 페르난데스

답변:


19

프로세스가 파일에 대한 작업을 수행 할 때 Linux 커널은 다음 순서로 검사를 수행합니다.

  1. DAC (임의 액세스 제어) 또는 사용자 지시 액세스 제어. 여기에는 클래식 UNIX 스타일 권한 검사와 POSIX 액세스 제어 목록 (ACL) 이 모두 포함됩니다 . Classical UNIX 검사는 현재 프로세스 UID 및 GID와 설정된 모드 (읽기 / 쓰기 / eXecute)와 관련하여 액세스중인 파일의 UID 및 GID를 비교합니다. 액세스 제어 목록은 기존 UNIX 검사를 확장하여 권한 제어와 관련된 추가 옵션을 허용합니다.

  2. MAC (필수 액세스 제어) 또는 정책 기반 액세스 제어. 이것은 더 이상 실제 모듈이 아닌 LSM (Linux Security Modules) 을 사용하여 구현됩니다 (이전에는 사용되었지만 삭제되었습니다). 기존 UNIX 스타일 보안 검사 이외의 다른 모델을 기반으로 추가 검사를 수행 할 수 있습니다. 이러한 모든 모델은 어떤 상황에서 어떤 프로세스에 어떤 종류의 양식이 허용되는지를 설명하는 정책을 기반으로합니다.

다음은 온라인 Linux Cross Reference 링크로 내 답변을 뒷받침하는 inodes 액세스 (파일 액세스 포함) 예제입니다 . 주어진 " function_name(filename : line)"은 3.14 버전의 Linux 커널 용입니다.

기능 inode_permission( FS / namei.c : 449 ) (파일 시스템 자체에 대한 읽기 권한 체크한다 sb_permission에서 FS / namei.c : 425 ) 후 호출 __inode_permission( FS / namei.c : 394 )의 읽기 / 쓰기를 확인 / 실행할 do_inode_permission( fs / namei.c : 368 ) (DAC) 의 inode에 대한 권한 및 POSIX ACL 및 security_inode_permission( security / security.c : 550 )의 LSM 관련 권한 (MAC)

이 주문 에는 단 하나의 예외 가있었습니다 (DAC, MAC) : mmap 검사에 대한 것이 었습니다. 그러나 이것은 3.15 버전의 Linux 커널 ( 관련 commit )에서 수정되었습니다.


정식 출처에 대한 매우 자세한 답변. 감사!
벨민 페르난데스

15

DAC== Discretionary Access Control, http://en.wikipedia.org/wiki/Discretionary_access_control
MAC == Mandatory Access Control, http://en.wikipedia.org/wiki/Mandatory_access_control
ACL == Access Control List, http://en.wikipedia.org/wiki/Access_control_list

ACL지정 제어가 제어의 방법에 의해 도포 될 DACMAC. MAC명시 적이며 중앙에서 제어되며 사용자에게 명시적인 권한이없는 한 개체에 대한 권한을 부여 할 수 없지만 사용자 DAC는 다른 사용자에게 액세스 할 수있는 개체에 대한 액세스 권한을 부여 할 수 있습니다.

MAC ACLs는 항상 요청에 먼저 적용되며 액세스가 거부되면 처리가 중지됩니다. 액세스가 허용되면 DAC ACLs가 적용되고 액세스가 거부되면 처리가 중지됩니다. MAC및에 의해 액세스 권한이 부여 된 경우에만 DAC ACL사용자가 요청한 개체에 액세스 할 수 있습니다.

SELinuxMACLinux에 대한 구현이며 (기타가 있음) 기존 rwx파일 권한은 소유 사용자 및 그룹과 결합하여 complete를 형성합니다 DAC ACL. SELinux'정책은'본질적이다 MAC ACL.


1
파일 ACL (예 :)은 어디에 있습니까 setfacl?
Belmin Fernandez

1
setacl기본 파일 시스템을 확장하여 파일 및 디렉토리에 ACL둘 이상의 사용자 또는 그룹을 할당 할 수 있습니다 ACL. 이것은 또한 DAC구현이므로 SELinux MAC ACLs 다음에 적용됩니다 .
Mike Insch

고마워 마이크. 질문 하나 더 : 테스트를 통해 알 수있는 한 명시 적으로 설정된 setfaclACL은 기존 권한보다 우선합니다. 모든 경우에 이것이 사실입니까?
벨민 페르난데스

내가 아는 한, setacl/ setfacl ACLs는 ACL파일 의 전통적인 '단순' 을 무시 합니다.
Mike Insch

1
마이크, 당신의 메모 setfacl는 답 에 속합니다.
Pavel Šimerda

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.