파일 및 디렉토리에 대한 특권 액세스는 실제로 여부에 따라가 아니라 기능에 의해 결정됩니다 root
. 실제로는 root
일반적으로 가능한 모든 기능이 있지만 모든 / 많은 기능이 삭제되거나 일부는 다른 사용자 (그들의 프로세스)에게 제공 될 수있는 상황이 있습니다.
간단히 말해서, 액세스 제어 점검이 권한있는 프로세스에 대해 작동하는 방법을 이미 설명했습니다. 서로 다른 기능이 실제로 어떤 영향을 미치는지 다음과 같습니다.
여기서 주요 기능CAP_DAC_OVERRIDE
은 "파일 읽기, 쓰기 및 권한 검사를 무시할 수있는"프로세스입니다. 여기에는 파일 읽기 및 쓰기뿐만 아니라 디렉토리 읽기, 쓰기 및 액세스가 포함됩니다.
실제로 실행 파일로 표시되지 않은 파일을 실행하는 경우에는 적용되지 않습니다. 액세스가 파일을 확인하기 전에 ( ) 의 주석은 다음generic_permission
fs/namei.c
과 같이 말합니다.
읽기 / 쓰기 DAC는 항상 재정의 할 수 있습니다. 실행 가능 DAC는 하나 이상의 exec 비트 세트가있을 때 재정의 할 수 있습니다.
그리고 코드는 x
파일을 실행하려고하면 적어도 하나의 비트 세트가 있는지 확인합니다. 우연히 임의의 데이터 파일을 실행하고 오류 또는 이상한 결과를 얻는 것을 방지하기 위해 편의 기능 일뿐입니다.
어쨌든 권한을 무시할 수 있다면 실행 가능한 복사본을 만들어 실행할 수 있습니다. (프로세스의 setuid 파일에 대해서는 이론상 차이가있을 수 있지만 파일 권한 ( CAP_DAC_OVERRIDE
) 을 재정의 할 수 있었지만 다른 관련 기능 ( CAP_FSETID
/ CAP_FOWNER
/ CAP_SETUID
) 은 없었지만 CAP_DAC_OVERRIDE
편집 /etc/shadow
및 이와 유사한 기능 을 허용하면 대략 동일합니다. 어쨌든 전체 루트 액세스 권한을 갖습니다.)
도 있습니다 CAP_DAC_READ_SEARCH
파일을 읽고 어떤 디렉토리에 액세스하지만, 그들에게 실행하거나 기록하지 않을 수 있습니다 기능; 그리고 CAP_FOWNER
그 프로세스가 일반적으로 권한 비트 및 파일 그룹을 변경하는 등, 단지 파일 소유자를 위해 예약 님의 항목을 수행 할 수 있습니다.
디렉토리에서 고정 비트를 재정의하는 것은 아래에 언급 CAP_FOWNER
되어 있으므로 CAP_DAC_OVERRIDE
무시하기에는 충분하지 않은 것 같습니다 . (쓰기 권한을 부여하지만 일반적으로 끈적 거리는 디렉토리에 있으면 +t
제한이 있습니다.)
(여기서 특수 장치는 "파일"로 간주합니다. 최소한 generic_permission()
디렉토리 유형 검사 만 있지만 그 외부에서는 검사하지 않았습니다.)
물론 기능조차도 파일 수정에 도움이되지 않는 상황이 여전히 있습니다.
- 실제 파일이 아니기 때문에
/proc
및의 일부 /sys
파일
- 루트를 제한 할 수있는 SELinux 및 기타 보안 모듈
chattr
불변 으로 ext2 / ext3 / ext4에 플래그 +i
만 추가하십시오 +a
. 둘 다 루트조차 중지하고 파일 이름 바꾸기 등도 방지합니다.
- 서버가 예를 들어 자신의 액세스 제어 할 수있는 네트워크 파일 시스템,
root_squash
NFS에서 아무도에 뿌리를 매핑
- 내가 할 수 있다고 생각하는 퓨즈
- 읽기 전용 마운트
- 읽기 전용 장치
capabilities(7)
매뉴얼 페이지에 소스 파일 주석이 반영되지 않은 것 같습니다 . 버그 보고서 제출을 고려하십시오!