1

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

4

1 に答える 1

0

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

于 2011-09-11T03:57:46.057 に答える