capsh --print는 실제로 무엇을 합니까?

capsh --print는 실제로 무엇을 합니까?

내가 아는 한 Linux 기능은 프로세스/파일 기반으로 정의됩니다. 하지만 capsh --print를 수행하면 사용자의 능력이 표시됩니다.

그렇다면 capsh --print는 정확히 무엇을 하는 걸까요? 능력은 사용자가 아닌 프로세스에서만 정의됩니까?

답변1

capshlibcap제공된 기능과 API를 사용하고 확인하는 방법을 탐색하기 위한 도구입니다 . 디버깅에 사용할 수 있습니다.언제 무슨 일이 일어나는지모든 종류의 질문.

의 중요한 속성 capsh은 인수를 왼쪽에서 오른쪽으로 엄격하게 평가한다는 것입니다. 따라서 무언가가 원하는 위치에 있지 않은 이유를 알아내려고 할 때 --print매개변수를 삽입하여 이를 알아낼 수 있습니다. --print실행 중인 프로세스의 현재 상태를 출력하면 됩니다 capsh.

기능과 관련된 기능을 갖춘 일종의 스위스 군용 칼로 생각해야 합니다. 트리를 만들어서 libcap사용하세요quicktest.sh라이브러리가 최신 커널 등에서 계속 작동하는지 확인하세요. 스크립트에는 libcap커널 함수를 사용한 다양한 작업 예제와 예상 결과가 포함되어 있습니다 .

여기에는 환경 기능은 물론 비표준 커널 작동 모드(일명libcap 모델).

예를 들어, 다음 두 시퀀스는 커널 작동 방식으로 인해 서로 다른 결과를 생성합니다.

$ sudo capsh --iab=^cap_dac_override --user=$(whoami) --print
$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --print

다음 질문에 자동으로 답변할 수 있습니다.이것이 환경을 조금 개선합니까?이 같은:

$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --has-a=cap_dac_override && echo yes

또한, 세계를 탐험하고 싶다면POSIX.1e초안 위원회에서는 다음과 같은 것을 시도할 수 있다고 상상합니다.

$ sudo capsh --mode=PURE1E --user=$(whoami) --

답변2

단순한. 이는 사용자 기능이 아닙니다. 이것은 그 자체의 능력이다. 그래서 부모로부터 물려받은 것입니다.

나는 (몇 년 전) 우리가 토론을 capsh하고 그것이 무엇을 위한 것인지 알아내려고 노력했던 것을 기억합니다. 우리는 그것이 거의 쓸모없다고 생각했고 논의를 통해 주변 함수(상속되고 유효한)의 발명이 이루어졌습니다. capsh환경 기능이 존재했기 때문에 이것을 시도하지 않았습니다. 이는 일련의 sudo기능(예:)을 생성할 때만 필요합니다 capsh. 또는 때로는 더 전문적인 포장이 가능합니다.

관련 정보