質問

したがって、プログラムをMacに根付かせて、そのプログラムが /bin /shのexecを実行している場合、シェルはルートではありませんが、Linuxで同じことをする場合、シェルはルートです。 MacはLinuxが行うのと同じように権限を伝播しませんか?それとも、SUIDビットで何か違うことが起こっていますか?私の理解では、ルートの特権を持つSUIDルートが実行されるプログラムがあります。また、 /bin /shを呼び出すルートシェルは別のルートシェルを作成するため、exec on /bin /shを呼び出すsuidルートプログラムはルートシェルを作成するべきではありませんか?

役に立ちましたか?

解決

すべてのプロセスには、複数のUIDがあります(少なくとも実際の、効果的、保存されたUID)。 setUidバイナリの実行は、「実際の」uidではなく、有効で保存されたuidにのみ影響します。その結果、setuidバイナリはUIDが実行されたものを「知り」、そのuidに戻すことができます。この場合、BASHの実装 /bin/sh 実行時に実際のUIDに自動的に戻ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top