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 実行可能ファイル
答え2
fakeroot
(参照)に関する文書がman fakeroot
この質問に答えているようです。
説明する
fakeroot
ファイル操作に対するroot権限を持つように見える環境でコマンドを実行します。
そして、
はい
joost
実際に何が起こっても、ユーザーができる効果だけ
ついに、
セキュリティ面
fakeroot
setuidではなく一般的なプログラムです。ユーザーの権限を強化したり、システムのセキュリティを低下させたりしません。
最初のブロックで次の単語を確認してください。現れる。抜粋した例では、joost
ユーザーを自分であると考えてください。最後のセクションには、fakeroot
何らかの方法で権限を高めたり、セキュリティを低下させたりしないという明確な説明があります。特に、これは実際の動作方法が変わらないことを意味しますsu
。