3

rootを使用して、uid 9999999のsetuid関数を呼び出したプログラムを実行しました。その後、/ etc / passwdに存在しなくても、このuidを正常に設定します。では、setuidはどのようにuidを検証し、この無効なuidを設定するとどのような影響がありますか?

4

2 に答える 2

2

setuidユーザー ID を検証せず、プロセスがそれを設定する権限を持っていることだけを確認します。

ユーザーが にエントリを持っていなくても、システムは気にしません/etc/passwd。たとえば、「実際の」ユーザーが関連付けられていなくても、任意のユーザー ID が所有するファイルを持つことができます。

于 2013-03-06T15:12:27.713 に答える
1

setuid通常、実行するのに十分な権限がある場合 (つまり、 の場合) は何も検証しませんroot。ユーザー名がそのUIDに関連付けられているかどうかに関係なく、UIDを要求されたものに設定するだけ/etc/passwdです。

( POSIXによると、UID が無効な場合に失敗する可能性がEINVALありますが、私が知っている Unix フレーバーは決してそうしません。)

于 2013-03-06T15:11:09.597 に答える