setcap을 사용할 때 권한은 어디에 저장되나요?

setcap을 사용할 때 권한은 어디에 저장되나요?

setcap바이너리에 추가 권한 부여를 사용하면 스토리지나 메모리 어딘가에 새 권한을 써야 합니다. 어디에 저장되나요?

그대로 사용하면 lsof프로세스가 너무 빨리 사라지기 때문에 작동하지 않습니다.

답변1

확장된 권한(예::에 의해 설정된 액세스 제어 목록 setfacl및:에 의해 설정된 기능 플래그)은 : setcap에 의해 설정된 기존 권한 및 set[ug]id 플래그와 마찬가지로 chmod파일의 inode에서 동일한 위치 에 저장됩니다.

setcap(inode는 기존 권한 비트를 수용할 수 있는 고정된 크기를 가지지만 잠재적으로 무제한 확장 권한은 아니기 때문에 실제로 디스크의 별도 블록에 저장될 수 있습니다 . 그러나 이는 다음과 같은 드문 경우에만 중요합니다. 디스크 공간을 늘리지만 chmod중복 제거를 사용하는 시스템에서는 디스크 공간을 모두 사용할 수도 있습니다!)

GNU ls는 파일의 setcap 속성을 표시하지 않습니다. 다음 명령을 사용하여 표시할 수 있습니다.getcap. 모든 확장 속성을 나열할 수 있습니다.getfattr -d -m -; setcap 속성은 security.capability이진 형식으로 인코딩되고 getcap디코딩될 수 있습니다.

답변2

setcap은 파일 시스템 확장 속성에 저장된 파일 기능을 설정합니다. 이러한 설명은man 7 capabilities:

파일 능력 세트는 security.capability라는 이름의 확장 속성에 저장됩니다(setxattr(2) 참조).

다음을 통해 실행 중인 프로세스의 기능을 확인할 수 있습니다.CapInh/CapPrm/CapEff필드는/proc/PID/status. 내 답변 보기 "setcap 명령을 사용하여 기능을 설정하는 방법은 무엇입니까?”를 통해 이러한 기능을 실행 프로세스에 적용하는 방법을 알아보세요.

관련 정보