스트레스

스트레스

사용 가능한 모든 Linux 시스템 호출을 열거하는 가장 좋은 방법은 무엇입니까?

이를 명확히 하기 위해 컨테이너화된 환경에서 실행할 때 seccomp에 의해 필터링되는 시스템 호출을 검색하는 방법을 물었습니다.

답변1

Linux 시스템 호출을 열거하는 두 가지 가능한 방법을 찾았습니다. 그 중 하나가 포함됩니다한 줄을 강타하다, 그러나 배포판에 관련 맨페이지가 모두 포함되어 있는지 여부에 따라 다릅니다. 또 다른,스트레스, 가능한 모든 시스템 호출을 발견하고 추적하는 데 사용할 수 있는 도구입니다.

스트레스

strace찾을수있다GitHub그리고GitLab. 귀하의 환경을 보장할 수는 없습니다. 컨테이너 내의 시스템 호출을 검사하려는 경우 이 솔루션은 이상적이지는 않지만 맨페이지가 설치되지 않을 수 있으므로 bash 한 줄짜리 솔루션보다 더 잘 작동합니다.

시스템 호출 유형별로 필터링:

strace -e trace=%desc     Trace all file descriptor related system calls.
                %file     Trace all system calls which take a file name as an argument.
                %fstat    Trace fstat and fstatat syscall variants.
                %fstatfs  Trace fstatfs, fstatfs64, fstatvfs, osf_fstatfs, and osf_fstatfs64 system calls.
                %ipc      Trace all IPC related system calls.
                %lstat    Trace lstat syscall variants.
                %memory   Trace all memory mapping related system calls.
                %network  Trace all the network related system calls.
                %process  Trace all system calls which involve process management.
                %pure     Trace syscalls that always succeed and have no arguments.
                %signal   Trace all signal related system calls.
                %stat     Trace stat syscall variants.
                %statfs   Trace statfs, statfs64, statvfs, osf_statfs, and osf_statfs64 system calls.
                %%stat    Trace syscalls used for requesting file status.
                %%statfs  Trace syscalls related to file system statistics.

그러나 찾으려는 특정 시스템 호출 목록이 있는 경우 다음 명령을 사용할 수 있습니다.

strace -e [syscall1],[syscall2],[syscall3],...,[syscalln]

나도 포함했다이 블로그strace에 대한 추가 정보.

한 줄을 배쉬

시스템 호출 매뉴얼 페이지를 참조하겠습니다.링크 1 링크 2, 또한이 페이지특정 Linux 시스템에 대해 사용 가능한 모든 시스템 호출을 열거하는 작업을 수행하는 방법에 대한 제안을 제공합니다.

웹에서의 개인적인 조언 시스템 호출의 전체 목록은 맨페이지를 참조할 수 있습니다. 이 예에서는 주석이 달린 목록으로 출력을 제공합니다.

ls /usr/share/man/man2 | sed -e s/.2.gz//g | xargs man -s 2 -k  | sort | grep -v 'unimplemented system calls'

결론적으로

다시 한 번 말씀드리지만, 배포판이 모든 패키지와 관련 맨페이지를 모두 제공하지 못하면 이 bash 단일 라이너가 작동하지 않습니다. 주석이 달린 목록 출력이 필요하지 않고 이 솔루션이 원하는 출력에 적합하지 않은 경우 게시물을 업데이트하여 목표를 더 잘 정의하십시오.

나는 또한시스템 호출을 찾기 위한 Python 도구 링크. 이는 발견한 시스템 호출과 사용 가능한 시스템 호출을 비교하는 데 좋은 참고 자료가 될 수 있습니다.

이 답변에 대해 질문이나 문의사항이 있으면 댓글을 남겨주세요. 명령을 시도하기 전에 제가 제공하는 각 링크를 주의 깊게 읽어 보시기 바랍니다. 오해를 바로잡고 게시물을 개선할 수 있도록 피드백을 보내주셔서 감사합니다. 필요한 경우 답변을 업데이트할 수 있습니다.

행운을 빌어요!

관련 정보