Hello stackoverflow人员,
我编写了一个只使用system(“/ bin / bash”)调用bash shell的C程序
如果我启用了setuid权限位并执行程序,则调用的shell没有将euid设置为0.这没关系,因为我们知道bash shell drop privileges。
但如果我使用sudo ln -s / bin / bash / bin / sh将/ bin / sh更改为指向/ bin / bash
然后使用/ bin / sh作为参数执行系统,然后新调用的shell具有euid = 0。
我正在研究ubuntu 10.04
为什么会这样?
答案 0 :(得分:3)
这是debian补丁的一个“怪异”特征:bash_4.2-5.diff bash为/ bin / sh在POSIX模式下工作,POSIX shell(如破折号)不会丢弃权限(在debian / ubuntu中,-sh或bash符号链接为/ bin / sh)