各プロセスに対して uname -rs をなりすます方法

各プロセスに対して uname -rs をなりすます方法

Linux 3.13.0-63-generic実行すると、Ubuntuサーバーがuname -rs。私がインターネットで見つけたところ、unameこれはシステムコールでもあり、たとえば、サードパーティプログラムがC ++でこのシステムコールを実行したときに簡単にオーバーライドすることはできません。

/proc/sys/kernel/ostypeたとえば、ファイルを操作して戻り値をなりすます方法があるかどうかを知っている人はいますか?各プロセスインスタンスをだますことができれば良いでしょう。

答え1

私が知る限り、releaseuname -r)とmachine()を使用してプロセスごとにカスタマイズできる方法は限られています。uname -mpersonality()システムコール、すべて公開setarch注文するsysnameuname -r)はまったくカスタマイズできません。

$ uname -rsm; setarch i386 --uname-2.6 --32bit uname -rsm
Linux 3.16.0-4-amd64 x86_64
Linux 2.6.56-4-amd64 i686

unameを別の方法でだましてプログラムを動的にリンクするには、次のようにLD_PRELOADこのuname関数をオーバーライドできます。実行前のファイル記述子のリダイレクト関数のオーバーロードを実行する方法の例ですLD_PRELOAD。プログラムが静的にリンクされている場合はptraceシステムコールをなりすましますが、これにはより高度なプログラミングが必要です。

関連情報