ストレス

ストレス

利用可能なすべてのLinuxシステムコールを列挙する最良の方法は何ですか?

これを明確にするために、コンテナ化された環境で実行するときにseccompによってフィルタリングされたシステムコールを取得する方法を尋ねました。

ベストアンサー1

Linuxシステムコールを列挙する2つの可能な方法が見つかりました。そのうちの1つが含まれています一行を強打するただし、ディストリビューションに関連するすべてのマンページが含まれているかどうかによって異なります。もう一つ、ストレス、可能なすべてのシステムコールを検出して追跡するために使用できるツールです。

ストレス

strace見つけることができるGitHubそしてGitLab。あなたの環境を保証することはできません。コンテナ内のシステムコールを調べたい場合、このソリューションは理想的ではありませんが、マンページがインストールされない可能性があるため、bash 1行のソリューションよりもうまく機能します。

システムコールタイプによるフィルタリング:

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システムに対して利用可能なすべてのシステムコールを列挙するタスクを実行する方法についての提案を提供します。

Webからの個人的なアドバイスシステムコールの完全なリストは、マンページを参照できます。この例では、コメント付きのリストとして出力を提供します。

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

結論として

もう一度申し上げますが、ディストリビューションがすべてのパッケージと関連するマンページの両方を提供できない場合、このbashシングルライナーは機能しません。注釈付きのリスト出力が不要で、このソリューションが目的の出力に適していない場合は、投稿を更新して目標をよりよく定義してください。

私もシステムコールを見つけるためのPythonツールリンク。これは、見つかったシステムコールと利用可能なシステムコールを比較するのに良い参考資料になる可能性があります。

この回答について質問や質問がある場合は、コメントを残してください。コマンドを試す前に、私が提供する各リンクを注意深く読んでください。誤解を解決し、投稿を改善するためにフィードバックを送信していただきありがとうございます。必要に応じて回答を更新できます。

頑張ってください!

おすすめ記事