Linux 버전의 실행 프로그램에서 사용할 수 있는 기능 목록을 가져와야 합니다. 사용자가 파일에 부여할 기능을 선택할 수 있도록 하기 위함입니다. 표준 라이브러리를 사용하여 이를 수행할 수 있는 기회가 있습니까? 내가 이 작업을 수행할 수 있었던 유일한 방법은 경계 세트를 보는 것이었지만 cash --print
,
- 왜 그렇게 말하면서
...,cap_audit_read,38,39
표시 됩니까 ?/usr/include/linux/capability.h
CAP_LAST_CAP
CAP_AUDIT_READ(37)
- 가능하다면 실제로 일부 기능 설명을 사용하겠습니다.
답변1
다음 중 하나 이상입니다.
명령줄:
$ /sbin/capsh --decode=$(grep CapBnd /proc/1/status|cut -f2)
코드( list.c
)에서:
#include <stdio.h>
#include <sys/capability.h>
int main(int argc, char **argv) {
for (cap_value_t c = 0; c < cap_max_bits(); c++) {
char *name = cap_to_name(c);
printf("%s\n", name);
cap_free(name);
}
}
다음과 같이 컴파일되었습니다.
$ gcc -o list list.c -lcap
최신 버전에는 capsh
이 capsh --explain=
주장이 포함되어 있습니다. 예를 들어,
$ /sbin/capsh --explain=cap_chown
cap_chown (0) [/proc/self/status:CapXXX: 0x0000000000000001]
Allows a process to arbitrarily change the user and
group ownership of a file.