서로 다른 두 가지 기능 세트를 하나의 파일에 설정할 수 있습니까?

서로 다른 두 가지 기능 세트를 하나의 파일에 설정할 수 있습니까?

파일의 허용된 집합과 상속된 집합에 대해 서로 다른 기능을 설정하고 싶습니다. 이 같은:

sudo setcap cap_fsetid=ei mybinary
sudo setcap cap_kill=ep mybinary

그러나 후자의 명령은 이전 명령을 덮어씁니다. 이런 식으로 기능을 관리하는 것이 가능합니까?

답변1

getcap현재 설정된 기능 목록을 가져오는 데 사용할 수 있습니다 . 공백으로 구분되어 있으므로 다음과 같이 더 추가할 수 있습니다.

sudo setcap first_capability=itsvalue executable_fname
sudo setcap "$(getcap executable_fname) newcap=value" executable_fname

(공백으로 구분된 기능 목록: 에 인용됨 man setcap, 에 설명됨 man cap_from_text)

참고: 설정하기 전에 문의하세요.아니요경쟁 조건으로부터 보호 - 다른 프로세스가 동시에 기능을 설정하지 않도록 하십시오.

특정 시점의 모든 기능을 알고 있으면 더 쉽습니다.

sudo setcap "first_capability=itsvalue newcap=value" executable_fname

이와 관련하여 +기능 =을 향상시키는 데 사용될 수 있습니다. 여기에서 =읽기가 더 쉽지만 +상태를 더 예측 가능하게 구축하는 몇 가지 특수 사례가 있습니다. 특히 두 가지 다른 작업에 대해 나열된 기능에는 공통 하위 집합이 있습니다. 예를 들어, 다음 두 가지는 동일하지 않습니다.

$ sudo setcap "first=i second=p first,second=e" executable
$ sudo setcap "first=i second=p first,second+e" executable

두 번째는 다음과 같습니다.

$ sudo setcap "first=ie second=pe" executable

관련 정보