setcap은 더 이상 사용되지 않습니까?

setcap은 더 이상 사용되지 않습니까?

루트가 아닌 ID를 사용하여 웹 서버를 시작합니다.체계유닛 파일.

listen tcp :80: bind: permission denied도망쳤는데도 아직 남아있어

setcap cap_net_bind_service=+ep

실행 파일에.

내가 찾은 인터넷의 샘플 단위 파일에서

CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE

유닛 파일에 사용됩니다. 그래서 시도해 보았는데 갑자기 응용 프로그램이 포트 80을 바인딩할 수 있었습니다.

이것이 나에게 무엇을 말해주는가? setcap더 이상 사용되지 않거나 더 이상 사용되지 않거나 무시됩니까? 오직 통해서만체계아니면 일반적으로 Linux만 사용합니까?

답변1

올바른 말은 일반적으로 systemd가 관리하는 파일 기능을 사용하지 않지만 setcap이를 서비스 단위의 일부로 구성해야 한다는 것입니다.

따라서 완전히 사용되지 않는 것은 아닙니다 setcap... (시스템 시작 서비스 외부에서 유효한 용도로 사용될 수 있습니다.) 그러나 적어도 시스템 서비스에는 적용되지 않습니다.

사실, 파일 기능(설정에 의한 setcap)은 항상 처음부터 의심스러웠습니다. "상속 가능한" 기능을 사용해야 하는데, 이는 다소 잘못 생각되고 많은 단점이 있습니다... "환경" 기능의 커널은 다음과 같습니다. 이러한 많은 문제를 해결하기 위해 도입되었으며 새로운 시스템이 채택하고 있는 것입니다(여기에는 AmbientCapabilities=낮은 포트에 바인딩할 수 있도록 서비스를 설정하고 있음을 볼 수 있듯이 systemd 포함 ).

함수에 대한 주제는 매우 복잡합니다... 문제에 대한 보다 자세한 소개를 보려면 확인하고 싶을 수도 있습니다."물려받은 능력"LWN에서. 함수 세트의 일부 대수 표기법을 포함한 자세한 내용은 다음을 참조하세요.능력(7)맨 페이지.

관련 정보