私のLinuxシステムは32ビットシステムコールテーブルをサポートしていますか?

私のLinuxシステムは32ビットシステムコールテーブルをサポートしていますか?

内容は次のとおりです。

また、i686 や x86_64 などの 32 ビット・システム呼び出し表をサポートするシステムには、次の規則が適用されます。

これが何を意味するのか、そして私のシステムにこのルールが必要かどうかを確認する方法を見つけようとしています。彼らはchownand chown32command/ (おそらくシステムコール) を参照し、引き続きそのシステムアーキテクチャについて議論します。私はLinuxにのみ興味がありますが、x86には興味がありません。


出力では、フィールドlscpuCPU op-mode次のようになります。

CPU op-mode(s):        32-bit, 64-bit

x86_64デュアルアーキテクチャをサポートするプロセッサに適用可能です。 32または64は、相手の命令を解釈できないシステムでのみ表示されると思います。

私のジレンマは、この問題のないレガシーシステムでプログラム的にこの問題を解決することでした(最終的にPythonで書かれました)lscpu。私が確認したこの問題彼らは64ビットの互換性を見つけることについて話していますが、反対のユースケースでそれを使用するのが困難です。

これがこれまで問題になった理由をまとめると、次のようになります。

  • lscpu機械ではない
    • sudo find / -iregex .*lscpu.*確認するために走った
  • /proc/cpuinfoフラグで終わり、64ビット互換性_lm(私が知っている限り32ビット互換性ではない)を説明します。
  • uname十分ではありません。主なアーキテクチャを示し、x86_6432ビットも間違いなくサポートされていると仮定するのは安全ですが、既知のアーキテクチャを互換性にマッピングすることは、この特定の問題を解決する最も信頼性が高く効率的な方法ではないようです。
  • hwinfo機械にはない
  • getconf LONG_BIT64ビット互換性の確認
  • lshw機械にはない

私が見落としている部分があるかもしれませんし、プログラマーとしてそのトピックについて十分に知らないかもしれません。私のシステムがプログラム的に32ビット互換性を持っているかどうかを確認する方法(正確な解析可能な出力を取得する方法など)を見つけるのに誰かを助けることができますか?

ベストアンサー1

私の考えでは、あなたが興味を持っていると思います。RHEL 5セキュリティ技術実装ガイド

「私のLinuxシステムは32ビットシステムコールテーブルをサポートしていますか?」これは非常に興味深い質問であり、Gilesが述べたように、サイトではまだこれについて結論付けていません。この質問も答えにくい質問だ。

まず、STIGコンテキストで単純化しました。つまり「私のLinuxシステムはi386システムコールテーブルをサポートしていますか?」(この一般的な質問は後でもう一度取り上げます)実行中のカーネルでサポートされているシステムコールの明示的なリストを取得できません。しかし、この場合は必要ありません。私たちがしなければならないのは、システムコールのエントリポイントを見つけることだけです。 i386エントリポイントは便利に名前が付けられています。デフォルトの32ビット呼び出しと64〜32ビットエミュレーション層で使用される外部に表示される機能は次のとおりです。do_fast_syscall_32そしてdo_int80_syscall_32。これを確認するための最良の方法は、そこで検索することです/proc/kallsyms(これを禁止する他のSTIGルールがないことを願っています...)。存在する場合、現在コアi386 システムコールをサポートし、lchown32監査ルールが必要です。

このタイプのトピックに関する別の答えを読んで、実行中のシステムでシステムコールのサポートをテストする一般的な方法がシステムコールを呼び出すことです。システムを監査するときに監査ルールをトリガーする必要があるため、適切ではない可能性があります。また、関連するシステムコールをサポートするカーネルと必要なフレームワークを提供するシステムに依存することが多いため、監査時に誤検出につながる可能性があります。

他の同様のツールを使用した結果はインストールされていると報告されているため、誤解を招く可能性がlscpuあります。CPUシステムの能力ではなく能力だ。たとえば、CPUフラグにlscpuハードコードされた対応する項目:lmまたは32ビットおよび64ビットのサポートが可能であることを知らせることは、CPUの観点からは問題ありませんが、残りのシステムもサポートするかどうかはわかりませんzarch。 (そうではありません)。sun4[uv]lscpu

「私のLinuxシステムは32ビットシステムコールテーブルをサポートしていますか?」というより一般的な質問を見直すと、答えは常にアーキテクチャによって異なります。答えを決定するためにシステムコールを調べるには、アーキテクチャのシステムコール履歴を考慮する必要があります。たとえば、chown3232ビットアーキテクチャは必ずしもピアをサポートしているわけではありません。同様に、エントリポイントを見つけることもアーキテクチャによって異なります。

したがって、あなたの質問に対する普遍的な答えはないと思います。答えは少なくともターゲットアーキテクチャを考慮する必要があります。

おすすめ記事