Mac OS Xでアクセス許可はどのように伝播しますか?
-
28-10-2019 - |
質問
したがって、プログラムを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に自動的に戻ります。
所属していません StackOverflow