/ bin / sh不会删除权限

时间:2012-11-03 12:32:02

标签: bash symlink privileges setuid

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

为什么会这样?

1 个答案:

答案 0 :(得分:3)

这是debian补丁的一个“怪异”特征:bash_4.2-5.diff bash为/ bin / sh在POSIX模式下工作,POSIX shell(如破折号)不会丢弃权限(在debian / ubuntu中,-sh或bash符号链接为/ bin / sh)