【问题标题】:/bin/sh does not drop privileges/bin/sh 不放弃权限
【发布时间】: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


【解决方案1】:

这是一个 debian 补丁的“奇怪”特性:bash_4.2-5.diff bash as /bin/sh 与 POSIX 模式一样工作,并且 POSIX shell(如 dash)不会放弃特权(在 debian/ubuntu 中,带有 -p 的 bash 或 bash 符号链接为 /bin/sh)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多