你好stackoverflow家伙,
我编写了一个C程序,该程序只需使用系统("/bin/bash")
调用bash壳如果我启用了setUID权限位并执行程序,则调用的shell不会设置为0。
但是,如果我更改/bin/sh,请使用sudo ln -s/bin/bash/bash/bin/sh
指向/bin/bash然后用/bin/sh作为参数执行系统,然后新调用的壳具有euid = 0。
我正在使用Ubuntu 10.04
为什么会发生这种情况?
这是debian补丁的"怪异"功能:bash_4.2-5.diffbash as/bin/sh在posix模式下工作,而posix shell(如dash)不会丢弃特权(debian/ubuntu中的bash或bash sym symind s sym s s sommint as s s sommint symint symint s s s somplind s s in debian/ubuntu)