【发布时间】:2012-11-03 12:32:01
【问题描述】:
大家好,stackoverflow,
我编写了一个 C 程序,它简单地使用 system("/bin/bash") 调用 bash shell
如果我启用 setuid 权限位并执行程序,则调用的 shell 不会将 euid 设置为 0。这没关系,因为我们知道 bash shell 会删除权限。
但是如果我使用 sudo ln -s /bin/bash /bin/sh 将 /bin/sh 更改为指向 /bin/bash
然后使用 /bin/sh 作为参数执行系统,那么新调用的 shell 的 euid=0。
我正在开发 ubuntu 10.04
为什么会这样?
【问题讨论】:
-
您确定
/bin/sh在您点击ln -s /bin/bash /bin/sh之前还没有指向其他内容吗?也许您需要强制创建符号链接(如果命令和链接位于同一目录,则无需指定路径):ln -sf bash /bin/sh -
是的,我确定,实际上我做了一个 sudo rm /bin/sh
标签: bash symlink privileges setuid