suはfakerootをどのように検出しますか?

suはfakerootをどのように検出しますか?

suを実行すると、ターゲットユーザーのパスワードを要求されます。ルートとして実行すると、パスワードを求められません。しかし、fakerootで実行すると、どのようにパスワードを要求できますか? fakerootを使用すると、すべてのプログラムにユーザーをrootと考えさせる必要はありませんか?私のプログラムの場合、これを行う唯一の方法はsuを実行して戻りコードを確認することです。しかし、どうすればいいですか?

ベストアンサー1

su何も検出されません。

からman fakeroot

chmod(2)fakerootは、ファイル操作ライブラリ関数(など)を実際のライブラリ関数の効果をシミュレートする関数stat(2)(ユーザーが実際にルートである場合)に置き換えることによって機能します。これらのラッパー関数は、共有ライブラリまたはプラットフォームの同様の場所
にあります。/usr/lib/*/libfake‐root-\*.so共有オブジェクトはLD_PRELOAD動的ローダメカニズムを介してロードされます。 (望むよりld.so(8)

su、setuid実行可能ファイルとして常にrootとして実行されますが、関係ありません1 LD_PRELOAD。したがって、「一般」プログラムはrootとして実行され、必要な機能が置き換えられると言いますが、suこれらの修正はまったく表示されません。だからsuいつものように走ってください。


¹これは恐ろしいセキュリティホールです。必要なタスクを実行するために含まれるライブラリを設定できます。LD_PRELOAD実行できる場合は、自動的にルートとして実行されます。どのsetuid 実行可能ファイル

おすすめ記事