私は自分のMacでsuidのプログラムを作って、そのプログラムが/ bin/shのexecを実行すると、シェルはrootではなく、Linuxで同じことをするとシェルはrootになります。 MacはLinuxと同じように権限を伝播しないのですか?あるいは、何か別のものがありますか?私が理解しているのは、suid rootを持つプログラムはroot権限で実行されるということです。/bin/shを呼び出すルートシェルは別のルートシェルを作成するので、/ bin/shのexecを呼び出すsuidルートプログラムはルートシェルを作成しないでください。Mac OS Xで権限がどのように伝播するのですか?
1
A
答えて
0
すべてのプロセスには、複数のUID(実際の有効なUIDと保存されたUID)があります。 setuidバイナリを実行すると、実際のUIDではなく、有効なUIDと保存されたUIDにのみ影響します。その結果、setuidバイナリは実行されたUIDを「知っている」でしょうし、そのUIDに戻ることができます。この場合、bash実装/bin/sh
は実行時に自動的にその実際のUIDに戻ります。
[setuid](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/setuid.2.html)を使用して、実際のUIDをrootに変更することができます実行する前に/ bin/sh。 –